Seite 1 von 1

Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Samstag 3. Juni 2023, 19:05
von Superoof123
Hallöchen! Ich könnte ein bischen hilfe mit einem script gebrauchen, welches einen bug hat. Allerdings kann ich diesen Nicht finden :cry: Bitte helft mir!

Dies ist der code:

Code: Alles auswählen

from winsound import *
from time import sleep

def rebootpeep():
	winsound.Beep(1300, 250)

def checkstats(type):
	if type == "audio":
		system = databankstr[0]
	elif type == "camera":
		system = databankstr[1]
	elif type == "ventilation":
		system = databankstr[2]
	if int(system) == 1:
		return "okay"
	else:
		return "error"

databank = open(r"fnafdatenbank.txt", "r+")

databankstr =[]
for line in databank:
	databankstr.append(line)

def GUI():
	print("""System restart
menu>>>""")
	print("")
	print("audio devices " + checkstats("audio"))
	print("camera system " + checkstats("camera"))
	print("ventilation " + checkstats("ventilation"))
	print("")
	print("""reboot all: type R
exit: type e""")
	response = input(">>")
	return response.capitalize


while True:
	answer = GUI()
	if answer == "R":
		print("rebooting. ")
		rebootbeep()
		sleep(3)
		print("rebooting.. [II]")
		rebootbeep()
		sleep(3)
		print("rebooting...[III]")
		rebootbeep()
		sleep(3)
		print("rebooting. [IIII]")
		rebootbeep()
		sleep(3)
		print("rebooting.. [IIIII]")
		rebootbeep()
		sleep(3)
		print("rebooting...[IIIIII]")
		rebootbeep()
		sleep(3)
		print("rebooting. [IIIIIII]")
		rebootbeep()
		sleep(3)
		print("rebooting.. [IIIIIIII]")
		rebootbeep()
		sleep(3)
		print("rebooting...[IIIIIIIII]")
		rebootbeep()
		sleep(3)
		print("rebooting. [IIIIIIIIII]")
		rebootbeep()
		print("system sucessfully rebooted>>>")
	else:
		pass
und das ist die Fehlermeldung, die ich dazu bekomme:

Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Meike\Desktop\fnaf 3 maintance", line 40, in <module>
answer = GUI()
File "C:\Dokumente und Einstellungen\Meike\Desktop\fnaf 3 maintance", line 35, in GUI
response = input(">>")
File "<string>", line 1, in <module>
NameError: name 'r' is not defined

btw ich arbeite mit python 2.5 weil ich einen alten samsung mit windows xp programmiere
ausserdem arbeitet diese programm mit einer .txt datei namens fnafdatenbank.txt
wo in den ersten drei zeilen jeweils eine null steht
bitte helft mir!!! :cry: :cry: :cry:

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Samstag 3. Juni 2023, 19:40
von sparrow
Python 2.5 ist in jeglicher Hinsicht tot. Das ist End-Of-Life.
Windows XP ebenfalls.
Beides seit 10 Jahren.

Benutze ein aktuelles System.
Wirklich.
Python 2.x ist komplett Out-Of-Life und es unterscheidet sich in wichtigen Dingen von Python 3.x, weil hier willentlich Sachen geändert wurden.
Es gibt Situationen, in denen ich vestehe, dass man ein 2.x verwendet, zum Beispiel weil es in andere Software eingebettet ist und man daher keine Wahl hat. Ein veraltetes System ist keine in meinen Augen keine solche Situation. Selbst auf alter Hardware kann man andere Betriebssysteme als Windows XP installieren. Oder eine neuere Python Version.

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Samstag 3. Juni 2023, 19:53
von Superoof123
sparrow hat geschrieben: Samstag 3. Juni 2023, 19:40 Python 2.5 ist in jeglicher Hinsicht tot. Das ist End-Of-Life.
Windows XP ebenfalls.
Beides seit 10 Jahren.

