Menu
CoddyTech

回顾:简单计算器

本课属于 Coddy Python 学习旅程的“面向对象编程”单元。第 8 课,共 64 课。

challenge icon

挑战

中等

你的 Calculator 类在 calculator.py 中应当:

  1. 包含一个构造函数,将 result 属性初始化为 0
  2. 包含 add、subtract、multiply 和 divide 方法,每个方法都应:
    • 将一个数字作为参数
    • 对当前 result 和该数字执行运算
    • 更新 result 属性
    • 返回新的结果
  3. 包含一个 clear 方法,将 result 重置为 0
  4. 包含一个 get_result 方法,返回当前结果
  5. 对于 divide 方法,你必须通过以下方式处理除以零的情况:
    • 检查传入的数字是否等于 0
    • 如果等于 0,则准确打印:"Error: Division by zero"
    • 在这种情况下,保持 result 属性不变
    • 返回未改变的 result 值

driver.py 文件会导入你的 Calculator 类,并使用类似下面的代码进行测试:

from calculator import Calculator

calc = Calculator()
calc.add(5)       # result becomes 5
calc.multiply(3)  # result becomes 15
calc.subtract(2)  # result becomes 13
calc.divide(0)    # prints "Error: Division by zero", result remains 13
calc.divide(2)    # result becomes 6.5
calc.clear()      # result becomes 0

按照 calculator.py 文件中的 TODO 注释,实现所有必需的功能。

亲手试试

from calculator import Calculator

# 测试用例处理程序
test_case = input()

if test_case == "constructor_test":
    # 测试计算器的创建和初始状态
    calc = Calculator()
    print(f"Initial result: {calc.get_result()}")
    print("Calculator created successfully")

elif test_case == "addition_test":
    # 测试加法功能
    calc = Calculator()
    result1 = calc.add(10)
    print(f"After adding 10: {result1}")
    result2 = calc.add(5)
    print(f"After adding 5: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "subtraction_test":
    # 测试减法功能
    calc = Calculator()
    calc.add(20)  # 从 20 开始
    result1 = calc.subtract(8)
    print(f"After subtracting 8 from 20: {result1}")
    result2 = calc.subtract(2)
    print(f"After subtracting 2: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "multiplication_test":
    # 测试乘法功能
    calc = Calculator()
    calc.add(5)  # 从 5 开始
    result1 = calc.multiply(4)
    print(f"After multiplying by 4: {result1}")
    result2 = calc.multiply(2)
    print(f"After multiplying by 2: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "division_test":
    # 测试除法功能
    calc = Calculator()
    calc.add(100)  # 从 100 开始
    result1 = calc.divide(4)
    print(f"After dividing by 4: {result1}")
    result2 = calc.divide(5)
    print(f"After dividing by 5: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "division_by_zero_test":
    # 测试除以零时的错误处理
    calc = Calculator()
    calc.add(50)
    print(f"Initial value: {calc.get_result()}")
    result = calc.divide(0)  # 应打印错误信息
    print(f"Result after division by zero: {result}")
    print(f"Value unchanged: {calc.get_result()}")

elif test_case == "clear_test":
    # 测试清除功能
    calc = Calculator()
    calc.add(25)
    calc.multiply(3)
    print(f"Before clear: {calc.get_result()}")
    result = calc.clear()
    print(f"After clear: {result}")
    print(f"Current result: {calc.get_result()}")

elif test_case == "comprehensive_test":
    # 依次测试所有操作
    calc = Calculator()
    
    # 执行一系列操作
    calc.add(10)        # result = 10
    calc.multiply(3)    # result = 30
    calc.subtract(5)    # result = 25
    calc.divide(5)      # result = 5
    
    print(f"After sequence of operations: {calc.get_result()}")
    
    # 测试错误处理
    calc.divide(0)      # 应输出错误信息
    print(f"After division by zero attempt: {calc.get_result()}")
    
    # 清空后重新开始
    calc.clear()
    calc.add(100)
    print(f"After clear and add 100: {calc.get_result()}")

else:
    print("Unknown test case")

面向对象编程中的所有课

自己练习: Python 在线编译器