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

Python 3.10 IDLE计算器开发故障排查求助

Python计算器代码的严重错误分析

你的代码存在以下几个关键错误,直接导致程序无法正常运行:

1. 条件判断完全错误

所有elif分支的判断条件都写成了OPR == "+",这意味着除了加法操作外,减法、乘法、除法等其他所有操作永远都不会被执行。每个分支的条件应该对应正确的操作符:

# 正确写法示例
if OPR == "+":
    print(str(NU1) + "+" + str(NU2) + "=" + str(ADD))
elif OPR == "-":
    print(str(NU1) + "-" + str(NU2) + "=" + str(SUB))
elif OPR == "*":
    print(str(NU1) + "*" + str(NU2) + "=" + str(MUL))
# 以此类推,其他分支对应各自的操作符

2. 未定义变量就直接使用

代码中多次出现ITR = ITR + 1,但你从未初始化过ITR变量(比如ITR = 0),运行时会直接抛出NameError。如果暂时不需要这个变量,可以直接删除这些行。

3. 循环逻辑断裂

  • 初始的OPR变量用来选择算术/图形功能,但进入循环后你重新给OPR赋值为具体的操作符(如+),导致循环条件OPR == "a"在第一次循环后就不成立,程序只会执行一次计算就退出循环。
  • 循环中没有更新CON变量的逻辑,用户无法选择是否继续计算。你需要在每次计算结束后询问用户是否继续,并更新CON的值。

4. 输入处理不健壮

使用int(input("First number?"))时,如果用户输入小数、字母或其他非整数内容,程序会直接抛出ValueError。可以考虑使用float()代替int()以支持小数,或者添加输入验证逻辑。

5. 数学运算的边界错误

  • 当NU2为0时,除法DIV = NU1/NU2会触发ZeroDivisionError;
  • 开方运算RAD = NU1**(1/NU2)中,如果NU1是负数且NU2为偶数,会得到复数结果(不符合常规计算器预期),如果NU2为0也会报错。需要添加这些情况的判断和处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:30:56