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

Python四则运算代码始终执行else分支问题及解决方案求助

问题分析与解决方案

核心问题

你将用户输入的操作选择通过int(input(...))转换为了整数类型,但后续的条件判断中,却将其与字符串类型的'1'、'2'、'3'、'4'进行比较。在Python中,整数和字符串属于不同类型,永远不会相等,因此无论输入哪个合法选项,都会执行else分支。

修复方案(二选一即可)

方案1:将判断条件改为整数匹配

既然已经把chose转为整数,直接用整数做判断条件:

def add(x, y):
    return x + y
def multiple(x, y):
    return x * y
def subtrack(x, y):
    return x - y
def divide(x, y):
    return x / y
print('select your operation please')
print('1-Add')
print('2-Multiple')
print('3-subtrack')
print('4-Divide')
chose=int(input('enter your selection please: '))
num1=int(input('enter your first num please: '))
num2=int(input('enter your second num please: '))

if chose == 1:
    print(num1,'+',num2,'=',add(num1,num2))
elif chose == 2:
    print(num1,'*',num2,'=',multiple(num1,num2))
elif chose == 3:
    print(num1, '-', num2, '=', subtrack(num1,num2))
elif chose == 4:
    print(num1,'/',num2,'=',divide(num1,num2))
else:
    print("invalid number operation")

方案2:保持输入为字符串类型

如果不想转换chose的类型,直接用字符串做判断:

def add(x, y):
    return x + y
def multiple(x, y):
    return x * y
def subtrack(x, y):
    return x - y
def divide(x, y):
    return x / y
print('select your operation please')
print('1-Add')
print('2-Multiple')
print('3-subtrack')
print('4-Divide')
chose=input('enter your selection please: ')
num1=int(input('enter your first num please: '))
num2=int(input('enter your second num please: '))

if chose == '1':
    print(num1,'+',num2,'=',add(num1,num2))
elif chose == '2':
    print(num1,'*',num2,'=',multiple(num1,num2))
elif chose == '3':
    print(num1, '-', num2, '=', subtrack(num1,num2))
elif chose == '4':
    print(num1,'/',num2,'=',divide(num1,num2))
else:
    print("invalid number operation")

额外建议

推荐方案1,因为操作选择是数字,转为整数更符合逻辑,同时能自动过滤非数字的输入(若需更友好的异常处理,可添加try-except块捕获输入错误)。

内容的提问来源于stack exchange,提问作者Eslam Ezat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:25:21