Python编写带语音播报的AI助手时关键词匹配报错如何解决?
问题解决
报错原因
你写的if you == KeyS:存在两处逻辑错误:
KeyS是存储了'hi'、'hello'两个字符串的元组,直接和用户输入的字符串做全等比较,二者类型不同,永远会返回False,不可能触发对应分支- 你的需求是输入包含预设关键词就触发响应,全等判断只能匹配用户输入完全等于某个值的场景,不符合需求
修复方案
根据你的实际需求二选一即可:
方案1:用户输入完全匹配任意一个预设关键词时触发
把对应判断行改成:
if you in KeyS:
方案2:用户输入包含任意一个预设关键词时触发(比如输入“hi 今天天气怎么样”也能触发hi的响应)
把对应判断行改成:
if any(key in you for key in KeyS):
优化后完整代码(含冗余逻辑简化,把pyttsx3初始化移到循环外减少重复操作)
import time import pyttsx3 day = time.asctime(time.localtime(time.time())) KeyS = ('hi', 'hello') # 提前初始化语音引擎,不用每次循环都创建 robotsay = pyttsx3.init() while True: you = input('you:') # 这里用方案2的包含匹配,你可以换成方案1的in判断 if any(key in you for key in KeyS): robot = 'hi friend' elif you == 'time': robot = day elif you == 'bye': robot = 'bye sir' print('robot:' + robot) robotsay.say(robot) robotsay.runAndWait() break else: robot = 'i do not understand' print('robot:' + robot) robotsay.say(robot) robotsay.runAndWait()
内容的提问来源于stack exchange,提问作者Hồ Quang Vinh
相关产品推荐
相关产品推荐

