我为简单的数学编写了下面的代码。据我所知它应该完美。但我收到字符串格式的错误。 shell显示消息“NameError:name'suject'未定义”。但是变量已经在那里定义了。
import random
import re
#select a random number
myNumber = random.randint(1, 20)
#loop for the game
while True:
try:
guess = int(input("Guess a number and put here : "))
except ValueError:
print("not a number {}".format(guess))
else:
if not guess in range(1, 20):
print('Put only number between 1 - 20')
continue
elif guess == myNumber:
print("that's right")
break
else:
print("Bummer!")
答案 0 :(得分:1)
guess
子句中没有引发错误时,才会定义 try
。因此,当引发错误 时,将永远不会定义guess
,并且Python将引发NameError
。您需要在guess
块之前为try/except
提供默认值。或者,正如@John Gordon所提到的,您可以在for循环之外获取用户输入,并且只尝试在try
子句内重新定义为整数。