Python计算器输出异常求助:第4项输出未达预期
Python计算器除法功能输出错误修正求助
问题说明
我编写了一款Python计算器代码,已完成以下功能:
- 获取用户输入(包含算术操作符、重置/终止指令及操作数)
- 实现加减乘除、幂运算、取余等运算函数
- 通过
select_op(choice)调用运算函数并展示结果
目前前3项功能输出符合预期,但除法(第4项)功能输出错误,恳请协助修正代码以得到预期输出。
错误现象
除法操作时,输入输出格式与其他运算不一致,异常处理的输出逻辑也存在问题(如除数为0时的输出不符合统一格式)。
原代码
def add(x, y): return x + y def subtract(x, y): return x - y def multiply(x, y): return x * y def divide(x, y): return x / y def power(x, y): return x ** y def remainder(x, y): return x % y def select_op(choice): if choice == '+': num1 = int(input("Enter first number: ")) print(num1) num2 = int(input("Enter second number: ")) print(num2) print(float(num1), "+", float(num2), "=", float(add(num1, num2))) elif choice == '-': num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) print(num1, "-", num2, "=", subtract(num1, num2)) elif choice == '*': num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) print(num1, "*", num2, "=", multiply(num1, num2)) elif choice == '/': num1 = int(input("Enter first number: ")) print(num1) num2 = int(input("Enter second number: ")) print(num2) try: result = num1 / num2 print(f"{num1} / {num2} = {result}") except ZeroDivisionError: print("float division by zero") print(float(num1), "/", float(num2), "=", "None") elif choice == '^': num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) print(num1, "^", num2, "=", power(num1, num2)) elif choice == '%': num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) print(num1, "%", num2, "=", remainder(num1, num2)) elif choice == '#': return -1 elif choice == '$': return 0 else: print("Invalid input") return 1 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 : $ ") # take input from the user choice = input("Enter choice(+,-,*,/,^,%,#,$): ") print(choice) if select_op(choice) == -1: print("Done. Terminating") exit()
修正方案及代码
修改点说明
- 统一除法操作的输入类型为
float,与其他运算保持一致 - 移除除法部分多余的
print(num1)、print(num2),对齐其他运算的输出逻辑 - 调用已实现的
divide函数计算结果,保持代码逻辑一致性 - 优化零除异常的输出格式,使其与正常输出统一
修正后的代码
def add(x, y): return x + y def subtract(x, y): return x - y def multiply(x, y): return x * y def divide(x, y): return x / y def power(x, y): return x ** y def remainder(x, y): return x % y def select_op(choice): if choice == '+': num1 = int(input("Enter first number: ")) print(num1) num2 = int(input("Enter second number: ")) print(num2) print(float(num1), "+", float(num2), "=", float(add(num1, num2))) elif choice == '-': num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) print(num1, "-", num2, "=", subtract(num1, num2)) elif choice == '*': num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) print(num1, "*", num2, "=", multiply(num1, num2)) elif choice == '/': num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) try: result = divide(num1, num2) print(num1, "/", num2, "=", result) except ZeroDivisionError: print("float division by zero") print(num1, "/", num2, "=", "None") elif choice == '^': num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) print(num1, "^", num2, "=", power(num1, num2)) elif choice == '%': num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) print(num1, "%", num2, "=", remainder(num1, num2)) elif choice == '#': return -1 elif choice == '$': return 0 else: print("Invalid input") return 1 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 : $ ") # take input from the user choice = input("Enter choice(+,-,*,/,^,%,#,$): ") print(choice) if select_op(choice) == -1: print("Done. Terminating") exit()
内容的提问来源于stack exchange,提问作者Maduranga Dinesh
相关产品推荐
相关产品推荐

