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

Python编写计算器时if条件为真却跳过执行、始终返回Error问题

问题原因

  • 类型不匹配:Python的input()函数默认返回字符串类型,你代码中直接将clx和整数1/2/3/4做等值判断,类型不同永远返回False,所有条件分支都不会命中。
  • 分支逻辑错误:你写的4个if是完全独立的判断语句,最后的else仅和最后一个if clx == 4绑定,哪怕前面的分支命中,只要第四个if不成立,就会执行else的报错逻辑。
  • 额外待优化点:你输入的val1和val2也是字符串类型,后续做数值运算时还需要先转换为数字类型才能正常计算。

修复方案

  1. 将输入的clx转换为整数类型,或者将判断条件的数值改为字符串格式
  2. 将第二个到第四个if改为elif,让所有分支形成互斥的判断链,else仅在所有分支都未命中时才执行
  3. 新增输入值的类型转换逻辑,保证后续运算正常执行

修复后可运行代码

# 计算器脚本
print("目前本脚本仅支持最多两个数的加减乘除基础运算")

# 输入直接转换为浮点型,支持小数运算
val1 = float(input("输入第一个数值: "))
val2 = float(input("输入第二个数值: "))
print(f"第一个数值为 {val1},第二个数值为 {val2}")

print("选择运算类型:")
print("1: 加法")
print("2: 减法")
print("3: 乘法")
print("4: 除法")
# 转换输入选项为整数类型
clx = int(input("输入你的选择: "))

if clx == 1:
    clxprint = "加法运算"
    op = "+"
    res = val1 + val2
elif clx == 2:
    clxprint = "减法运算"
    op = "-"
    res = val1 - val2
elif clx == 3:
    clxprint = "乘法运算"
    op = "*"
    res = val1 * val2
elif clx == 4:
    clxprint = "除法运算"
    op = "/"
    # 新增除零错误判断
    if val2 == 0:
        print("错误:除数不能为0")
        exit()
    res = val1 / val2
else:
    print("Error")
    exit()

print("正在处理运算...")
print(f"{clxprint}:{val1} {op} {val2} = {res}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:24:02