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

Python初学者编写四则运算计算器时始终触发Unknown Entry错误如何解决

问题原因

  • 第一个逻辑错误在输入合法性判断的条件运算符使用错误:你用了or(或)来拼接多个!=判断,无论输入什么值,必然会满足其中一个不等条件,导致判断始终为真,一直输出错误提示。正确应该用and(且),即输入同时不等于1/2/3/4的时候才判定为非法输入。
  • 第二个错误是非法输入分支下的UnKnownEntry == True是比较运算,不是赋值运算,没有真正修改UnKnownEntry变量的值,导致循环逻辑异常。

修正后的完整代码

OperationSelected = False
UnKnownEntry = False

while OperationSelected == False or UnKnownEntry == True:
    try:
        operation = input("Select operation to perform:\r\n1>PLUS\r\n2>MINU\r\n3>MULTIP\r\n4>DIVIDE\r\n>>> ")

        if operation != "1" and operation != "2" and operation != "3" and operation != "4":
            print("--------------------------")
            print("Unknown entry. ( " + operation + " )")
            print("--------------------------")
            UnKnownEntry = True
        else: 
            print("TEST")
            OperationSelected = True
            UnKnownEntry = False

    except Exception as e:
        print(e)
        break

while OperationSelected == True and UnKnownEntry == False:
    try:    
        num1 = input("Enter first number: ")
        num2 = input("Enter second number: ")
        
        if operation == "1":
            print("--------------------------------------")
            print("The Solution is: " + str(float(num1) + float(num2)))
            print("--------------------------------------")
        elif operation == "2":
                print("--------------------------------------")
                print("The Solution is: " + str(float(num1) - float(num2)))
                print("--------------------------------------")
        elif operation == "3":
            print("--------------------------------------")
            print("The Solution is: " + str(float(num1) * float(num2)))
            print("--------------------------------------")
        elif operation == "4":
            print("--------------------------------------")
            print("The Solution is: " + str(float(num1) / float(num2)))
            print("--------------------------------------")
    except Exception as e:
        print(e)
        break

可选优化

合法性判断可以简化为成员运算,可读性更高:

if operation not in ["1", "2", "3", "4"]:

内容的提问来源于stack exchange,提问作者Mr.RobotFAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:36:03