我怎样才能让一个简单的程序接受年龄,并且在我输入字符串而不是整数时不显示错误

how can i make a simple program to accept age and not show error when i input a string instead of an integer

提问人:kilobyte network 提问时间:7/10/2023 更新时间:7/10/2023 访问量:88

问:

我希望程序能够输入姓名和输入年龄,然后程序会根据您输入的年龄将您置于适当的年龄组,并且我希望它在年龄空间中输入字符串时不会显示错误

在这里输入图像描述,这是我尝试过的程序

python 字符串 输入 整数

评论

3赞 Metropolis 7/10/2023
不要发布指向代码屏幕截图的链接。相反,直接在您的帖子中包含相关的代码。显示示例输入,并显示在向代码提供该示例输入时得到的确切错误。理想情况下,查看 stackoverflow.com/help/how-to-ask,看看如何提出能够吸引好答案并且不会被否决或删除的问题。
0赞 Codist 7/10/2023
你有没有注意到你的代码永远不会输出“错误的输入”?

答:

0赞 Federico Galvagni 7/10/2023 #1

您要做的是检查用户输入中的字符串是否可以转换为 int。一种方法是使用 try 和 catch 语句。在执行转换时,如果它进入异常,您可以与用户沟通它需要输入有效的整数。您还可以检查该数字是否高于 0

看看另一个问题,其中提出了类似的问题

在 Python 中使用 try/except 将 String 转换为 Int

-1赞 Ξένη Γήινος 7/10/2023 #2

我修复了你的代码,这很简单:

def app():
    while True:
        name = input('What is your name: ')
        age = input('How old are you?: ')
    
        try:
            if float(age) < 18: 
                print(f'{name}, you are a child')
            else:
                print(f'{name}, you are an adult') 
            break
        
        except ValueError:
            print('Please enter your age as a number')

数字可以是整数或分数,这样我们就可以处理小数点的数字。float

一个数字只能小于 18 或不小于 18,因此请使用第二个条件检查 ()。elseelif

尝试将非数字字符串转换为浮点数 () 会引发 ,我们可以使用 try-except 块来捕获错误并验证输入。'two'ValueError

最后,我们可以使用循环来不断请求输入,并且只停止输入有效的输入。while

0赞 Codist 7/10/2023 #3

使用异常处理程序是理想的选择。此外,在这种情况下,您可能想检查年龄是否大于 0(尽管我怀疑是否有一岁的孩子会使用您的程序)。

不过:

def app() -> tuple[str, int]:
    name = input('What is your name? ')
    while True:
        age = input('What is your age? ')
        try:
            if (_age := int(age)) < 1:
                raise ValueError('Age must be >= 1')
            return name, _age
        except ValueError as e:
            print(e)

name, age = app()

aorc = 'a child' if age <= 17 else 'an adult'

print(f'{name} you are {age} which means you are {aorc}')