ICA 式 · 4 关 · 约 90 分钟 · 不可用 AI
银行账本
存取款与转账 → 支出排行 → 定时转账与取消 → 账户合并与历史余额。四关递进,后面的关卡沿用前面的数据结构。
实现一个内存银行账本:src/ledger.py 里的 Ledger 类。每个方法的第一个参数都是 timestamp,是一个整数,每次调用都严格大于上一次。金额是正整数,账户 id 是非空字符串。
| 方法 | 返回 |
|---|---|
open_account(timestamp, account_id) | 新开一个余额为 0 的账户,返回 True;id 已存在返回 False |
deposit(timestamp, account_id, amount) | 存入后的余额;账户不存在返回 None |
withdraw(timestamp, account_id, amount) | 取出后的余额;账户不存在或余额不足 amount 返回 None |
transfer(timestamp, source_id, target_id, amount) | 转出方的新余额;任一账户不存在、两个 id 相同或转出方余额不足 amount 时返回 None |
返回 None 或 False 的调用不改变任何状态。
本关的公开测试是 tests/test_level1.py,评测时还会跑隐藏测试。全部通过后解锁第 2 关。类里后面几关的方法先保留着,说明会随关卡给出。
登录后运行测试,通过一关就解锁下一关。