Python账户类与数据结构实践

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 类进行以下修改,以实现交易历史记录功能:

  1. 添加交易历史记录功能
    - 使用列表实现交易历史记录

  2. 交易定义
    - 交易由包含以下内容的类定义:

    • 操作(存款或取款)
    • 金额
  3. 记录交易
    - 每次进行存款或取款操作时:

    • 创建新的交易记录
    • 将其添加到交易历史列表中
  4. 初始金额处理
    - 账户初始金额视为初始存款
    - 应创建对应的交易记录作为历史中的第一条

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既参加了考试又提交了项目。

37、使用集合(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值