Ôn tập: máy tính đơn giản
Thuộc phần Lập trình hướng đối tượng trong hành trình Python của Coddy. Bài học 8 trên 64.
Thử thách
Trung bìnhLớp Calculator trong calculator.py cần:
- Có hàm khởi tạo đặt thuộc tính
resultthành 0 - Có các phương thức
add,subtract,multiplyvàdivide, mỗi phương thức cần:- Nhận một số làm đối số
- Thực hiện phép tính giữa
resulthiện tại và số đó - Cập nhật thuộc tính
result - Trả về kết quả mới
- Có phương thức
clearđặt lạiresultthành 0 - Có phương thức
get_resulttrả về kết quả hiện tại - Với phương thức
divide, bạn cần xử lý phép chia cho 0 bằng cách:- Kiểm tra xem số được cung cấp có bằng 0 không
- Nếu số đó bằng 0, in chính xác: "Error: Division by zero"
- Trong trường hợp này, giữ nguyên thuộc tính
result - Trả về giá trị
resultkhông thay đổi
Tệp driver.py sẽ nhập lớp Calculator của bạn và kiểm tra lớp này bằng đoạn code tương tự như sau:
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 0Làm theo các chú thích TODO trong tệp calculator.py để triển khai đầy đủ các chức năng cần thiết.
Tự làm thử
from calculator import Calculator
# Xử lý test case
test_case = input()
if test_case == "constructor_test":
# Kiểm tra việc tạo máy tính và trạng thái ban đầu
calc = Calculator()
print(f"Initial result: {calc.get_result()}")
print("Calculator created successfully")
elif test_case == "addition_test":
# Kiểm tra chức năng cộng
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":
# Kiểm tra chức năng trừ
calc = Calculator()
calc.add(20) # Bắt đầu với 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":
# Kiểm tra chức năng nhân
calc = Calculator()
calc.add(5) # Bắt đầu với 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":
# Kiểm tra chức năng chia
calc = Calculator()
calc.add(100) # Bắt đầu với 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":
# Kiểm tra cách xử lý lỗi chia cho 0
calc = Calculator()
calc.add(50)
print(f"Initial value: {calc.get_result()}")
result = calc.divide(0) # Cần in ra thông báo lỗi
print(f"Result after division by zero: {result}")
print(f"Value unchanged: {calc.get_result()}")
elif test_case == "clear_test":
# Kiểm tra chức năng xóa
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":
# Kiểm tra lần lượt tất cả các phép toán
calc = Calculator()
# Thực hiện một loạt phép toán
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()}")
# Kiểm tra cách xử lý lỗi
calc.divide(0) # Sẽ in ra lỗi
print(f"After division by zero attempt: {calc.get_result()}")
# Xóa kết quả và bắt đầu lại
calc.clear()
calc.add(100)
print(f"After clear and add 100: {calc.get_result()}")
else:
print("Unknown test case")
Tất cả bài học trong Lập trình hướng đối tượng
1Nền tảng về lập trình hướng đối tượng
Tệp bên ngoàiGiới thiệu về lập trình hướng đối tượngLớp và đối tượngTham số selfPhương thứcThuộc tínhPhương thức khởi tạo (__init__)Ôn tập: máy tính đơn giản4Kế thừa
Kế thừa cơ bảnHàm super()Ghi đè phương thứcKế thừa đa lớpThứ tự phân giải phương thứcÔn tập: hệ thống phân cấp nhân viên2Decorator
Giới thiệu về decoratorDecorator thuộc tínhDecorator phương thức tĩnhDecorator phương thức lớp5Tính đa hình
Xem lại cách ghi đè phương thứcKiểu gõ vịtLớp và phương thức trừu tượngThiết kế giao diệnÔn tập: máy tính hình học8Các khái niệm OOP nâng cao
Kết hợp và kế thừaMixinPhương thức tĩnh và phương thức lớpDecorator lớpTrình quản lý ngữ cảnhTự luyện tập: Trình biên dịch Python online