这个练习不是很懂哦

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕念 2021-08-21 10:13:54

同学,你好!可以参考以下的代码和注释理解此练习

# coding:utf-8

class BankAccount(object):
    # 根据题目要求币种都是人民币
    money_type = '人民币'
    # 用字典存储交易详情信息
    account_data = {}
    # 定义字典的键
    count = 1
    # 构造初始化函数balance代表自己手动输入的账户余额
    def __init__(self, balance):
        self.balance = float(balance)
        
    # 定义一个存款方法
    def money_in(self, time, money):
        self.balance += float(money)
        self.time = time
        print('此次存入%.2f元,余额为%.2f' % (float(money), self.balance))
        self.account_data[self.count] = '交易时间:%s  摘要:转入  金额:+%.2f  币种:%s  余额:%.2f' % \
                                        (self.time, float(money), self.money_type, self.balance)
        self.count += 1
        
    # 定义一个取款方法
    def money_out(self, out_type, time, money):
        self.out_type = out_type
        self.time = time
        if float(money) > self.balance:
            print('交易数量大于余额,请重新选择')
            return self.money_out(self.out_type, self.time, input('请输入您需要取出的金额:'))
        else:
            self.balance -= float(money)
            self.time = time
            self.out_type = out_type
            print('此次取出%.2f元,余额为%.2f' % (float(money), self.balance))
            self.account_data[self.count] = '交易时间:%s  摘要:%s  金额:-%.2f  币种:%s  余额:%.2f' % \
                                            (self.time, self.out_type, float(money), self.money_type, self.balance)
            self.count += 1
            
    # 打印交易详情
    def print_details(self):
        # 用字典的items()方法打印出值即交易详情即可
        for k, v in self.account_data.items():
            print(v)

# 创建实例
my_account = BankAccount(balance=input('请输入您的账户余额:'))

# 使用while True一直循环,结合break可结束循环
while True:
    print('感谢选择我行')
    print('1.存款\n2.取款\n3.打印交易详情\n4.结束服务')
    num = input('请问您想使用什么业务:')
    print('=' * 30)
    if num == '1':
        print('您选择了存款业务')
        my_account.money_in(input('请输入交易时间:'), input('请输入您需要存的金额:'))
        print('='*30)
    elif num == '2':
        print('您选择了取款业务')
        my_account.money_out(input('交易方式有网转和消费两种,您选择:'), input('请输入交易时间:'), input('请输入您需要取出的金额:'))
        print('=' * 30)
    elif num == '3':
        print('您选择了打印交易详情')
        my_account.print_details()
        print('=' * 30)
    elif num == '4':
        print('感谢您的使用,期待下次见面!')
        break
    else:
        print('输入有误,请重新输入')
        print('=' * 30)

若还有问题,欢迎继续提问,祝学习愉快!

  • 提问者 吴老师在线叛逃 #1

    http://img1.sycdn.imooc.com//climg/6122373b091441c904720105.jpg这个是什么意思啊

    2021-08-22 19:38:48
  • 同学,你好!

    ​float(balance)是将类实例化时输入的参数(balance)转化为浮点类型,如下图:

    http://img1.sycdn.imooc.com//climg/6122fde309615c5308470420.jpg

    祝学习愉快~

    2021-08-23 09:48:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师