gpt4 book ai didi

python - 错误处理提示用户仅输入大于1的整数

转载 作者:行者123 更新时间:2023-12-03 08:06:40 27 4
gpt4 key购买 nike

我正在尝试编写一个Python函数,要求输入大于1的整数并返回或打印输入值。

例如,在运行代码时:
错误情况1:
输入大于1:1的整数
输出:请输入大于1的数字:

错误情况2:
输入大于1的整数:abc345
输出:请仅输入整数值:

如果只是为了处理错误情况1,这很容易,我们可以使用while循环。但是为了包括非整数输入的情况,我的代码总是崩溃。

这是我的功能:

    def mult_digits():
x = input("Enter an integer greater than 1: ")
while type(x) is not int:
try:
while int(x) <= 1:
x = input("Please enter a number greater than 1: ")
x = int(x)
except ValueError:
x = input("Please enter integer values only: ")
x = int(x)
print(f"Yes, you have entered {x}.")

我的代码存在的问题是int(“a”)会导致int()的字面值无效,且基数为10。由于input()函数总是返回字符串,并且我们需要检查字符串是否可以转换为整数,因此我们需要int()函数,但这正是问题所在。

我尝试了代码的许多不同变体,包括使用for循环扫描任何非整数字符的输入值,但是效率不高,仍然会崩溃。我还尝试了一个while循环,最终创建了一个无限循环。

有人可以帮忙吗?有没有更好的方法来编写此函数?我真的很感激,谢谢!

最佳答案

我认为您使事情变得太复杂了。基本上,如果有人输入一个值,则首先将其通过int(..)函数传递,如果没有错误,则检查该值是否大于1,因此我们可以编写一个while循环,该循环不断迭代直到该值有效为止,例如:

def mult_digits():
msg = "Enter an integer greater than 1: "
valid = False
while not valid:
x = input(msg)
try:
x = int(x)
except ValueError:
msg = "Please enter integer values only: "
else:
valid = x > 1
if not valid:
msg = "Enter an integer greater than 1: "
print(f"Yes, you have entered {x}.")

因此,我们只需在 while循环中执行检查(理想情况下也将其封装在方法中),并且如果 int(..)引发 Value错误,则内容仍然无效,甚至可以更改 msg。如果转换本身没有引发任何错误,我们可以检查约束,然后再次给出有用的信息。

我们一直这样做,直到 valid设置为 True,然后打印该值。

关于python - 错误处理提示用户仅输入大于1的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52439284/

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