双十一是不是被各种满减、优惠券绕晕了?那就来做一个购物攻略

python

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于python数据分析之禅 ,作者鸟哥

前言

双十一还有不到10天,购物车已经快加满了,但是钱包里就这么多钱,如何用现有的钱买到更多喜欢的东西,成为我比较头疼的事,因为我已经被各种组合加法搞晕了

 

于是我决定用python做个双十一购物攻略,把复杂的计算过程交给电脑解决,自动列出能购买哪些商品,成果如下:

 

下面给大家详细介绍一下实现过程:

 

首先将要购买的商品及价格放入表格中:

 

用pandas读取表格,并将商品名称和价格组合成字典:

import pandas as pd

data=pd.read_excel("商品.xlsx")

goods_price={}

for i,j in zip(list(data["名称"]),list(data["原价"])):

    goods_price[i]=j

goods_price

{"训练短袖": 259,

"训练外套": 589,

"运动鞋": 389,

"跑步鞋": 788,

"卫衣": 209,

"台灯": 119,

"书籍": 246}

计算商品总价和折扣情况并输出

all_price=sum([int(goods_price[good]) for good in list(goods_price.keys())])  #求商品总价格

all_discount=int(all_price/300)

print("全部商品原价总额为{}元".format(all_price))

print("全部商品可以满减{0}次".format(all_discount))

print("满减后商品价格总额为{}元".format(all_price-40*all_discount))   #每满300减40

全部商品原价总额为2599元

全部商品可以满减8次

满减后商品价格总额为2279元

输入购买力

money_max=int(input("请输入购买最大金额:"))

money_min=int(input("请输入购买最小金额:"))

对所有商品进行组合

import itertools

goods1=list(goods_price.keys())

goods2 = []

for i in range(1,len(goods1)+1):

    iter = itertools.combinations(goods1,i)

    goods2.append(list(iter))

 

以商品组合为键,价格为值,创建字典

results={}

for in goods2:

    for in i:

        sum_price 0

        sum_price+=sum([int(goods_price[k]) for in j])

        results[j]=sum_price

 

输出满足条件的满减商品

for i in list(results.keys()):

    last_price=results[i]-int(results[i]/300)*40

    if last_price>money_min and last_price<money_max:

        print("{0:{3}^20} {1:{3}^10} {2:^10}".format(" ".join(i), "原价为{}元".format(results[i]),

                                                       "满减后价格为{}元".format(last_price),chr(12288)))

 

最终的成果如下图:

以上是 双十一是不是被各种满减、优惠券绕晕了?那就来做一个购物攻略 的全部内容, 来源链接: utcz.com/z/531049.html

回到顶部