鱼C论坛

 找回密码
 立即注册
查看: 752|回复: 7

[已解决]python营销应用

[复制链接]
发表于 2020-5-13 22:40:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
已知:现有商品清单为: goods={'01':'牛奶','02':'橙汁','03':'酸奶','04':'啤酒','05':'牙膏','06':'牙刷','07':'洗发水'}
顾客1购买清单为:set1={'01','02','05','06','07'}
顾客2购买清单为:set2={'01','05','07'}
顾客3购买清单为:set3={'01','02','05','06'}
编程统计商品的销售情况:(1)有人购买的商品(2)无人购买的商品(3)每个人都购买的商品,输出统计后的商品列表。
最佳答案
2020-5-14 10:38:00
billcount = 0
goods = {'01': {'name':'牛奶', 'saleQty':0}, '02': {'name':'橙汁', 'saleQty':0}, '03': {'name':'酸奶', 'saleQty':0}, \
         '04': {'name':'啤酒', 'saleQty':0}, '05': {'name':'牙膏', 'saleQty':0}, '06': {'name':'牙刷', 'saleQty':0}, \
         '07': {'name':'洗发水', 'saleQty':0}}

def buy(set):
    global billcount    #global  关键字功能:访问的是全局billcount
    billcount+=1
    
    for x in set:
        goods[x]['saleQty']+=1


def main():
    
    set1 = {'01', '02', '05', '06', '07'}
    set2 = {'01', '05', '07'}
    set3 = {'01', '02', '05', '06'}
    buy(set1)
    buy(set2)
    buy(set3)
    lis1 = list(goods[x]['name'] for x in goods if goods[x]['saleQty']>0) #有人购买的商品
    print('有人购买的商品:%',lis1)
    lis2 = list(goods[x]['name'] for x in goods if goods[x]['saleQty']==0) #无人购买的商品
    print('无人购买的商品:%',lis2)
    lis3 = list(goods[x]['name'] for x in goods if goods[x]['saleQty']==billcount) #每人人购买的商品
    print('每人人购买的商品:%',lis3)

if __name__ == '__main__':
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-13 23:00:07 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-14 00:01 编辑

解释都写在代码的注释里了,求个最佳答案吧!
def buy(goods, set):
    listing = {}  # 初始化字典做为清单
    for g in goods.values():
        listing[g] = 0  # 将各种商品添加到清单中去,0代表没人购买
    for i in set:  # 遍历顾客清单
        listing[goods[i]] += 1  # 客户购买的商品,数量代表有几个客户购买了
    return listing


if __name__ == '__main__':
    goods = {'01': '牛奶', '02': '橙汁', '03': '酸奶', '04': '啤酒', '05': '牙膏', '06': '牙刷', '07': '洗发水'}
    set1 = {'01', '02', '05', '06', '07'}
    set2 = {'01', '05', '07'}
    set3 = {'01', '02', '05', '06'}
    result = buy(goods, list(set1)+list(set2)+list(set3))  # 合并三个顾客所有的清单,进行统计商品被购买的次数
    # 不能用集合的合并'|',因为集合是不重复的,这样就无法统计次数了
    print(result)  # 打印结果清单
    # 最后只要大于0就是有人购买的商品,反之0是没人购买的商品,等于3的商品是大家都有去购买的,等于2是只有两个顾客去购买
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 10:38:00 | 显示全部楼层    本楼为最佳答案   
billcount = 0
goods = {'01': {'name':'牛奶', 'saleQty':0}, '02': {'name':'橙汁', 'saleQty':0}, '03': {'name':'酸奶', 'saleQty':0}, \
         '04': {'name':'啤酒', 'saleQty':0}, '05': {'name':'牙膏', 'saleQty':0}, '06': {'name':'牙刷', 'saleQty':0}, \
         '07': {'name':'洗发水', 'saleQty':0}}

def buy(set):
    global billcount    #global  关键字功能:访问的是全局billcount
    billcount+=1
    
    for x in set:
        goods[x]['saleQty']+=1


def main():
    
    set1 = {'01', '02', '05', '06', '07'}
    set2 = {'01', '05', '07'}
    set3 = {'01', '02', '05', '06'}
    buy(set1)
    buy(set2)
    buy(set3)
    lis1 = list(goods[x]['name'] for x in goods if goods[x]['saleQty']>0) #有人购买的商品
    print('有人购买的商品:%',lis1)
    lis2 = list(goods[x]['name'] for x in goods if goods[x]['saleQty']==0) #无人购买的商品
    print('无人购买的商品:%',lis2)
    lis3 = list(goods[x]['name'] for x in goods if goods[x]['saleQty']==billcount) #每人人购买的商品
    print('每人人购买的商品:%',lis3)

if __name__ == '__main__':
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 13:24:19 | 显示全部楼层
Twilight6 发表于 2020-5-13 23:00
解释都写在代码的注释里了,求个最佳答案吧!

你这个好,可扩展
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 13:25:10 | 显示全部楼层
rsj0315 发表于 2020-5-15 13:24
你这个好,可扩展

可惜最佳不是我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 13:29:21 | 显示全部楼层

快去回我的贴,我给你最佳

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
Twilight6 + 1 + 1 你的好意我心领了,不过还是要遵守论坛规则.

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 13:32:24 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-15 13:39 编辑
rsj0315 发表于 2020-5-15 13:29
快去回我的贴,我给你最佳


哈哈 不能这样的  算刷最佳 要严格遵守论坛规则,你的帖子我还不会,没办法解答哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-30 10:45:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 00:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表