python-113Đọc toàn bộ đề miễn phí
Hệ thống Tài khoản Ngân hàng và Sổ cái Giao dịch với Đóng gói Dữ liệu
Cài đặt lớp BankAccount(account_number: str, initial_balance: float = 0.0):
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: classes, private attributes, exceptions.
Nội dung đề bài
Mục tiêu kiến thức
- Áp dụng nguyên lý đóng gói (Encapsulation) để bảo vệ trạng thái nội tại của đối tượng.
- Sử dụng thuộc tính private/protected và phương thức getter/setter có kiểm soát.
- Quản lý lịch sử giao dịch (Transaction Ledger) không thể bị sửa đổi tùy tiện từ bên ngoài.
Mô tả bài toán
Cài đặt lớp BankAccount(account_number: str, initial_balance: float = 0.0):
__init__(self, account_number: str, initial_balance: float = 0.0):account_number: chuỗi định danh tài khoản._balance: số dư nội tại. Nếuinitial_balance < 0, raiseValueError("So du ban dau khong the am")._ledger: danh sách lưu các bản ghi giao dịch{ "type": "DEPOSIT" | "WITHDRAW", "amount": float, "balance_after": float }.deposit(self, amount: float) -> float:- Gửi tiền vào tài khoản. Nếu
amount <= 0, raiseValueError("So tien nap phai lon hon 0"). - Cập nhật số dư và ghi nhận vào
_ledger. Trả về số dư mới. withdraw(self, amount: float) -> float:- Rút tiền. Nếu
amount <= 0, raiseValueError("So tien rut phai lon hon 0"). - Nếu
amount > self._balance, raiseValueError("So du khong du"). - Cập nhật số dư và ghi nhận vào
_ledger. Trả về số dư mới. get_balance(self) -> float:- Trả về số dư hiện tại.
get_statement(self) -> list[dict]:- Trả về bản sao danh sách lịch sử giao dịch.
Input
- Các tham số truyền vào hàm/lớp BankAccount hoặc dữ liệu đầu vào theo định dạng mô tả.
Output
- Kết quả trả về của hàm/lớp BankAccount hoặc dữ liệu in ra màn hình theo đúng đặc tả.
Ràng buộc
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
BankAccount(account_number='ACC_001', initial_balance=100.0, deposits=[50.0], withdrawals=[30.0])Output
120.0Giải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Ví dụ 2
Input
BankAccount(account_number='ACC_002', initial_balance=50.0, withdraw=100.0)Output
TrueGiải thích
Hàm được gọi với bộ tham số thứ hai và trả về kết quả tương ứng theo thiết kế.
3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
