提问人:kilobyte network 提问时间:7/10/2023 更新时间:7/10/2023 访问量:88
我怎样才能让一个简单的程序接受年龄,并且在我输入字符串而不是整数时不显示错误
how can i make a simple program to accept age and not show error when i input a string instead of an integer
答:
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,因此请使用第二个条件检查 ()。else
elif
尝试将非数字字符串转换为浮点数 () 会引发 ,我们可以使用 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}')
评论