from random import randint
count = 0
Validation = False
def generateNumber():
Number = randint(1, 10)
return Number
def checkNumber(Guess):
Number = generateNumber()
if int(Guess) == Number and count < 1:
return "First time right! Genius?"
Validation = True
elif int(Guess) == Number and count == 2:
return "Correct. Second time, nice!"
Validation = True
elif int(Guess) == Number and count < 4:
return "Correct. Good job."
Validation = True
elif int(Guess) == Number and count > 3:
return "Correct. Took you long enough."
Validation = True
else:
return "Wrong! Try again "
while Validation == False:
Guess = input("Please guess a number between 1 to 10: ")
print (checkNumber(Guess))
count += 1
else:
TryAgain = input("Would you like to try again? y/n \n")
Also das Problem ist, dass wenn der Benutzer die richtige Zahl rät. Die Validierung sollte auf "Wahr" gesetzt werden. Also hört die While-Schleife auf zu loopen. Die Validierung der Variablen wird jedoch nicht zu True, wenn der Spieler die richtige Zahl errät.Variable in einer Funktion ändern
Die Validierung wird als lokal betrachtet, es sei denn, Sie geben ihr einen globalen Präfix. Wenn Sie Ihre globale Validierung von einer Funktion referenzieren möchten, müssen Sie dies so deklarieren: 'Globale Validierung' in der Funktion, so wird der Wert bei der Änderung des Wertes persistent –
Hmm. wenn ich es global hinzufüge, ob ich es in der Funktion selbst mache, in der Variablendeklaration oben oder in der while-Schleife. Es gibt mir einen schlechten Syntaxfehler. – Soundwave
Ein weiteres schwerwiegendes Problem in Ihrem Code besteht darin, dass Sie eine Zeichenfolge zurückgeben, die die Funktion effektiv unterbricht, bevor Sie das Feld "Überprüfung" festlegen. Bitte beachten Sie meine Antwort für die richtige Reihenfolge ('Validierung = True' nur als' return "..." ') –