Python文本计算器异常:输入乘除指令仍执行加法运算求助
问题根源
你的条件判断写法错误。比如if choice == 'Add' or 'add' or 'ADD':,Python会将其拆成三个独立表达式:choice == 'Add'、'add'、'ADD'。非空字符串在布尔判断中会被视为True,所以不管输入的choice是什么,这个if条件永远成立,直接执行加法函数,后面的elif分支根本不会触发。
解决思路
方案1:修正条件判断逻辑
两种写法可选,第二种更简洁:
- 写法一:把每个比较都明确写全:
if choice == 'Add' or choice == 'add' or choice == 'ADD': - 写法二(推荐):将输入统一转换为小写(或大写),只需一次判断:
if choice.lower() == 'add':
方案2:移除全局变量(更规范的写法)
当前代码使用global全局变量传递结果,其实可以让运算函数直接返回结果,在whichCalc中接收后再传递给主函数,避免全局变量带来的副作用,代码逻辑更清晰。
修改后的完整代码
版本1:移除全局变量的规范写法
def main(): result = whichCalc() print(result) def whichCalc(): choice = input("Please enter one of the following; Add, Multiply or Divide: ") choice_lower = choice.lower() if choice_lower == 'add': return addNum() elif choice_lower == 'multiply': return multNum() elif choice_lower == 'divide': return divNum() else: print('What?') return None def addNum(): return firstNum + secondNum def multNum(): return firstNum * secondNum def divNum(): return firstNum / secondNum firstNum = int(input('Enter the first number: ')) secondNum = int(input('Enter the second number: ')) main()
版本2:仅修正条件判断的简化写法
def main(): whichCalc() print(finalNum) def whichCalc(): choice = input("Please enter one of the following; Add, Multiply or Divide: ") if choice.lower() == 'add': addNum() elif choice.lower() == 'multiply': multNum() elif choice.lower() == 'divide': divNum() else: print('What?') def addNum(): global finalNum finalNum = firstNum + secondNum return finalNum def multNum(): global finalNum finalNum = firstNum * secondNum return finalNum def divNum(): global finalNum finalNum = firstNum / secondNum return finalNum firstNum = int(input('Enter the first number: ')) secondNum = int(input('Enter the second number: ')) main()
内容的提问来源于stack exchange,提问作者jf0ssGremlin
相关产品推荐
相关产品推荐

