33、回到你的账户相关类。修改 Account 类,使其实现上下文管理器协议。这意味着你需要实现 enter () 和 exit () 方法。在这些方法中添加打印消息,以便你能看到它们何时被执行。你定义的新方法将被你创建的每个子类继承,即 CurrentAccount、DepositAccount 和 InvestmentAccount。现在使用以下代码测试你修改后的程序:with accounts.CurrentAccount (‘891’, ‘Adam’, 5.0, 50.0) as acc: acc.deposit(23.0) acc.withdraw(12.33) print(acc.balance)。假设 Account 类有 deposit 和 withdraw 方法,CurrentAccount 是 Account 的子类,并且有对应的初始化方法。
class Account:
def __enter__(self):
print("Creating new Account")
print("__enter__ 15.5")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print(f"__exit__: ({exc_type}, {exc_val}, {exc_tb})")
34、你应该修改你的 Account 类,使其能够记录交易历史。交易是指包含存款或取款以及金额的记录。请注意,账户中的初始金额可以视为初始存款。交易历史可以实现为一个包含有序交易序列的列表。交易本身可以由一个包含操作(存款或取款)和金额的类来定义。每次进行取款或存款时,都应将新的交易记录添加到交易历史列表中。
Account 类修改说明
对 Account 类进行以下修改,以实现交易历史记录功能:
-
添加交易历史记录功能
- 使用列表实现交易历史记录 -
交易定义
- 交易由包含以下内容的类定义:- 操作(存款或取款)
- 金额
-
记录交易
- 每次进行存款或取款操作时:- 创建新的交易记录
- 将其添加到交易历史列表中
-
初始金额处理
- 账户初始金额视为初始存款
- 应创建对应的交易记录作为历史中的第一条
35、现在要支持遍历账户的交易历史,以便可以查看每一笔存款或取款记录。你可以通过实现可迭代协议来完成此操作。请注意,我们要能够遍历的是交易历史,所以你可以使用历史列表作为可迭代对象的基础。在你的账户应用程序末尾,你应该能够运行以下代码:for transaction in acc1: print(transaction)。根据你实际进行的交易(存款和取款),你应该会看到这些交易记录被打印出来,例如:Transaction[deposit: 10.05] Transaction[deposit: 23.45] Transaction[withdraw: 12.33]
需要在账户类中实现可迭代协议,以支持遍历交易历史。可将交易历史存储在一个列表中,让账户类实现 __iter__ 方法,使其返回一个迭代器,从而可以使用 for 循环遍历交易历史。
36、创建两组学生集合,一组是参加考试的学生,另一组是提交项目的学生。使用简单字符串表示学生,如:设置集合 exam = {‘Andrew’, ‘Kirsty’, ‘Beth’, ‘Emily’, ‘Sue’} ,project = {‘Kirsty’, ‘Emily’, ‘Ian’, ‘Stuart’} 。利用这些集合回答以下问题:哪些学生既参加了考试又提交了项目?
Kirsty和Emily既参加了考试又提交了项目。


438

被折叠的 条评论
为什么被折叠?



