大家好,我希望每个人都过得愉快!我已经在python中编码了大约6个月了,我一直在研究这个“猜我的数字代码”,基本上计算机在1-100之间选择一个随机数,然后用户试图猜测它。我的变量guessesTaken有问题,说没有定义,但我明确地在第5行定义。
以下是代码:
import random
def Loop():
guessesTaken = 0
print('Hello! What is your name?')
myName = input()
number = random.randint(1, 100)
print('Hi, ' + myName + ', I am thinking of a number between 1 and 100.')
mod = number % 2
if mod > 0:
print("The number I am thinking of is odd.")
else:
print("The number I am thinking of is even.")
while guessesTaken < 10:
print('Take a guess.')
guess = input()
guess = int(guess)
guessesTaken = guessesTaken + 1
if guess < number:
print('Your guess is too low.')
if guess > number:
print('Your guess is too high.')
if guess == number:
break
if guess == number:
print('Good job, ' + myName + '! You guessed my number in ' + str(guessesTaken) + ' guesses!')
guessesTaken = 10
if guess != number:
print('Nope. The number I was thinking of was ' + str(number))
playagain = input('Would you like to play again')
if playagain == "yes":
Loop()
if playagain == "no":
print ( 'Goodbye :)')
Loop()
我收到错误“Traceback(最近一次调用最后一次): 文件“python”,第20行,in NameError:名称'guessesTaken'未定义“
我一直在尝试调试这个问题1-2周,但仍然没有发现代码有什么问题。 请不要直接告诉我问题是什么,请给我一些提示或线索
真诚的,你是Hardit一个6个月的python程序员
答案 0 :(得分:1)
问题在于作用域和(部分)初始化。 我建议您查看这些内容是如何工作的,它们是编程中的核心概念。
将创建变量guessesTaken&#34; inside&#34;函数循环,并且在该函数内可用 ONLY 。
一旦函数返回,范围就会改变,你的变量不再在范围内(它不能被&#34;看到&#34;)。
快速解决方法是在您要使用的同一范围内添加guessesTaken = 0
。在这种情况下,范围是整个文件。导入后添加行guessesTaken = 0
即可完成。
注意: Python不是强类型的,您可以拥有whatever = 0
,然后将whatever
分配给任何类型的对象。在其他语言中,您必须与其类型一致地分配变量。
答案 1 :(得分:0)
此错误存在,因为在您的代码中,您在函数Loop中初始化guessesTaken。但是,您没有调用该函数,因此尚未创建猜测。要使这项工作,您必须在while循环之前调用循环。或者在函数外部初始化猜测。