功能要求:(1)生成10条购物记录,每条记录随机选择会员、生成1-10种商品及相应数量(1-10),保存在购物车列表中;(2)计算每条购物车记录的总价,并增加到(1)所得列表中。

某超市会员及商品信息如下所示:

会员列表:{‘0001’:‘张三’, ‘0002’:‘李四’, ‘0003’:‘王五’, ‘0004’:‘赵六’}

商品价格列表:{ ‘手机’:2000, ‘电脑’:3000, ‘手表’:1000, ‘挂钟’:500 ,’衣服’:300, ‘裤子’:700: ,’食品’:30, ‘饮料’:70, ‘水果’:3, ‘蔬菜’:7}。

按照下面指定格式,随机生成该超市会员的单次购物记录列表。

购物记录格式:[会员ID, {‘商品1’:数量1, ‘商品2’:数量2, ‘商品3’:数量3,……} ]

功能要求:

(1)生成10条购物记录,每条记录随机选择会员、生成1-10种商品及相应数量(1-10),保存在购物车列表中;

(2)计算每条购物车记录的总价,并增加到(1)所得列表中。

(3)按商品顺序统计销售次数及总量,并打印输出;

(4)按会员顺序统计购物次数、购买商品种类及数量,并打印输出。

import random, collections, functools, operator
vip_dict = {"0001": "张三", "0002": "李四", "0003": "王五", "0004": "赵六"}
shop_dict = {"手机": 2000, 
             "电脑": 3000, 
             "手表": 1000, 
             "挂钟": 500, 
             "衣服": 300, 
             "裤子": 700, 
             "食品": 2000, 
             "饮料": 70, 
             "水果": 3, 
             "蔬菜": 7}
list_1 = []
shop = []
list_4 = []
name = []  # 生成会员名字空列表
for vip_name in vip_dict:
    name.append(vip_name)  # 生成所有会员名字列表
for shop_name in shop_dict:
    shop.append(shop_name)  # 生成商品名字列表
for i in range(100):  # 随机生成100条购物记录
    x = random.choices(name)  # 随机生成只含一个会员名字的列表
    num = []
    for b in range(10):
        num_1 = random.randint(1, 10)
        num.append(num_1)  # 随机生成含10个随机数字的数量列表
    y = random.choices(shop, k=10)  # 随机生成含10个随机商品的商品列表
    shopping_dict = dict(zip(y, num))  # 数量列表和商品列表合并成字典
    shop_sum = 0
    for key in shopping_dict:
        if key in shop_dict:
            shop_sum += shopping_dict[key] * shop_dict[key]  # 计算购物车记录总价
    x.append(shopping_dict)
    x.append(shop_sum)
    list_1.append(x)  # 将每一条购物记录存入列表list_1中
    print(x)  # 打印每一条购物记录
list_2 = []
for h in range(0, len(list_1)):
    list_2.append(list_1[h][1])  # 取出列表里每一条购物记录中的商品和数量存放至列表list_2中
for k in range(len(list_2)):
    for e in list_2[k]:
        list_4.append(e)  # 取出列表list_2里所有出现的商品种类并存放于列表list_4中
result_3 = dict(collections.Counter(list_4))  # 统计每一件商品销售次数并以字典的形式输出
print(f"各类商品销售次数为:{result_3}")
result_2 = dict(functools.reduce(operator.add, map(collections.Counter, list_2)))  # 把相同商品的数量进行求和
print(f"各类商品销售总量为:{result_2} ")
def mp(y):
    x = 0
    list_3 = []
    for i in range(len(list_1)):
        if list_1[i][0] == y:
            x += 1
            list_3.append(list_1[i][1])   #取出列表里会员y的每一条购物记录存放至列表list_2中
    print(f"{y}的购物次数为{x}次,", end='')
    result_1 = dict(functools.reduce(operator.add, map(collections.Counter, list_3)))  # 把相同商品的数量进行求和
    print(f"购买商品种类及数量为:{result_1} ")
mp("0001")
mp("0002")
mp("0003")
mp("0004")

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风起晨曦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值