Seite 1 von 1

Fehler bei einem GuessNumber Spiel

Verfasst: Samstag 1. Dezember 2018, 23:23
von PythonCoder9999
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

Re: Fehler bei einem GuessNumber Spiel

Verfasst: Sonntag 2. Dezember 2018, 00:04
von __deets__
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.

Re: Fehler bei einem GuessNumber Spiel

Verfasst: Sonntag 2. Dezember 2018, 19:52
von Schlange
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.

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()

Re: Fehler bei einem GuessNumber Spiel

Verfasst: Sonntag 2. Dezember 2018, 20:22
von __deets__
@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.

Re: Fehler bei einem GuessNumber Spiel

Verfasst: Montag 3. Dezember 2018, 06:34
von Sirius3
@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.