Запрашиваемая у пользователя для ввода, пока они не дают действительный ответ

Я пишу программу, которая должна принимать входные данные от пользователя.

#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, но бессмысленно в этом контексте?

Ответы на вопрос(17)

Ваш ответ на вопрос