Python计算器代码修改后仅执行减法,求排查错误原因
Python计算器修改后仅执行减法的问题解决
你原本的计算器代码是正常工作的:
num1 = float(input('enter your first number :')) op = input('choose your operator: ') num2 = float(input('enter your second number :')) if op == '-': print(num1 - num2) elif op == '+': print(num1 + num2) elif op == '*': print(num1 * num2) elif op == '/': print(num1 / num2) else: print('invalid operator')
但修改后的代码出现了问题,无论选哪个有效运算符都只执行减法:
num1 = float(input('enter your first number :')) op = input('choose your operator: ') num2 = float(input('enter your second number :')) operator = ('+', '-', '/', '*') if op in operator: print(num1 - num2) elif op in operator: print(num1 + num2) elif op in operator: print(num1 * num2) elif op in operator: print(num1 / num2) else: print('invalid operator')
错误原因
你修改后的if条件是op in operator,只要用户输入的是有效运算符(+、-、*、/中的任意一个),第一个if的条件就会成立,程序会立刻执行减法的打印语句,然后直接跳出整个if-elif结构,后面的elif分支根本不会被触发。这就是为什么不管选哪个运算符,都只执行减法。
修正方案
有两种常见的修正方式:
方式1:保留逐个判断运算符的逻辑
先判断运算符是否有效,再分别匹配具体的运算符:
num1 = float(input('enter your first number :')) op = input('choose your operator: ') num2 = float(input('enter your second number :')) operator = ('+', '-', '/', '*') if op not in operator: print('invalid operator') elif op == '-': print(num1 - num2) elif op == '+': print(num1 + num2) elif op == '*': print(num1 * num2) elif op == '/': print(num1 / num2)
方式2:用字典映射运算符与运算逻辑(更简洁)
这种方式扩展性更好,后续加新运算符只需要修改字典:
num1 = float(input('enter your first number :')) op = input('choose your operator: ') num2 = float(input('enter your second number :')) operator_map = { '+': num1 + num2, '-': num1 - num2, '*': num1 * num2, '/': num1 / num2 } result = operator_map.get(op, 'invalid operator') print(result)
内容的提问来源于stack exchange,提问作者Crashofs
相关产品推荐
相关产品推荐

