Существует несколько способов сделать то, что вы просите. Как вы указали, регулярные выражения могут работать, хотя они могут быть немного избыточными для вашего примера здесь.
Вместо этого, вы можете try
бросить user_input
к типу вы хотите, и except
для обработки ошибок:
try:
self.age = int(user_input)
except ValueError:
print "You didn't enter a number for age, try again"
Если предположить user_input
является строка; если это строка с номерами (например, '25'), то int()
преобразует ее в int без заминки, и у вас будет self.age = 25
. Если это строка (например, «двадцать пять»), она будет вызывать ValueError, и вы можете делать все, что хотите (отображать сообщение об ошибке, попросить пользователя ввести что-то еще и т. Д.).
Это даст вам очень простой способ проверки ввода; в зависимости от ваших требований, вы можете захотеть большего. Например, вы можете использовать ограничения по self.age
(например, более 18, менее 99), что вы можете сделать с помощью простых операторов if
.
Чтобы проверить, что пользователь предоставил список слов для заданий, вы можете использовать метод split()
, который разбивает строку слов с заданным seperator и возвращает массив слов. Так, например, если user_input
- 'engineer janitor'
, user_input.split()
вернется ['engineer', 'janitor']
.
>>> user_input = 'engineer janitor'
>>> user_input.split()
['engineer', 'janitor']
(помните, что split()
принимает необязательный аргумент, который является то, что строка разделена на.Поэтому, если вы хотите, чтобы пользователь разделял задания запятыми, вы могли бы позвонить user_input.split(',')
)
Затем вы можете использовать функцию len()
, чтобы убедиться, что пользователь ввел более двух заданий.
>>> jobs = user_input.split()
>>> len(jobs)
2
Для более сложных проверок (например, если вы хотите, чтобы убедиться, что слова в списке заданий все капитализируются и длиной более 2 буквы), то да, регулярные выражения, вероятно, что вы хотите , но они могут быть немного подавляющими, если вы только начинаете с Python :)