Menu
CoddyTech

Ô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.

challenge icon

Thử thách

Trung bình

Lớp Calculator trong calculator.py cần:

  1. Có hàm khởi tạo đặt thuộc tính result thành 0
  2. Có các phương thức add, subtract, multiply và 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 result hiện tại và số đó
    • Cập nhật thuộc tính result
    • Trả về kết quả mới
  3. Có phương thức clear đặt lại result thành 0
  4. Có phương thức get_result trả về kết quả hiện tại
  5. 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ị result khô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 0

Là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

Tự luyện tập: Trình biên dịch Python online