#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:
if userinput == 'bye':
print("See you soon!")
break
else:
userinput = input("Question/Answer: ")
userinput = userinput.lower()
usersplit = userinput.split()
for i in usersplit:
if i in reactionanswer:
print(reactionanswer[i])
else:
print(random.choice(randomanswer))
Комментарии:
1.Переместить
userinput = input("Question/Answer: ")
в передif userinput == 'bye':
2. Вы вызываете
input
только после проверки, пока
Ответ №1:
Это потому, что вы проверяете 'bye'
после следующей итерации цикла, то есть после проверки его в списке reactionanswer
, это выполняет это print(random.choice(randomanswer))
Попробуйте сделать
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
usersplit = userinput.split()
for i in usersplit:
if i in reactionanswer:
print(reactionanswer[i])
else:
print(random.choice(randomanswer))
Комментарии:
1. Ты самый лучший! Спасибо.
Ответ №2:
если вы проследите за ходом цикла while, то увидите, что он переходит непосредственно в раздел ‘else:’. Лучше запрашивать ввод сразу после запуска цикла while!