Hey Leute,
ich habe ein guessnumber spiel programmiert und bekommen einen Fehler:
Anzahl der Versuche: g
Traceback (most recent call last):
File "C:/Users/fabia/iCloudDrive/Python/GuessANumber/main.py", line 44, in <module>
spielen()
File "C:/Users/fabia/iCloudDrive/Python/GuessANumber/main.py", line 7, in spielen
anzahl = int(input("Anzahl der Versuche: "))
ValueError: invalid literal for int() with base 10: 'g'
Hier ist der Code:
from random import randint
def spielen():
global anzahl, randomNumber, guessNumber
anzahl = int(input("Anzahl der Versuche: "))
if type(anzahl) == int:
randomNumber = randint(1,10)
guessNumber = int(input("Welche Nummber raten Sie: "))
if type(guessNumber) == int:
if randomNumber == guessNumber:
print("Wow, herzlichen Glückwunsch")
else:
print("Schade nächtes mal")
else:
print("Bitte geben sie eine Zahl ein!!")
restart()
else:
print("Bitte geben sie eine Zahl ein!!")
restart()
def restart():
spielen()
spielen()
Nur zu Info:
-anzahl habe ich noch nicht benutzt (nur am start, hat aber noch keine funktion)
-ich möchte, dass wenn die Anzahl der Spiele abgefragt wird die Schleife von Vorne abläuft, sobald dort kein in steht
Danke für eure Hilfe,
PythonCoder9999
Fehler bei einem GuessNumber Spiel
Bitte benutz die Code-Tags aus dem vollständigen Editor um deinen Code vernünftig darzustellen. So ist er nicht verständlich, weil die Einrückungen verloren gehen.
Und zu deinem Problem: wenn du “g” eingibst, weiß Python halt nicht, wie es daraus eine Zahl machen soll.
Und zu deinem Problem: wenn du “g” eingibst, weiß Python halt nicht, wie es daraus eine Zahl machen soll.
Hall PythonCoder9999,
ich habe deinen Code mal ein wenig abgeänder und bei mir funktioniert er jetzt.
Ich hoffe es ist jetzt so wie du es woltest.
ich habe deinen Code mal ein wenig abgeänder und bei mir funktioniert er jetzt.
Ich hoffe es ist jetzt so wie du es woltest.
Code: Alles auswählen
from random import randint
def vorarbeit():
try:
anzahl = int(input("Anzahl der Versuche: "))
spielen(anzahl)
except:
print('ungültiger Eingabewert!')
vorarbeit()
def spielen(anzahl):
for durchgang in range(0, anzahl):
randomNumber = randint(1,10)
try:
guessNumber = int(input("Welche Nummber raten Sie: "))
if randomNumber == guessNumber:
print("Wow, herzlichen Glückwunsch")
else:
print("Schade nächtes mal")
except:
print("Bitte geben sie eine Zahl ein!!")
vorarbeit()
@Schlange schon besser, aber deine Lösung zählt fehleingaben als Versuche. Und die Rekursion in Vorarbeit ist zwar praktisch irrelevant weil wohl niemand dieses Spiel so lange spielt wie das Rekursionslimit. Aber damit benutzt du trotzdem das falsche Mittel. Einfaches while genügt.
@PythonCoder9999: vergiss gleich wieder, dass es soetwas wie `global` gibt. Alles was eine Funktion braucht, bekommt sie per Argumente, Ergebnisse werden über `return` an den Aufrufer zurückgegeben.
@Schlange: Keine nakten except benutzen, das überdeckt auch viele Programmierfehler. Den try-Block so klein wie nötig machen und nur die Exceptions abfangen, die auch wirklich sinnvoll verarbeitet werden können, bei Dir also ValueError.
@Schlange: Keine nakten except benutzen, das überdeckt auch viele Programmierfehler. Den try-Block so klein wie nötig machen und nur die Exceptions abfangen, die auch wirklich sinnvoll verarbeitet werden können, bei Dir also ValueError.