Чат-бот на python генерирует случайные ответы, если пользовательский ввод содержит более одного слова

#python

#python

Вопрос:

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

Вот мой код:

 import random

print("Welcome to Chatbot! Have fun.")
print("")
randomanswer = ['Thats not good', 'me too', 'how about you?']
reactionanswer = {'hello': 'hello, whats up?',
                  'sad': 'speak to me',
                  'entertainment': 'how can i entertain you?'}
userinput = ''
while True:
    userinput = input("Question/Answer: ")
    userinput = userinput.lower()
    if userinput == 'bye':
        print("See you soon!")
        break
    else:
        usersplit = userinput.split()
        for i in usersplit:
            if i in reactionanswer:
                print(reactionanswer[i])
            else:
                print(random.choice(randomanswer))

  

Комментарии:

1. пожалуйста, укажите предполагаемый вывод и вывод, который вы получаете, в своем вопросе.

2. @python_beginner вы перебираете userinput.split() список разделенных слов из входных данных. 2 слова = список с 2 элементами …

Ответ №1:

У меня все работает нормально, я запустил именно ваш код и получил это:

 Question/Answer: hello guy
hello, whats up?
Thats not good

Question/Answer: nothing in the list
me too
me too
me too
Thats not good
  

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

Ответ №2:

Проблема в том, что даже если вы нашли свой ответ, цикл for продолжает выполняться. Добавьте оператор «break», если слово было найдено в ответах. Вот так:

     else:
        usersplit = userinput.split()
        for i in usersplit:
            if i in reactionanswer:
                print(reactionanswer[i])
                break < --- add this
            else:
                print(random.choice(randomanswer))