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

