При написании интерактивных скриптов на Python часто возникает необходимость спросить у пользователя, хочет ли он продолжать или согласен ли он с условиями. То есть нам нужно задать вопрос, предполагающий ответ типа «да/нет», и обработать пользовательский ввод. Давайте посмотрим, как это делается.
Чтобы задать пользователю вопрос, предполагающий ответ типа «да/нет»:
user_input = input('Do you like pizza (yes/no): ') if user_input.lower() == 'yes': print('user typed yes') elif user_input.lower() == 'no': print('user typed no') else: print('Type yes or no')
Мы использовали функцию input()
, чтобы получить ввод от пользователя.
Оператор if
проверяет, ввел ли пользователь «yes», и выводит сообщение.
Мы использовали метод str.lower()
для преобразования введенной пользователем строки в нижний регистр, чтобы выполнить сравнение без учета регистра.
print('YES'.lower()) # 👉️ 'yes' print('Yes'.lower()) # 👉️ 'yes'
Строковый метод str.lower
возвращает копию строки со всеми символами, преобразованными в нижний регистр.
Блок else
запускается, если пользователь ввел что-то другое, не «yes» или «no».
Кроме «да» и «нет» можно использовать и другие, приравненные к ним слова (буквы).
В таком случае добавьте соответствующие слова в списки и используйте оператор in для проверки членства.
user_input = input('Do you like pizza (yes/no): ') yes_choices = ['yes', 'y'] no_choices = ['no', 'n'] if user_input.lower() in yes_choices: print('user typed yes') elif user_input.lower() in no_choices: print('user typed no') else: print('Type yes or no')
Мы использовали оператор in
, чтобы проверить, является ли входное значение одним из элементов списка.
Оператор in
проверяет принадлежность. Например, x in l
оценивается как True, если x
является членом l
, в противном случае — как False.
Чтобы создать цикл while
, проверяющий, ввел ли пользователь «да» или «нет»:
while
для итерации до тех пор, пока не будет выполнено условие.input()
, чтобы получить ввод от пользователя.break
, чтобы выйти из цикла.user_input = '' while True: user_input = input('Do you want to continue? yes/no: ') if user_input.lower() == 'yes': print('User typed yes') continue elif user_input.lower() == 'no': print('User typed no') break else: print('Type yes/no')
Мы использовали цикл while True
для итерации до тех пор, пока пользователь не наберет «no».
Оператор if
проверяет, ввел ли пользователь «yes», и если условие выполнено, переходит к следующей итерации.
Оператор continue
продолжает следующую итерацию цикла.
Если пользователь набирает «no», мы печатаем сообщение и выходим из цикла while True
. Оператор break
выводит из внутреннего цикла for
или while
.
Блок else запускается, когда пользователь вводит что-то другое, не «yes» или «no».
Если согласие или несогласие пользователь может выразить разными словами, добавьте эти слова в список и используйте оператор in
для проверки принадлежности.
yes_choices = ['yes', 'y'] no_choices = ['no', 'n'] while True: user_input = input('Do you want to continue? yes/no: ') if user_input.lower() in yes_choices: print('User typed yes') continue elif user_input.lower() in no_choices: print('User typed no') break else: print('Type yes/no')
Мы использовали оператор in
, чтобы проверить, является ли вводимое значение одним из элементов списка.
Здесь мы выходим из цикла только если пользователь ввел «no», то есть не захотел продолжать.
Если вы просто хотите получить от пользователя ответ «да» или «нет», используйте следующий код:
yes_choices = ['yes', 'y'] no_choices = ['no', 'n'] while True: user_input = input('Do you like pizza (yes/no): ') if user_input.lower() in yes_choices: print('user typed yes') break elif user_input.lower() in no_choices: print('user typed no') break else: print('Type yes or no') continue
Здесь мы выходим из цикла как только пользователь введет один из вариантов, предусмотренных в наших списках. Если пользователь вводит что-то другое, continue
запускает следующую итерацию цикла.
Перевод статьи «Yes/No question with user input in Python».
При анализе данных часто требуется быстро найти абсолютное значение набора чисел. Для выполнения этой задачи…
Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…
Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…
В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…
В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…
При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…