Findest Du es gut, Deine potentiell Helfenden anzuschreien?
Spiel ist keine Klasse. Eine Klasse hat einen Zustand und benutzt self um auf diesen Zustand zuzugreifen. Du hast aber nur ganz normale Funktionen in einen class-Block geschrieben.
`Zahlen_g` ist nirgends definiert, aber das hast Du ja schon selbst geschrieben.
Was denkst Du, was passieren soll? Du erzeugst eine Exemplar der Nicht-Klasse Spiel und tust dann nichts damit.
"N" "n" ist eine seltsame Art "Nn" zu schreiben.
`abfrage` ruft auswertung mit unterschiedlichen Zahlen auf, und liefert diese Zahl auch zurück, wer fängt was mit der Zahl an? Dann ruft `auswertung` auch wieder `abfrage` auf. Solche Rekursiven Verschachtelungen macht man nicht, weil damit der Programmfluß undurchsichtig wird.
Dieses "angabe gibt es nicht" funktioniert auch nicht, weil es auch bei wert == 1 oder 2 aufgerufen wird, da fehlen die elif.
Fang am besten einfach an, und lass das mit den Klassen noch, bevor Du nicht gut mit Funktionen arbeiten kannst.
Erster Schritt ist, die Klasse loswerden, und die Rekursion, indem Du gleich in `abfrage` auf Gültigkeit prüfst:
Code: Alles auswählen
def abfrage():
print("(N)eues Spiel \n""(G)eld zeigen \n""(E)nde")
while True:
eingabe_user = input("Was möchtes du machen>>>")
if eingabe_user in "Nn":
auswertung(1)
break
elif eingabe_user in "Gg":
auswertung(2)
break
elif eingabe_user in "Ee":
auswertung(3)
break
else:
print("die angabe gibt es nicht")
def auswertung(wert):
if wert == 1:
Zahlen_g()
f =1
elif wert == 2:
print("hi")
#geld klasse noch nicht definiert
elif wert == 3:
print("Tüss")
else:
assert False, "dieser Fall kann nicht auftreten"
abfrage()
Warum wandelst Du das Zeichen in eine Zahl um? Das macht die Sache ja nicht aussagekräftiger. Eine Funktion sollte genau eine Sache machen, also nur die Eingabe abfragen und nicht gleich auch auswerten, das passiert erst im Hauptprogramm.
Code: Alles auswählen
def abfrage():
print("(N)eues Spiel \n""(G)eld zeigen \n""(E)nde")
while True:
eingabe_user = input("Was möchtes du machen>>>").lower()
if eingabe_user in ('n', 'g', 'e'):
break
print("die angabe gibt es nicht")
return eingabe_user
def auswertung(wert):
if wert == "n":
zahlen_g()
elif wert == "g":
print("hi")
#geld klasse noch nicht definiert
elif wert == "e":
print("Tüss")
else:
assert False, "dieser Fall kann nicht auftreten"
eingabe_user = abfrage()
auswertung(eingabe_user)
Das ist schonmal ein Grundgerüst, mit dem man weiter arbeiten kann.