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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:09:01