Benutze ein aktuelles System.
Wirklich.
Python 2.x ist komplett Out-Of-Life und es unterscheidet sich in wichtigen Dingen von Python 3.x, weil hier willentlich Sachen geändert wurden.
Es gibt Situationen, in denen ich vestehe, dass man ein 2.x verwendet, zum Beispiel weil es in andere Software eingebettet ist und man daher keine Wahl hat. Ein veraltetes System ist keine in meinen Augen keine solche Situation. Selbst auf alter Hardware kann man andere Betriebssysteme als Windows XP installieren. Oder eine neuere Python Version.
ich habe tatsächlich schon einmal versucht das betriebsystem upzugraden, allerdings hat es leider nicht geklappt. ausserdem bist du von meiner eigentlichen frage vollkommen abgekommen

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Samstag 3. Juni 2023, 20:04
von sparrow
Das ist meine Antwort auf deine Frage.
Benutze eine aktuelle Python Version. Mit der funktioniert dein Code vermutlich. Mit Python 2.x auf jeden Fall nicht.

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Samstag 3. Juni 2023, 20:07
von Superoof123
sparrow hat geschrieben: Samstag 3. Juni 2023, 20:04 Das ist meine Antwort auf deine Frage.
Benutze eine aktuelle Python Version. Mit der funktioniert dein Code vermutlich. Mit Python 2.x auf jeden Fall nicht.
ich kann aufgrung meines betriebsystems zwar nichts neueres installieren aber ist auch egal

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Samstag 3. Juni 2023, 20:15
von sparrow
Laut Python Webseite würde 3.4 noch unter Windows XP funktionieren.
Das ist zwar auch EOL, würde aber zumindest den Syntax unterstützen.

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Samstag 3. Juni 2023, 20:15
von __deets__
Du benutzt das falsche input. Unter python2.5 muss das raw_input sein.

Aber sparrow hat Recht: mit diesem Murks arbeitet man nicht mehr.

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Samstag 3. Juni 2023, 21:40
von Sirius3
@Superoof123: Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
*-Importe sind schlecht. Globale Variablen benutzt man nicht. Die `checkstats`-Funktion ist auch reichlich kompliziert, normalerweise würde man die Daten schon beim Einlesen in die richtige Struktur bringen. Bei einem unbekannten Typ kommt es zum UnboundLocalError, das sollte zu einer sinnvolleren Exception führen.
Der Filemodus "r+" ist eigentlich nie sinnvoll, vor allem, weil Du gar nichts schreiben willst. Dateien die man öffnet, sollte man auch wieder schließen. Seit 2.5 kann man dafür das with-Statement benutzen.
`print` ist in Python 2.5 keine Funktion, sollte also auch nicht wie eine geschrieben werden.
`capitalize` sollte man auch aufrufen.
Statt Code vielfach zu kopieren, benutzt man eine Schleife.
Wenn im else-Zweig eh nichts drinsteht, dann kann man ihn auch weglassen.

Code: Alles auswählen

from __future__ import with_statement
import winsound
from time import sleep

def rebootpeep():
    winsound.Beep(1300, 250)

def read_database(filename):
    with open(filename) as lines:
        result = {}
        for type, line in zip(["audio", "camera", "ventilation"], lines):
            result[type] = int(line)
    return result

def checkstats(stat):
    return "okay" if stat else "error"

def gui(stats):
    print "System restart"
    print "menu>>>"
    print
    print "audio devices " + checkstats(stats["audio"])
    print "camera system " + checkstats(stats["camera"])
    print "ventilation " + checkstats(stats["ventilation"])
    print
    print "reboot all: type R"
    print "exit: type e"
    response = raw_input(">>")
    return response.capitalize()

def main():
    stats = read_database("fnafdatenbank.txt")
    while True:
        answer = gui(stats)
        if answer == "R":
            print "rebooting. "
            for i in range(2, 11):
                rebootbeep()
                sleep(3)
                print "rebooting.%-2s[%s]" % ('.' * (i % 3), 'I' * i)
            rebootbeep()
            print "system sucessfully rebooted>>>"

