Задать вопрос
@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("Отлично, у меня тоже всё хорошо :)"). С чем это связано?
  • Вопрос задан
  • 182 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 2
kawabanga
@kawabanga
Чему равно данное выражение в Питоне?
("хорошо" or "прекрасно" or "отлично" or "пойдет")


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

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

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

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

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

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
18 янв. 2025, в 07:20
50000 руб./за проект
18 янв. 2025, в 03:12
1000 руб./за проект
18 янв. 2025, в 00:01
500 руб./за проект