gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:30:25 26 4
gpt4 key购买 nike

我正在尝试使用随机导入在 python 中制作一个小猜谜游戏。

问题是,我希望用户能够输入“退出”来结束,但我还需要将他们的数据与随机数进行比较。我现在的想法是,如何向用户询问一个 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.")

最佳答案

代码的问题在于,如果您想将值与 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

那个继续意味着跳过循环体的其余部分并返回到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 的最简洁方法是尝试将其解释为 int。与 isdigit 不同,如果它们在数字之前或之后包含额外的空格,或者如果它们使用下划线来分隔数字组,或者如果它们使用来自其他数字的 Unicode 数字,那么这将执行正确的操作语言。为此:

try:
guess = int(guess)
except ValueError:
guess = input("Please enter valid number: ")
continue
if guess > num:
# etc.

关于python - 如何使用 string 和 int 验证 python 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50013613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com