我想寫一個簡單的數字猜猜器程序。在這個特定的程序中,python猜測用戶正在想的是一個數字,而不是相反的方向。Python猜測我的號碼(反向號碼猜測)UnboundLocalError
我的代碼返回一個UnboundLoalError。
此外,這一切似乎都太長和繁瑣。我怎樣才能縮短它?
謝謝。
# Guesses a number
from random import randint
number = ""
def numberGuesser():
while True:
print "Think of a number between 1 and 50"
raw_input("Hit a key when ready")
number = randint(1,50)
answer = raw_input("Is your number: %d?. y/n> " % number)
if answer == 'y':
print "Great!"
raw_input("Hit a key to exit.")
elif answer == 'n':
greater_or_smaller()
else:
print "Please type y or n"
def greater_or_smaller():
while True:
greater_or_smaller = raw_input("Is\
your number greater or smaller than %d? g/s> " % number)
if greater_or_smaller == 'g':
number = randint(number, 50)
answer = raw_input("Is your number %d? y/n> " % number)
if answer == 'y':
print "Hooray!"
elif answer == 'n':
greater_or_smaller()
elif greater_or_smaller == 's':
number = randint(1, number)
answer = raw_input("Is your number %d? y/n> " % number)
if answer == 'y':
print "Hooray!"
elif answer == 'n':
greater_or_smaller()
numberGuesser()
注意python給你帶來的錯誤。你會看到一行出現的地方,並根據錯誤的名稱,你可以很快找出實際的錯誤。此外,如果您傳遞'number'作爲參數並擺脫全局變量會更好。 –
@millimoose正如我所說,簡短的回答:)我寫了另一個評論與擴大的答案。我想我現在會刪除我的第一條評論。 –
另外:你正在一個名字相同的函數中使用名爲'greater_or_smaller'的變量。這通常是一個壞主意。在你的情況下,因爲你遞歸地調用了函數,所以這是個不錯的主意(即一個bug) - 你會嘗試「調用」你讀入的'str'。 – millimoose