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

