只是想知道,我该如何解决这个问题?无论我做什么,我都无法工作。由于我已经开始使用Python,我的主要问题是调用变量,我该怎么做呢?例如,在这种情况下如何修复它,或者在另一个代码中如何将变量从一个部分调用到另一个部分?
我得到了
Traceback(最近一次调用最后一次):File" C:/Users/Test.py" ;, line 12,在 猜猜!=数字:名称错误:名称'猜测'未定义
错误
作为旁注,为什么使用Global X = Global X + 1
不起作用?
import random
def main():
guessesTaken = 0
guess = 0
number = random.randint (1, 1000)
print('Guess a number from 1 to 1000. debug=',number,)
guess = float(input(' '))
Hot = number + 10
Cold = number - 10
while guess != number:
guessesTaken = guessesTaken + 1
if guess > number:
print('Too High!')
elif guess < number:
print('Your guess is too low.')
elif guess < Hot > number:
print('Your guess Hot!')
elif guess < Cold > number:
print('Your guess is Cold!.')
else:
print('Error')
while guess == number:
print('You got it!, you guessed the number in' + guessesTaken + ' guesses!')
main()
答案 0 :(得分:2)
您NameError: name 'guess' is not defined
的具体问题是因为您guess
函数中定义了main
,但失败的while循环不在该函数之内。
这个应用程序你的缩进是完全错误的。
如果您希望while guess != number:
能够正常工作,则需要将其作为main
的一部分
def main():
guessesTaken = 0
guess = 0
number = random.randint (1, 1000)
print('Guess a number from 1 to 1000. debug=',number,)
guess = float(input(' '))
Hot = number + 10
Cold = number - 10
while guess != number:
...
你也有其他的问题。在main
内,您的行会缩进5个空格(而不是PEP8 prescribed 4 spaces)。
你的while循环不会做你所希望的。如果用户在第一次尝试时没有得到正确答案,那么它将会点击您的while guess != number:
并永久循环。要解决此问题,您的输入也应该在循环中进行。第二个while循环while guess == number:
将达到相同的无限循环。为什么需要重复打印?它可以像if
答案 1 :(得分:1)
在python中,缩进确定代码块(以及范围)。
所以,在你的代码中,当你为while循环取消注释时:
def main():
guessesTaken = 0
guess = 0
number = random.randint (1, 1000)
print('Guess a number from 1 to 1000. debug=',number,)
guess = float(input(' '))
Hot = number + 10
Cold = number - 10
while guess != number: # The unindent here
guessesTaken = guessesTaken + 1
...
解释器将Cold = number - 10
视为main()的结尾。因此,你的循环不是main()的一部分,也不能访问main的本地变量(例如guess)。
我的猜测是你的意图是让while循环成为main的一部分。所以他们应该缩进匹配:
import random
def main():
guessesTaken = 0
guess = 0
number = random.randint (1, 1000)
print('Guess a number from 1 to 1000. debug=',number,)
guess = float(input(' '))
Hot = number + 10
Cold = number - 10
while guess != number:
guessesTaken = guessesTaken + 1
if guess > number:
print('Too High!')
elif guess < number:
print('Your guess is too low.')
elif guess < Hot > number:
print('Your guess Hot!')
elif guess < Cold > number:
print('Your guess is Cold!.')
else:
print('Error')
while guess == number:
print('You got it!, you guessed the number in' + guessesTaken + ' guesses!')
main()
虽然你的代码还有其他问题;它给了我一个无限循环。
答案 2 :(得分:0)
从你的代码缩进来判断,我猜这里唯一的问题是你没有缩进while循环。
python中的缩进非常重要。这是更正后的代码:
import random
def main():
guessesTaken = 0
guess = 0
number = random.randint (1, 1000)
print('Guess a number from 1 to 1000. debug=',number,)
guess = float(input(' '))
Hot = number + 10
Cold = number - 10
while guess != number:
guessesTaken = guessesTaken + 1
if guess > number:
print('Too High!')
elif guess < number:
print('Your guess is too low.')
elif guess < Hot > number:
print('Your guess Hot!')
elif guess < Cold > number:
print('Your guess is Cold!.')
else:
print('Error')
您当前的代码似乎发生的事情是,即使在调用main()函数之前,也会调用while循环。因此,'guess'和'number'在这种情况下都不存在。