@bgg123

Почему в этом коде при проверке слов с помощью оператора in в скобках он работает как надо, а без скобок по другому?

Есть код:
print("как настроение?")
otvet = input()
if ("хорошо" or "прекрасно" or "отлично" or "пойдет") in otvet:
    print("Отлично, у меня тоже всё хорошо :)")
elif ("плохо" or "ужасно" or "отвратительно" or "кошмар") in otvet:
    print("Ничего, скоро всё наладится.")
elif ("?" or "не") in otvet:
    print("Извините, я вас не понимаю, можете ответить конкретнее?")
else:
    print("Извините, я вас не понимаю, можете ответить конкретнее?")

Если в строке 3 и 5 убрать скобочки, в которых перечисляются слова, то на любой инпут пользователя будет print("Отлично, у меня тоже всё хорошо :)"). С чем это связано?
  • Вопрос задан
  • 181 просмотр
Решения вопроса 2
kawabanga
@kawabanga
Чему равно данное выражение в Питоне?
("хорошо" or "прекрасно" or "отлично" or "пойдет")


Я думаю оно равно true.

А ваш синтаксис, должен быть около таким -

otvet in [ "хорошо", "прекрасно" , "отлично", "пойдет"]
Ответ написан
@rPman
Это не должно работать, or это логический оператор, т.е. ты буквально пытаешься сравнить строковые константы как логическое выражение которое true/false, а затем пытаешься результат сравнения найти в массиве с помощью in, который введённая строка (массив символов), хз что он там у тебя находит, но явно не то что ожидаешь.

Уличная скобки, ты меняешь приоритет операций, и сначала у тебя отрабатывает in, с ближайшим словом, а затем or строки истинные, должно быть всегда true
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@chemdev
>>> print("хорошо" or "прекрасно" or "отлично" or "пойдет")
хорошо
>>>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы