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

