Запрашиваемая у пользователя для ввода, пока они не дают действительный ответ
Я пишу программу, которая должна принимать входные данные от пользователя.
#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.")
Это работает, как и ожидалось, если пользователь вводит разумные данные.
C:\Python\Projects> canyouvote.py
Please enter your age: 23
You are able to vote in the United States!
Но если они ошибаются, то это вылетает:
C:\Python\Projects> canyouvote.py
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'
Вместо сбоя я хотел бы попытаться получить ввод снова. Нравится:
C:\Python\Projects> canyouvote.py
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
, который является действительнымint
, но бессмысленно в этом контексте?