You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python聊天脚本重复输出及新增关键词卡顿问题排查求助

Python聊天脚本重复输出与卡顿问题排查

问题原因分析

1. 重复输出(无限循环打印)

原代码里第一个while (user != "bye")循环存在致命问题:循环内部完全没有更新user变量的值,也没有任何退出循环的逻辑。只要用户输入的内容不是"bye",这个循环就会一直重复遍历keywords列表,只要匹配到关键词就反复打印对应回复,永远停不下来——比如输入"music"就会无限输出"Music is so relaxing!"。

2. 新增关键词时卡顿

所谓的"卡顿"并非出在新增关键词的逻辑里,而是因为第一个死循环永远在运行,程序根本执行不到后面负责处理新增关键词的while循环,看起来像是卡顿,实则是程序被第一个死循环彻底卡住了。

修复后的代码

greetings = ["Hello!", "What's up?!", "Howdy!", "Greetings!"]
goodbyes = ["Bye!", "Goodbye!", "See you later!", "See you soon!"]

keywords = ["music", "pet", "book", "game"]
responses = ["Music is so relaxing!", "Dogs are man's best friend!", "I know a lot of books.", "I like to play video games."]
import random
print(random.choice(greetings))

user = input("Say something (or type bye to quit): ")
user = user.lower()

while (user != "bye"):
    keyword_found = False

    for index in range(len(keywords)):
        if (keywords[index] in user):
            print("Bot: " + responses[index])
            keyword_found = True

    if (keyword_found == False):
        new_keyword = input("I'm not sure how to respond. What keyword should I respond to? ")
        keywords.append(new_keyword)
        new_response = input("How should I respond to " + new_keyword + "? ")
        responses.append(new_response)

    user = input("Say something (or type bye to quit): ")
    user = user.lower()

print(random.choice(goodbyes))

修复说明

直接删除第一个多余的while循环即可。这个循环完全是冗余代码,既没有更新用户输入,也无法正常退出,是导致所有问题的根源。删除后,程序会正常进入第二个while循环,处理关键词匹配和新增逻辑,不会再出现无限输出和卡顿问题。

内容的提问来源于stack exchange,提问作者fishes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:12:12