如何使用string和int验证python中的数据?

时间:2018-04-25 03:27:48

标签: python validation

我正在尝试使用随机导入在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.")

1 个答案:

答案 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.