我正在尝试使用随机导入在python中制作一个小猜谜游戏。
问题是,我希望用户能够输入“exit”结束,但我还需要将他们的数据与随机数进行比较。我现在的想法是,如何向用户询问int,还要检查他们是否输入了名为exit的字符串?
代码应该让他们继续玩,如果他们猜对了。
到目前为止,我有这个。import random
num = random.randint(1, 100)
guess = input("Enter your guess: ")
while guess != "exit":
if guess.isdigit() == False:
guess = input("Please enter valid number: ")
elif guess > num:
print("Lower!")
elif guess < num:
print("Higher!")
elif guess == num:
print("YOU GOT IT!!!!!")
print("Setting new number.")
num = random.randint(1, 100)
guess = input("Enter number now: ")
print("Terminating game now.")
答案 0 :(得分:1)
代码的问题在于,如果要将值作为int进行比较,则需要调用int(guess)
,然后使用结果。
对代码的最小更改可能是:
# everything before this if stays the same
if guess.isdigit() == False:
guess = input("Please enter valid number: ")
continue
guess = int(guess)
if guess > num:
print("Lower!")
# the rest of the code is the same after here
continue
表示跳过循环体的其余部分并返回while
。
如果这令人困惑,你可以改写这样的事情:
# everything before this if stays the same
if guess.isdigit() == False:
guess = input("Please enter valid number: ")
else:
guess = int(guess)
if guess > num:
print("Lower!")
# the rest of the code is the same after here (but still indented)
或者,以一些额外的重复为代价(这会使代码更冗长,效率更低,并为您提供更多更改以解决错误):
if guess.isdigit() == False:
guess = input("Please enter valid number: ")
elif int(guess) > num:
print("Lower!")
elif int(guess) < num:
print("Higher!")
elif int(guess) == num:
print("YOU GOT IT!!!!!")
# etc.
最后,您可能需要考虑稍微更大的更改:检查字符串是否可以解释为int的最简洁方法是仅try
将其解释为int。与isdigit
不同,如果它们在数字之前或之后包含额外的空格,或者如果它们使用下划线来分隔数字组,或者如果它们使用来自其他语言的Unicode数字,那么这将是正确的。要做到这一点:
try:
guess = int(guess)
except ValueError:
guess = input("Please enter valid number: ")
continue
if guess > num:
# etc.