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

Python程序条件判断异常:仅执行第一个if分支的问题排查

问题原因与解决方案

核心问题:条件判断逻辑错误

你写的if/elif条件不符合Python的逻辑判断规则。比如第一个判断if 'multiplication' or 'multiply' in query,Python会把它拆成两部分:('multiplication') 和 ('multiply' in query)。由于非空字符串在布尔判断里等价于True,所以不管你的query里有没有相关关键词,这个条件都会永远成立,程序自然每次都执行第一个分支。

修正后的条件写法

每个关键词都要单独和query做in检查,再用or连接,这样才能正确判断query中是否包含任意一个目标关键词。

完整修正代码

import re
query = 'plus 5 and 3'

def multiply(query):
    query = '*'.join(re.findall('\\d+',query))
    result = eval(query)
    print(result)
    return f'Answer is {result}'

def addition(query):
    query = '+'.join(re.findall('\\d+',query))
    result = eval(query)
    print(result)
    return f'Answer is {result}'

def subtract(query):
    query = '-'.join(re.findall('\\d+',query))
    result = eval(query)
    print(result)
    return f'Answer is {result}'

def divide(query):
    query = '/'.join(re.findall('\\d+',query))
    result = eval(query)
    print(result)
    return f'Answer is {result}'

if 'multiplication' in query or 'multiply' in query:
    print(multiply(query))
elif 'addition' in query or 'add' in query or 'plus' in query:
    print(addition(query))
elif 'subtraction' in query or 'subtract' in query or 'minus' in query:
    print(subtract(query))
elif 'division' in query or 'divide' in query:
    print(divide(query))

(额外优化:每个函数里把eval(query)的结果存成变量,避免重复计算)

内容的提问来源于stack exchange,提问作者Lokesh Thakur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:09:24