Основы

Ответ «да/нет» в пользовательском вводе в Python

При написании интерактивных скриптов на Python часто возникает необходимость спросить у пользователя, хочет ли он продолжать или согласен ли он с условиями. То есть нам нужно задать вопрос, предполагающий ответ типа «да/нет», и обработать пользовательский ввод. Давайте посмотрим, как это делается.

Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python.

Как запросить у пользователя ответ типа «да/нет»

Чтобы задать пользователю вопрос, предполагающий ответ типа «да/нет»:

  1. Используйте функцию input(), чтобы получить ввод от пользователя.
  2. Используйте условные операторы, чтобы проверить, ввел ли пользователь «да» или «нет».
  3. Если одно из условий соблюдается, выполните соответствующее действие.
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, проверяющий, ввел ли пользователь «да» или «нет»:

  1. Используйте цикл while для итерации до тех пор, пока не будет выполнено условие.
  2. Используйте функцию input(), чтобы получить ввод от пользователя.
  3. Если пользователь вводит «нет», используйте оператор 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».

Использование цикла while для получения согласия с несколькими вариантами слов «да» и «нет»

Если согласие или несогласие пользователь может выразить разными словами, добавьте эти слова в список и используйте оператор 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».

Марина

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago