如何修改Python while循环实现对话机器人持续交互直至触发退出指令
修复Bot类的持续运行循环问题
原代码的问题在于:内层对话循环仅执行一次voice_recognition()就break,且外层循环仅在未唤醒状态下运行,导致完成一次响应后脚本直接终止。以下是修改后的代码,实现持续运行直到sys.exit(0)触发:
import sys class Bot(): def __init__(self): self.woke = False # 主循环:持续运行直至sys.exit(0)触发终止 while True: # 待唤醒阶段:循环检测唤醒词,直到被唤醒 while not self.woke: self.wake_word() # 识别到唤醒词时将self.woke设为True # 唤醒后持续处理交互:重复执行语音识别、对话、响应流程 while self.woke: self.voice_recognition() # 录制音频并转换为spoke.txt文件 self.chat() # 读取spoke.txt生成回复 self.respond() # 使用pyttsx3朗读回复 # 若任一内部函数调用sys.exit(0),程序会直接终止
关键调整说明:
- 外层使用
while True作为无限主循环,确保程序始终处于运行状态,直到sys.exit(0)被触发。 - 待唤醒阶段的
while not self.woke循环会持续调用wake_word(),直到机器人被唤醒。 - 唤醒后的对话循环
while self.woke会完整重复语音交互流程,无需手动break;如果需要支持回到待唤醒状态(比如识别到特定退出指令),可在对应函数中将self.woke设为False,程序会自动回到待唤醒阶段。
内容的提问来源于stack exchange,提问作者Mo .haytham
相关产品推荐
相关产品推荐

