双十一是不是被各种满减、优惠券绕晕了?那就来做一个购物攻略
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
以下文章来源于python数据分析之禅 ,作者鸟哥
前言
双十一还有不到10天,购物车已经快加满了,但是钱包里就这么多钱,如何用现有的钱买到更多喜欢的东西,成为我比较头疼的事,因为我已经被各种组合加法搞晕了
于是我决定用python做个双十一购物攻略,把复杂的计算过程交给电脑解决,自动列出能购买哪些商品,成果如下:
下面给大家详细介绍一下实现过程:
首先将要购买的商品及价格放入表格中:
用pandas读取表格,并将商品名称和价格组合成字典:
import pandas as pddata=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 itertoolsgoods1=list(goods_price.keys())
goods2 = []
for i in range(1,len(goods1)+1):
iter = itertools.combinations(goods1,i)
goods2.append(list(iter))
以商品组合为键,价格为值,创建字典
results={}for i in goods2:
for j in i:
sum_price = 0
sum_price+=sum([int(goods_price[k]) for k 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