if __name__ == "__main__":
    main()

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Samstag 3. Juni 2023, 21:58
von __blackjack__
@Superoof123: Da sind noch mehr Fehler drin, was darauf hindeutet, dass Du das nicht *entwickelt* hast, sondern grossteils einfach runtergeschrieben ohne zwischendurch mal ausprobiert zu haben ob das überhaupt funktioniert.

Sternchen-Importe sind Böse™. Das macht Programme unnötig unübersichtlicher und fehleranfälliger und es besteht die Gefahr von Namenskollisionen. Und in Deinem Fall funktioniert das auch gar nicht, denn *im* `winsound`-Modul gibt es natürlich nicht das Modul selbst noch mal unter dem Namen, denn `Beep()` versuchst Du ja über den Modulnamen anzusprechen.

Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst. Besonders unübersichtlich ist es auf Modulebene das Hauptprogramm und Funktionsdefinitionen zu vermischen.

Funtkionen (und Methoden) bekommen alles was sie ausser Konstanten benötigen, als Argument(e) übergeben. `checkstats()` braucht also `databank` als Argument, und in Folge `GUI()` dann auch.

Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase). Auch bei den kleingeschriebenen Namen fehlen bei Dir manchmalUnterstrichezwischendenWorten. Das ist schlecht zu lesen.

Funktionen (und Methoden) werden üblicherweise nach der Tatigkeit benannt, die sie durchführen. Damit der Leser weiss was sie tun und um sie besser von eher passiven Werten unterscheiden zu können.

Entscheide Dich für eine Sprache bei den Namen. Am besten Englisch, weil auch die Schlüsselworte der Programmiersprache und die Namen aus Modulen und Bibliotheken in Englisch sind. Am schlimmsten ist so Denglisch wie `databank`. Entweder `database` oder `datenbank`. Oder einfach `file` oder `lines`, denn dafür steht dieses Objekt.

Dateimodi mit "+" sind bei Textdateien so gut wie immer falsch. Einfach nur "r". Mehr als lesen wird hier ja auch gar nicht gemacht.

Beim öffnen von Textdateien sollte man immer die Kodierung mit angeben in der die Datei ist. Hier reicht ASCII, denn es scheinen ja nur Zahlen drin zu sein.

Dateien die man öffnet, sollte man auch wieder schliessen. Am besten verwendet man dazu die ``with``-Anweisung.

`databankstr` ist auch falsch als Name, falls das `str` für Zeichenkette stehen sollte. Grunddatentypen haben in Namen nichts zu suchen, denn die ändert man im Laufe der Entwicklung gerne mal zu was spezifischerem oder selbst programmierten, und dann hat man überall falsche Namen oder muss alle betroffenen Namen suchen und ändern. Und da später immer wieder der Inhalt der Zeilen in ganze Zahlen umgewandelt werden, sollte man das sinnvollerweise *einmal* gleich beim einlesen erledigen.

Statt umständlich eine Schleife zu schreiben, welche die Zeilen einzeln an eine anfangs leere Liste anhängt, kann man auch einfach `list()` aufrufen. Das sammelt alles aus dem übergebenen iterierbaren Objekt in einer neuen Liste und gibt die zurück.

Zwischenstand:

Code: Alles auswählen

    with open("fnafdatenbank.txt", "r", encoding="ascii") as lines:
        stats = list(map(int, lines))
Da später aber über Namen/Zeichenketten auf die Werte zugegriffen werden soll, ist eine Liste die falsche Datenstruktur. Abbildungen von Schlüsseln auf Werte werden in einem Wörterbuch (`dict`) gespeichert.

Um eine Leerzeile ”auszugeben” braucht man `print()` kein Argument zu übergeben.

`capitalize()` ist für *ein* Zeichen nicht so wirklich sinnvoll. Da reicht `upper()` völlig aus. Und man muss die Methode auch *aufrufen*. Im Moment gibt `GUI()` die *Methode* zurück, statt dem Ergebnis des Aufrufs.

