首页 > 编程问答 >询问用户输入,直到他们给出有效的响应

询问用户输入,直到他们给出有效的响应

时间:2024-07-31 13:58:40浏览次数:5  
标签:python validation input

我正在编写一个接受用户输入的程序。

#note: Python 2.7 users should use `raw_input`, the equivalent of 3.X's `input`
age = int(input("Please enter your age: "))
if age >= 18: 
    print("You are able to vote in the United States!")
else:
    print("You are not able to vote in the United States.")

只要用户输入有意义的数据,该程序就会按预期工作。

Please enter your age: 23
You are able to vote in the United States!

但是如果用户输入无效数据,它就会失败:

Please enter your age: dickety six
Traceback (most recent call last):
  File "canyouvote.py", line 1, in <module>
    age = int(input("Please enter your age: "))
ValueError: invalid literal for int() with base 10: 'dickety six'

而不是崩溃,我会就像程序再次要求输入一样。像这样:

Please enter your age: dickety six
Sorry, I didn't understand that.
Please enter your age: 26
You are able to vote in the United States!

如何请求有效输入而不是崩溃或接受无效值(例如 -1 )?


以下是使用循环和错误处理来持续询问用户输入直到获得有效响应的 Python 代码:

while True:
  try:
    age = int(input("请输入的年龄:"))
    if age >= 18:
      print("可以在美国投票!")
    else:
      print("不能在美国投票。")
    break 
  except ValueError:
    print("抱歉,我不明白。请以数字输入的年龄。") 

这段代码是如何工作的:

  1. while True 循环: 该循环会持续运行,直到遇到 break 语句。这意味着程序会不断要求用户输入,直到输入有效。
  2. try...except 块: 此块用于处理可能发生的错误。
    • try 块: 此块包含可能导致错误的代码,在本例中,是将用户输入转换为整数 ( int(input()) )。如果用户输入的不是数字,则会引发 ValueError
    • except ValueError 块: 如果在 try 块中引发了 ValueError ,则会执行此块中的代码。在本例中,程序会打印一条消息,告知用户输入无效,并要求他们重试。
  3. break 语句: 如果用户输入有效(即可以将其转换为整数),则会执行 if age >= 18 检查。然后执行相应的 print 语句,并且 break 语句会使循环停止,从而结束程序。

此代码确保程序仅在获得有效年龄输入(可以转换为整数的数字)后才会退出循环。

标签:python,validation,input
From: 23294658

相关文章