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!")
关键修改点
- 重构分支结构:把三个独立的
if改成if-elif-else链式结构,让整个判断成为一个整体,只有前面所有条件都不满足时,才会执行最后的错误提示。 - 补全模块导入:原代码缺少
import math,运行时会直接报错,必须补上。 - 优化重复逻辑:
- 数值查询时把输入转成小写,不用分别判断"pi"和"PI"
- 乘法操作合并
*和x的判断,减少冗余代码
- 格式化字符串优化:用f-string让输出代码更简洁易读
内容的提问来源于stack exchange,提问作者Karthigeyan Ravichandran
相关产品推荐
相关产品推荐

