如何解决python字符串格式?

如何解决python字符串格式?,python,python-3.5,Python,Python 3.5,我为一个简单的数学编写了下面的代码。据我所知,它应该工作得很好。但是字符串格式有一个错误。显示消息“NameError:name'guess'未定义”的shell。但是变量已经在那里定义了 import random import re #select a random number myNumber = random.randint(1, 20) #loop for the game while True: try: guess = int(input("Gues

我为一个简单的数学编写了下面的代码。据我所知,它应该工作得很好。但是字符串格式有一个错误。显示消息“NameError:name'guess'未定义”的shell。但是变量已经在那里定义了

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!")

只有在
try
子句中没有出现错误时,才会定义
guess
。因此,当引发错误时,
guess
将永远不会被定义,Python将引发
namererror
。在
try/except
块之前,需要给
guess
一个默认值。或者,正如@John Gordon所提到的,您可以在for循环之外获取用户输入,并且只尝试在
try
子句中重新定义为整数。

如果用户输入的不是数字的内容,
int()
将抛出异常而不是返回值,因此,当您试图在
except
子句中打印其值时,不会定义
guess
。或者将原始字符串输入保留为单独的值,并在except消息中打印该值。@JohnGordon是的,这也会起作用。如果OP不想将
guess
预定义为整数,那么这可能是一个更好的选择。