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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:14:58