`type` ist der Name einer eingebauten Funktion, den sollte man nicht für etwas anderes verwenden.

Es wird versucht eine Funktion `rebootbeep()` aufzurufen die es nicht gibt. Ich nehme mal an `rebootpeep()` sollte eigentlich *so* heissen.

Man kopiert keinen Code immer wieder und passt ihn leicht an. Dafür gibt es Funktionen und/oder Schleifen.

``else: pass`` macht keinen Sinn.

Zwischenstand:

Code: Alles auswählen

#!/usr/bin/env python3
import winsound
from time import sleep

SYSTEM_NAMES = ["audio devices", "camera system", "ventilation"]


def reboot_beep():
    winsound.Beep(1300, 250)


def check_status(system_name_to_status, system_name):
    return "okay" if system_name_to_status[system_name] == 1 else "error"


def show_menu(system_name_to_status):
    print("System restart")
    print("menu>>>")
    print()
    for name in system_name_to_status.keys():
        print(name, check_status(system_name_to_status, name))
    print()
    print("reboot all: type R")
    print("exit: type E")

    return input(">>").upper()


def main():
    with open("fnafdatenbank.txt", "r", encoding="ascii") as lines:
        system_name_to_status = dict(zip(SYSTEM_NAMES, map(int, lines)))

    while True:
        answer = show_menu(system_name_to_status)
        if answer == "R":
            for i in range(10):
                print(
                    "rebooting{:<3}[{:<10}]".format("." * (i % 3 + 1), "I" * i),
                    end="\r",
                    flush=True,
                )
                reboot_beep()
                sleep(1)
            print("system sucessfully rebooted>>>")
        
        elif answer == "E":
            return


if __name__ == "__main__":
    main()

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Donnerstag 8. Juni 2023, 14:22
von Superoof123
Sirius3 hat geschrieben: Samstag 3. Juni 2023, 21:40 @Superoof123: Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
*-Importe sind schlecht. Globale Variablen benutzt man nicht. Die `checkstats`-Funktion ist auch reichlich kompliziert, normalerweise würde man die Daten schon beim Einlesen in die richtige Struktur bringen. Bei einem unbekannten Typ kommt es zum UnboundLocalError, das sollte zu einer sinnvolleren Exception führen.
Der Filemodus "r+" ist eigentlich nie sinnvoll, vor allem, weil Du gar nichts schreiben willst. Dateien die man öffnet, sollte man auch wieder schließen. Seit 2.5 kann man dafür das with-Statement benutzen.
`print` ist in Python 2.5 keine Funktion, sollte also auch nicht wie eine geschrieben werden.
`capitalize` sollte man auch aufrufen.
Statt Code vielfach zu kopieren, benutzt man eine Schleife.
Wenn im else-Zweig eh nichts drinsteht, dann kann man ihn auch weglassen.

Code: Alles auswählen

from __future__ import with_statement
import winsound
from time import sleep

def rebootpeep():
    winsound.Beep(1300, 250)

def read_database(filename):
    with open(filename) as lines:
        result = {}
        for type, line in zip(["audio", "camera", "ventilation"], lines):
            result[type] = int(line)
    return result

def checkstats(stat):
    return "okay" if stat else "error"

def gui(stats):
    print "System restart"
    print "menu>>>"
    print
    print "audio devices " + checkstats(stats["audio"])
    print "camera system " + checkstats(stats["camera"])
    print "ventilation " + checkstats(stats["ventilation"])
    print
    print "reboot all: type R"
    print "exit: type e"
    response = raw_input(">>")
    return response.capitalize()

def main():
    stats = read_database("fnafdatenbank.txt")
    while True:
        answer = gui(stats)
        if answer == "R":
            print "rebooting. "
            for i in range(2, 11):
                rebootbeep()
                sleep(3)
                print "rebooting.%-2s[%s]" % ('.' * (i % 3), 'I' * i)
            rebootbeep()
            print "system sucessfully rebooted>>>"

if __name__ == "__main__":
    main()
