Lớp ví đơn giản có kiểm tra số dư
Lớp là cách gom dữ liệu và quy tắc bảo vệ dữ liệu vào một chỗ. Chiếc ví là ví dụ nhỏ
Tiến độ của tôi ở bài này
Điểm và code bạn nộp đượ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: python-basics, python-classes-intro.
Nội dung đề bài
Mô tả bài toán
Lớp là cách gom dữ liệu và quy tắc bảo vệ dữ liệu vào một chỗ. Chiếc ví là ví dụ nhỏ nhất cho thấy vì sao cần đóng gói: số dư chỉ được thay đổi qua nạp và rút, kèm kiểm tra hợp lệ.
Yêu cầu
Cài đặt lớp SimpleWallet với ba thành phần:
- init(self, initial): lưu số dư ban đầu; ném ValueError nếu initial âm.
- deposit(self, amount): cộng tiền vào số dư; ném ValueError nếu amount không dương.
- withdraw(self, amount): trừ tiền khỏi số dư; ném ValueError nếu amount không
dương hoặc lớn hơn số dư hiện tại.
- balance(self): trả về số dư hiện tại.
Quy ước nộp bài
Nộp lớp SimpleWallet trong solution.py. Hệ thống khởi tạo lớp và gọi phương thức trực tiếp, có kiểm tra ngoại lệ ValueError; không dùng stdin/stdout.
Input
Hệ thống khởi tạo lớp bằng initial, sau đó gọi lần lượt các phương thức theo kịch bản của từng bộ test.
Output
Giá trị trả về của từng phương thức, theo đúng thứ tự được gọi. deposit và withdraw trả về None.
Ràng buộc
- initial và mọi amount là số thực.
- Gọi withdraw với số lớn hơn số dư phải ném ValueError, không được để số dư âm.
Ví dụ 1
Input
SimpleWallet(init={"initial": 100}, methods=[{"method": "deposit", "args": [50]}, {"method": "withdraw", "args": [30]}, {"method": "balance"}])
Output
[null, null, 120.0]
Ví dụ 2
Input
SimpleWallet(init={"initial": 0}, methods=[{"method": "balance"}])
Output
[0.0]
Giải thích
Với initial = 100, gọi deposit(50), withdraw(30), balance() thì giá trị cuối cùng là 120.0.
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.
