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")
所以問題是,當用戶猜測正確的數字。驗證應該轉爲True。所以while循環將停止循環。但是當玩家猜測到正確的數字時,變量驗證不會變爲真。更改函數中的變量
驗證被認爲是本地的,除非您在全局前綴。如果你希望從一個函數中引用你的全局驗證,你需要聲明如下:函數中的'global Validation',這種方式當你改變它的值時它會持續 –
嗯。當我爲它添加全局變量時,我會在函數本身,頂部的變量聲明或while循環中執行它。它給我一個不好的語法錯誤。 – Soundwave
你的代碼中的另一個主要問題是你返回一個字符串,在設置驗證字段之前有效地打破了該函數。請參閱我的答案以獲得正確的順序('Validation = True' only than'return「...」') –