vielen dank für das gefixte programm!. Naja, dieses programm war auch nicht ganz fertig, da er nach dem code in main() die ersten drei zeilen in fnafdatenbank.txt zu jeweils einer eins umschreiben soll. Aber trotzdem: vielen Dank :mrgreen: :mrgreen: :mrgreen:

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Donnerstag 8. Juni 2023, 14:49
von Superoof123
__blackjack__ hat geschrieben: Samstag 3. Juni 2023, 21:58 @Superoof123: Da sind noch mehr Fehler drin, was darauf hindeutet, dass Du das nicht *entwickelt* hast, sondern grossteils einfach runtergeschrieben ohne zwischendurch mal ausprobiert zu haben ob das überhaupt funktioniert.

Sternchen-Importe sind Böse™. Das macht Programme unnötig unübersichtlicher und fehleranfälliger und es besteht die Gefahr von Namenskollisionen. Und in Deinem Fall funktioniert das auch gar nicht, denn *im* `winsound`-Modul gibt es natürlich nicht das Modul selbst noch mal unter dem Namen, denn `Beep()` versuchst Du ja über den Modulnamen anzusprechen.

Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst. Besonders unübersichtlich ist es auf Modulebene das Hauptprogramm und Funktionsdefinitionen zu vermischen.

Funtkionen (und Methoden) bekommen alles was sie ausser Konstanten benötigen, als Argument(e) übergeben. `checkstats()` braucht also `databank` als Argument, und in Folge `GUI()` dann auch.

Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase). Auch bei den kleingeschriebenen Namen fehlen bei Dir manchmalUnterstrichezwischendenWorten. Das ist schlecht zu lesen.

Funktionen (und Methoden) werden üblicherweise nach der Tatigkeit benannt, die sie durchführen. Damit der Leser weiss was sie tun und um sie besser von eher passiven Werten unterscheiden zu können.

Entscheide Dich für eine Sprache bei den Namen. Am besten Englisch, weil auch die Schlüsselworte der Programmiersprache und die Namen aus Modulen und Bibliotheken in Englisch sind. Am schlimmsten ist so Denglisch wie `databank`. Entweder `database` oder `datenbank`. Oder einfach `file` oder `lines`, denn dafür steht dieses Objekt.

Dateimodi mit "+" sind bei Textdateien so gut wie immer falsch. Einfach nur "r". Mehr als lesen wird hier ja auch gar nicht gemacht.

Beim öffnen von Textdateien sollte man immer die Kodierung mit angeben in der die Datei ist. Hier reicht ASCII, denn es scheinen ja nur Zahlen drin zu sein.

Dateien die man öffnet, sollte man auch wieder schliessen. Am besten verwendet man dazu die ``with``-Anweisung.

`databankstr` ist auch falsch als Name, falls das `str` für Zeichenkette stehen sollte. Grunddatentypen haben in Namen nichts zu suchen, denn die ändert man im Laufe der Entwicklung gerne mal zu was spezifischerem oder selbst programmierten, und dann hat man überall falsche Namen oder muss alle betroffenen Namen suchen und ändern. Und da später immer wieder der Inhalt der Zeilen in ganze Zahlen umgewandelt werden, sollte man das sinnvollerweise *einmal* gleich beim einlesen erledigen.

Statt umständlich eine Schleife zu schreiben, welche die Zeilen einzeln an eine anfangs leere Liste anhängt, kann man auch einfach `list()` aufrufen. Das sammelt alles aus dem übergebenen iterierbaren Objekt in einer neuen Liste und gibt die zurück.

Zwischenstand:

Code: Alles auswählen

    with open("fnafdatenbank.txt", "r", encoding="ascii") as lines:
        stats = list(map(int, lines))
Da später aber über Namen/Zeichenketten auf die Werte zugegriffen werden soll, ist eine Liste die falsche Datenstruktur. Abbildungen von Schlüsseln auf Werte werden in einem Wörterbuch (`dict`) gespeichert.

