You need to enable JavaScript to run this app. Python开发Discord机器人问答小游戏首个if条件始终为真怎么修复
优惠活动
大模型
产品
解决方案
定价
更多

Python开发Discord机器人问答小游戏首个if条件始终为真怎么修复

问题根源

你的代码中触发错误的核心原因有两个:

  1. 直接将生成器表达式放在if条件中判断:(substring in answer.content.lower() for substring in QA[Q][1])这部分是生成器对象,Python中所有非空的生成器对象直接做布尔判断时,返回值永远是True,完全不会执行内部的匹配逻辑,所以第一个if条件无论你输入什么都会判定成立。
  2. 判断顺序错误:你先判断近似答案、后判断正确答案,如果用户输入的正确答案包含近似答案的内容,会被误判为近似回答。
修正方案

把判断逻辑替换为以下内容即可:

user_input = answer.content.lower()
# 优先判断正确答案
if any(substring in user_input for substring in QA[Q][2]):
    await ctx.send('Correct!')
    return
# 再判断近似答案
elif any(substring in user_input for substring in QA[Q][1]):
    await ctx.send('Close but not quite.')
    return
else:
    await ctx.send('Incorrect')
    return

修改说明:

  • 用any()函数包裹生成器表达式,功能是检测是否存在至少一个子串匹配用户输入,返回实际的布尔匹配结果
  • 调换了正确答案和近似答案的判断顺序,避免误判

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 12:36:03