Задать вопрос
@taus23

Нужно написать загадку используя python. Где я сделал ошибку?

print('Какой знак зодиака больше всего боится самолётов?')
s = ''
while s != 'близнецы' or s != 'Близнецы':
    s = input('Введите ответ и нажмите Enter: ')
print('Вы отгадали загадку')


Скрипт при запуске должен просить ввести корректный ответ до получения оного. Но по факту он не принимает даже указанные мною варианты. Зато если я полностью уберу or - то введение оставшегося варианта завершает задачу. Либо если я ставлю or s == 'Близнецы' - то также первый вариант завершает задачу, но второй не принимается. Как мне сделать, чтобы оба варианта принимались?
  • Вопрос задан
  • 927 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
@Elvinchik
Попробуйте так:

print('Какой знак зодиака больше всего боится самолётов?')
s = ''

while s.lower() != 'близнецы':
    s = input('Введите ответ и нажмите Enter: ')

print('Вы отгадали загадку')
Ответ написан
Комментировать
Maksim_64
@Maksim_64
Data Analyst
Вообще подобные проблемы лучше решать так, вечный цикл и условие его прерывания.
print('Какой знак зодиака больше всего боится самолётов?')
while True:
    s = input('Введите ответ и нажмите Enter: ')
    if s.lower() == 'близнецы':
        break
print('Вы отгадали загадку')


Если модернизировать ваш вариант то нужно переделать условие следующим образом
print('Какой знак зодиака больше всего боится самолётов?')
s = ''
while not(s == 'близнецы' or s == 'Близнецы'):
    s = input('Введите ответ и нажмите Enter: ')
print('Вы отгадали загадку')


Причина же почему ваш код не работает как ожидается (при введении правильных ответов прерывание цикла не происходит значение в цикле остается TRUE)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Замените or на and.
По закону де Моргана not (A or B) = not A and not B
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы