Python简易计算器代码报IndentationError,求问题排查与修正
问题分析
- 缩进错误:
else块内的if语句缩进层级违规,Python要求同一代码块必须保持一致缩进,该if的缩进比上一行的num2赋值多了,导致语法报错。 - 终止条件判断错误:原代码用
select_op(choice) == -1判断终止,但实际要匹配的是输入的#,且select_op函数仅返回输入值,完全冗余,直接用choice变量即可。 - 取余运算输出错误:取余分支的输出符号误写为
+,应改为%。 - 重置操作错误:
return True不能在循环体中使用(return仅用于函数内部),且重置逻辑应跳过输入数字步骤,直接回到循环开头。 - 冗余函数:
select_op函数无实际作用,可直接删除。
修正后的代码
def add(num1, num2): return num1 + num2 def sub(num1, num2): return num1 - num2 def mul(num1, num2): return num1 * num2 def div(num1, num2): return num1 / num2 def power(num1, num2): return num1 ** num2 def rem(num1, num2): return num1 % num2 while True: print("Select operation.") print("1.Add : + ") print("2.Subtract : - ") print("3.Multiply : * ") print("4.Divide : / ") print("5.Power : ^ ") print("6.Remainder: % ") print("7.Terminate: # ") print("8.Reset : $ ") choice = input("Enter choice(+,-,*,/,^,%,#,$): ") if choice == "#": print("Done. Terminating") break if choice == "$": print("Resetting calculator...") continue # 仅选择运算操作时才要求输入数字,同时处理非数字输入异常 try: num1 = float(input("Enter First Number : ")) num2 = float(input("Enter Second Number : ")) except ValueError: print("Invalid number input! Please enter numeric values.") continue if choice == "+": print(num1, "+", num2, "=", add(num1,num2)) elif choice == "-": print(num1, "-", num2, "=", sub(num1,num2)) elif choice == "*": print(num1, "*", num2, "=", mul(num1,num2)) elif choice == "/": print(num1, "/", num2, "=", div(num1,num2)) elif choice == "^": print(num1, "^", num2, "=", power(num1,num2)) elif choice == "%": print(num1, "%", num2, "=", rem(num1,num2)) else: print("Invalid operation choice! Please try again.")
内容的提问来源于stack exchange,提问作者Peach
相关产品推荐
相关产品推荐

