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
相关产品推荐
相关产品推荐

