回顾:简单计算器
本课属于 Coddy Python 学习旅程的“面向对象编程”单元。第 8 课,共 64 课。
挑战
中等你的 Calculator 类在 calculator.py 中应当:
- 包含一个构造函数,将
result属性初始化为 0 - 包含
add、subtract、multiply和divide方法,每个方法都应:- 将一个数字作为参数
- 对当前
result和该数字执行运算 - 更新
result属性 - 返回新的结果
- 包含一个
clear方法,将result重置为 0 - 包含一个
get_result方法,返回当前结果 - 对于
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 在线编译器