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
相关产品推荐
相关产品推荐

