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

Python计算器问题:if条件成立时else仍执行的排查需求

问题修复:Python计算器的错误提示异常

你的代码问题出在分支结构的逻辑绑定上:最后一行的else只和它相邻的if sh=="Stop"配对,而不是和前面的Values、Simple条件做整体判断。哪怕你输入了"Values"或"Simple",只要不是"Stop",就会触发这个错误提示。

修复后的完整代码

import math  # 补上缺失的模块导入,否则无法调用math.pi和math.e

pi = math.pi
e = math.e
φ = 1.618033988749895

while True:
    sh = input("MATHS CALCULATOR: ")

    if sh == "Values":
        va = input("NAME OF VALUE: ")
        # 统一转小写,减少重复判断
        va_lower = va.lower()
        if va_lower == "pi":
            print("PI value is", pi)
        elif va_lower == "e":
            print("Euler's Number(e) value is", e)
        elif va_lower == "g":
            print("Golden Ratio(φ) value is", φ)
        else:
            print("Try Another")
    elif sh == "Simple":
        sim = input("ENTER AN OPERATOR: ")
        a = int(input("ENTER FIRST NUMBER: "))
        b = int(input("ENTER SECOND NUMBER: "))
        if sim == "+":
            c = a + b
            print(f"{a} PLUS {b} EQUALS {c}")
        elif sim in ("*", "x"):  # 合并相同逻辑的判断
            c = a * b
            print(f"{a} TIMES {b} EQUALS {c}")
        elif sim == "/":
            c = a / b
            print(f"{a} BY {b} EQUALS {c}")
        elif sim == "-":
            c = a - b
            print(f"{a} MINUS {b} EQUALS {c}")
        else:
            print("Try Another")
    elif sh == "Stop":
        print("Thanks For Using!")
        quit()
    else:
        # 只有当输入不是Values/Simple/Stop时才会触发
        print("Check Again the Spelling!")

关键修改点

  1. 重构分支结构:把三个独立的if改成if-elif-else链式结构,让整个判断成为一个整体,只有前面所有条件都不满足时,才会执行最后的错误提示。
  2. 补全模块导入:原代码缺少import math,运行时会直接报错,必须补上。
  3. 优化重复逻辑:
    • 数值查询时把输入转成小写,不用分别判断"pi"和"PI"
    • 乘法操作合并*和x的判断,减少冗余代码
  4. 格式化字符串优化:用f-string让输出代码更简洁易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:12:37