我想写一个简单的数字猜猜器程序。在这个特定的程序中,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