@Ymgm
Изучаю Python

Почему бот работает неправильно?

Я написал простейшего разговорного бота, который должен по ключевым словам распознавать ответ пользователя, давать комментарий в том же настроении или контексте и задавать следующий вопрос, но почему то мой бот всегда дает первый вариант ответа, игнорируя ответ пользователя, как это исправить?

print("Привет, какое у тебя настроение?")
a = input()
if "хорошо" or "хорошее" or "отлично" or "отличное" or "прекрасно" or \
        "прекрасное" or "замечательно" or "замечательное" or "идеально" or "норм" in a:
    print("У меня тоже хорошее настроение")
elif "плохо" or "плохое" or "ужасно" or "ужасное" or " не очень" or "такое себе" in a:
    print("Ничего страшного, скоро все наладится")
else:
    print("Извини, я тебя не понимаю")
print("")
print("Ты любишь животных?")
b = input()
if  "да" or "люблю" or "очень люблю" or "обожаю" or "Да" in b:
    print("Я тоже люблю животных, особенно котиков")
elif "нет" or "Нет" or "не люблю" or "не очень" in b:
    print("Ну и злюка ты, а я вот котиков люблю")
else:
    print("Извини, я тебя не понимаю")
print("")
print("А какое твое любимое время года?")
c = input()
if "Зима" or "зима" in c:
    print("Ооо, мне тоже нравится холодок)")
elif "Лето" or "лето" in c:
    print("Ммм, я люблю солнышко, жаль только, оно меня не любит")
elif "Осень" or "осень" in c:
    print("Тебе видимо листочки нравятся?) Поэт чертов)")
elif "Весна" or "весна" in c:
    print("По мне так, единственный плюс Весны в том, что скоро лето")
else:
    print("Извини, я тебя не понимаю")
  • Вопрос задан
  • 91 просмотр
Решения вопроса 3
hottabxp
@hottabxp Куратор тега Python
Эксперт по BeautifulSoup(но это не точно!)
Можно сделать отдельные списки со словами, а потом проверять, есть ли ответ от пользователя в нужном списке:
print("Привет, какое у тебя настроение?")

good = ["хорошо","хорошее","отлично","отличное","прекрасно","прекрасное","замечательно","замечательное","идеально","норм"]
bad = ["плохо","плохое","ужасно","ужасное","не очень","такое себе" ]

a =  input().lower()
if  a in good:
    print("У меня тоже хорошее настроение")
elif a in bad:
    print("Ничего страшного, скоро все наладится")
else:
    print("Извини, я тебя не понимаю")
Ответ написан
sotanodroid
@sotanodroid
Python/Golang developer
Проблема в неверно выстроеных логических операциях.

# Это как у тебя сейчас и это равнозначно True
"Зима" or "зима"
'Зима'

# и это True
"Зима" or "зима" in c
'Зима'

# А это как должно быть
"Зима" in c or "зима" in c
False
Ответ написан
kshnkvn
@kshnkvn Куратор тега Python
yay ✌️ t.me/kshnkvn
Такой синтаксис в Python отсутствует
if "Зима" or "зима" in c:
Должно быть так:
if 'зима' in c or 'Зима' in c:
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
потому что
"хорошо" or "хорошее" or "отлично" or "отличное" or "прекрасно" or
        "прекрасное" or "замечательно" or "замечательное" or "идеально" or "норм"

всегда True. Что вы хотели сказать этим кодом?
Ответ написан
Ваш ответ на вопрос

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

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