这是我的游戏概念,计算机随机生成一个 1-100 的数字,玩家必须猜测这个数字。如果他们猜测的数字更高或更低,计算机会告诉他们。
我添加了一些代码来确保用户输入的猜测是一个数字,但出于某种原因,它只对他们的第一次猜测有效。
import random
x = random.randint(1, 100)
guess = input("Guess the number")
while guess.isnumeric() == True:
if x > int(guess):
print("Too low, guess again")
guess = input("Guess the number")
if x < int(guess):
print("Too high, guess again")
guess = input("Guess the number")
if x == int(guess):
print ("That is correct!")
break
if guess.isnumeric() == False:
print("Please enter a valid number")
guess = input("Guess the number")
我真不知道还能怎么解释。但是例如,如果我第一次猜测数字 20,它会根据随机生成的数字输出太高或太低,但在那之后,如果我输入一堆随机字母,它会给我一个错误,即猜测无法与随机生成的数字进行比较。
请您参考如下方法:
我已经为您修复了代码。试试这个:
import random
x = random.randint(1, 100)
while True:
try:
guess = int(raw_input("Guess the number: "))
except ValueError:
print("Not a valid number, try again!")
continue
if guess < x:
print("Too low, guess again")
elif guess > x:
print("Too high, guess again")
elif x == guess:
print ("That is correct!")
break
您不需要在每次猜测后提示用户输入,这就是第一个输入提示的用途。因为我们指定了 while True,所以用户每次都会收到输入数字的提示,除非他们输入了正确的数字,在这种情况下,我们打破无限循环.
此外,我们可以将输入语句放在 try block 中,因为我们就在那里将输入转换为整数。如果用户输入一个字符串,如果程序试图将其转换为整数,则程序会失败,但是如果我们 except ValueError: 然后 continue,我们将警告用户提示他们的输入无效,然后再次提示他们输入。
