使用装饰器实现购物车的日志记录

# __author: xy
# __data: 2020/9/29
import time

choice_car = {}
moneys = 90000
money = 0
re = moneys
li = [
    ('bike', 900),
    ('fly', 800),
    ('car', 900)

]


def inital_vale():
    for i, v in enumerate(li, 0):
        m, n = v
        print(i, m, n)

    return True


def buy_log(f):
    def print_log(m, choice={}):
        with open('buy.log', 'a') as shopping:
            shopping.write(time.strftime('%Y-%m-%d %H-%M-%S') + '\n')
            for ch in choice:
                x, y = choice[ch]
                shopping.write('货号:' + ch + '--' + '单价:' + str(x) + '--' + '数量:' + str(y) + '\n')
            f(choice)
            shopping.write('余额:' + str(m) + '\n')
            shopping.write(time.strftime('%Y-%m-%d %H-%M-%S') + '\n')

    return print_log


@buy_log
def buy(m, choice={}):
    choice.clear()

    return True


def car(*args):
    global choice_car, moneys
    while True:
        a = 0
        global re
        inital_vale()
        choice = input('请输入商品的编号(q退出j结算):')
        if choice.isdigit() and int(choice) < len(li):
            num = input('请输入需要的数量:')
            if num.isdigit():
                x, y = li[int(choice)]
                print("你选择的结果:", x, y, num, int(num) * y)
                print(x, [y, int(num)])
                choice_car.update(dict(((x, (y, int(num))),)))
                # print(choice_car)
                for item in choice_car.items():
                    print('商品金额:', item[0], num, item[1][0] * item[1][1])
                    a += item[1][0] * item[1][1]
                re = moneys - a
                print('商品总额:', a)
                print('账户余额:', re)
            else:
                print('请输入整数!')
        elif choice == 'j':
            if re >= 0:
                moneys = re
                buy(moneys, choice_car)
                choice_car.clear()
                print('购买成功,你的账户余额是:', moneys)
                continue
            else:
                recharge = input('账户余额不足{re},请充值!'.format(re=re))
                re += int(recharge)
                print('账户余额:', re)
                continue
        elif choice == 'q':
            break
        else:
            print('你输入的信息不存在,请重新输入!')
    return True


if __name__ == '__main__':
    car(re)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值