Um eine Leerzeile ”auszugeben” braucht man `print()` kein Argument zu übergeben.

`capitalize()` ist für *ein* Zeichen nicht so wirklich sinnvoll. Da reicht `upper()` völlig aus. Und man muss die Methode auch *aufrufen*. Im Moment gibt `GUI()` die *Methode* zurück, statt dem Ergebnis des Aufrufs.

`type` ist der Name einer eingebauten Funktion, den sollte man nicht für etwas anderes verwenden.

Es wird versucht eine Funktion `rebootbeep()` aufzurufen die es nicht gibt. Ich nehme mal an `rebootpeep()` sollte eigentlich *so* heissen.

Man kopiert keinen Code immer wieder und passt ihn leicht an. Dafür gibt es Funktionen und/oder Schleifen.

``else: pass`` macht keinen Sinn.

Zwischenstand:

Code: Alles auswählen

#!/usr/bin/env python3
import winsound
from time import sleep

SYSTEM_NAMES = ["audio devices", "camera system", "ventilation"]


def reboot_beep():
    winsound.Beep(1300, 250)


def check_status(system_name_to_status, system_name):
    return "okay" if system_name_to_status[system_name] == 1 else "error"


def show_menu(system_name_to_status):
    print("System restart")
    print("menu>>>")
    print()
    for name in system_name_to_status.keys():
        print(name, check_status(system_name_to_status, name))
    print()
    print("reboot all: type R")
    print("exit: type E")

    return input(">>").upper()


def main():
    with open("fnafdatenbank.txt", "r", encoding="ascii") as lines:
        system_name_to_status = dict(zip(SYSTEM_NAMES, map(int, lines)))

    while True:
        answer = show_menu(system_name_to_status)
        if answer == "R":
            for i in range(10):
                print(
                    "rebooting{:<3}[{:<10}]".format("." * (i % 3 + 1), "I" * i),
                    end="\r",
                    flush=True,
                )
                reboot_beep()
                sleep(1)
            print("system sucessfully rebooted>>>")
        
        elif answer == "E":
            return


if __name__ == "__main__":
    main()
deine annahme dass ich das grösstenteils heruntergeschrieben habe, ist teilweise richtig :? .
ich habe ein paar bücher zu hilfe genommen, wo zum beispiel drinstand, wie ich mit txt dateinen umgehe (und noch andere sachen.
ABER:

-ich hatte keine vorlage bezüglich des kompletten codes (d.h. ich habe nicht stumpf abgeschrieben)

-den grossteil der struktur habe ich selbst geschrieben

btw: bei der gestaltung des progammes habe ich mich von einem videospiel namens "five nights at freddy's 4" inspirieren lassen, weil dort gibt es ein sogennantes "maintance panel" welches ich nachempfunden habe
Bild

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Donnerstag 8. Juni 2023, 14:52
von __blackjack__
Du musst nicht immer den Beitrag komplett zitieren. Der steht doch vorher schon im Thema, man muss nur hoch scrollen. 🙂

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Donnerstag 8. Juni 2023, 14:58
von Superoof123
__blackjack__ hat geschrieben: Donnerstag 8. Juni 2023, 14:52 Du musst nicht immer den Beitrag komplett zitieren. Der steht doch vorher schon im Thema, man muss nur hoch scrollen. 🙂
das macht er immer automatisch und ich habe nichts dagegen, dass er das macht, also lasse ich es so wie es ist. 8)

Re: Bitte helft mir dieses programm funktioniert nicht!

Verfasst: Donnerstag 8. Juni 2023, 15:05
von __deets__
Das ist Quatsch. Du drueckst dafuer auf einen Knopf. Das kannst du also auch wunderbar sein lassen.

Und Hinweise auf Forengepflogenheiten kann man natuerlich geflissentlich ignorieren. So wie andere auch deine Beitraege ignorieren koennen. Musste dir halt ueberlegen, warum du hier eigentlich postest. Wegen der tollen Zitatfunktion, oder weil du dir Hilfe erhoffst 🤷‍♂️