Я пишу программу, которая должна принимать входные данные от пользователя.
#note: Python 2.7 users should use `raw_input`, the equivalent of 3.X `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
, но бессмысленным в этом контексте?