提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
题目:
有一份长长的购物清单(购物清单.txt),格式如下; 以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。假设只允许用现金购买,那么应最少准备多少张100元的钞票(5200)
--------------------
**** 180.90 88折
**** 10.25 65折
**** 56.14 9折
**** 104.65 9折
…
**** 289.69 8折
测试准备:购物清单.txt
代码:
import re
fpath = "购物清单.txt"
with open(fpath,'r',encoding='utf-8') as f:
countprice=0
for contents in f:
#将* 折全部替换为空,也将\ufeff间隔符替换为空
pricelines = re.sub("[*\ufeff折]","",contents)
#将半价替换为5,相当于5折 方便统一计算
pricelines = pricelines.replace("半价","5")
#删除前后空格
pricelines = pricelines.strip()
#按中部空格分隔,返回list
pricelines = pricelines.split()
if pricelines:
#根据题意,我们知道,后面是为打折数目
#8折 处理掉折 就只有8这个字符
#所以此时是一个位数len之后 为1
#根据条件判断除以100 还是除以10
#然后就出来了当前物品的打折之后的价格
if len(pricelines[1]) == 1:
countprice+=float(pricelines[1])*float(pricelines[0])/10
else:
countprice+=float(pricelines[1])*float(pricelines[0])/100
#打印一共需要多少钱
print("一共需要{:.2f}元".format(countprice))
temp = int(countprice)%100
#不能整除的话,需要在原来的基础上加一张100元
#例如5363肯定需要54张才够呀
if temp != 0 :
print("一共需要{}张100元".format(int(countprice//100) +1))
else:
print("一共需要{}张100元".format(int(countprice//100)) )