Fehlermeldung beim Ändern einer globalen Variable innerhalb einer Funktion
Verfasst: Dienstag 13. April 2021, 11:03
Hallo, ich kenne mich noch nicht sonderlich gut mit Python aus und hätte eine Frage:
Ich versuche gerade, eine simple KI zu programmieren, die auf Eingaben reagiert. Das Programm soll aber nicht auf Eingabem antworten, die Schimpfwörter enthalten, fünf Schimpfwörter lässt das Programm noch durchgehen, beim fünften schaltet es sich ab.
Ich habe dazu eine Funktion definiert, die bei jeder Eingabe eingesetzt wird und die Eingabe auf Schimpfwörter prüft. Sie funktioniert einwandfrei, keinerlei Errors. Wenn ich nun aber ein Schimpfwort eingebe, dürfte das Programm das eigentlich erkennen, aber es gibt eine Fehlermeldung ab:
Traceback (most recent call last):
File "E:\Dokumente\Fun stuff\Python Projekte\KI.py", line 85, in <module>
schimpfwortüberprüfung(ersteEingabeWorte)
File "E:\Dokumente\Fun stuff\Python Projekte\KI.py", line 45, in schimpfwortüberprüfung
if schimpfwörter == 0:
UnboundLocalError: local variable 'schimpfwörter' referenced before assignment
Könnt ihr mir da helfen?
Hier ist der Anfang der Funktion:
#Erstellen einer Variable zur Speicherung der Anzahl der bereits gefallenen Schimpfwörter
schimpfwörter = 0
#Definition einer Funktion zur Überprüfung einer Eingabe auf Schimpfwörter
def schimpfwortüberprüfung(liste):
if "Scheiße" in liste:
if schimpfwörter == 0:
print("Das sagt man nicht! Aber diesmal lass\' ich\' s dir noch durchgehen.")
schimpfwörter += 1
return
if schimpfwörter == 1:
print("Ich muss wohl deutlicher werden. Bessere deine Ausdrucksweise!")
schimpfwörter += 1
return
if schimpfwörter == 2:
print("a-HEM!")
schimpfwörter += 1
return
if schimpfwörter == 3:
print("Wann lernst du es endlich? Diesmal fordere ich eine Entschuldigung.")
schimpfwörter += 1
return
if schimpfwörter == 4:
print("Mann, jetzt hör\' auf damit! Noch ein Schimpfwort und unser Gespräch ist beendet.")
schimpfwörter += 1
return
Und hier wende ich die Funktion an:
eingabe = input("Worüber willst du sprechen?")
#Erstellen einer Liste mit den Wörtern der Eingabe
eingabeWorte = eingabe.split(" ")
schimpfwortüberprüfung(eingabeWorte)
Ich versuche gerade, eine simple KI zu programmieren, die auf Eingaben reagiert. Das Programm soll aber nicht auf Eingabem antworten, die Schimpfwörter enthalten, fünf Schimpfwörter lässt das Programm noch durchgehen, beim fünften schaltet es sich ab.
Ich habe dazu eine Funktion definiert, die bei jeder Eingabe eingesetzt wird und die Eingabe auf Schimpfwörter prüft. Sie funktioniert einwandfrei, keinerlei Errors. Wenn ich nun aber ein Schimpfwort eingebe, dürfte das Programm das eigentlich erkennen, aber es gibt eine Fehlermeldung ab:
Traceback (most recent call last):
File "E:\Dokumente\Fun stuff\Python Projekte\KI.py", line 85, in <module>
schimpfwortüberprüfung(ersteEingabeWorte)
File "E:\Dokumente\Fun stuff\Python Projekte\KI.py", line 45, in schimpfwortüberprüfung
if schimpfwörter == 0:
UnboundLocalError: local variable 'schimpfwörter' referenced before assignment
Könnt ihr mir da helfen?
Hier ist der Anfang der Funktion:
#Erstellen einer Variable zur Speicherung der Anzahl der bereits gefallenen Schimpfwörter
schimpfwörter = 0
#Definition einer Funktion zur Überprüfung einer Eingabe auf Schimpfwörter
def schimpfwortüberprüfung(liste):
if "Scheiße" in liste:
if schimpfwörter == 0:
print("Das sagt man nicht! Aber diesmal lass\' ich\' s dir noch durchgehen.")
schimpfwörter += 1
return
if schimpfwörter == 1:
print("Ich muss wohl deutlicher werden. Bessere deine Ausdrucksweise!")
schimpfwörter += 1
return
if schimpfwörter == 2:
print("a-HEM!")
schimpfwörter += 1
return
if schimpfwörter == 3:
print("Wann lernst du es endlich? Diesmal fordere ich eine Entschuldigung.")
schimpfwörter += 1
return
if schimpfwörter == 4:
print("Mann, jetzt hör\' auf damit! Noch ein Schimpfwort und unser Gespräch ist beendet.")
schimpfwörter += 1
return
Und hier wende ich die Funktion an:
eingabe = input("Worüber willst du sprechen?")
#Erstellen einer Liste mit den Wörtern der Eingabe
eingabeWorte = eingabe.split(" ")
schimpfwortüberprüfung(eingabeWorte)