#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))