题目“购物单”:为填空题。意思很简单,就是给出了一个长长的清单(以下代码中的字符串就是原题样式),要求实现:求这份清单的合计价格,并输出。
逻辑分析:
1.总思路就是各行左边的价格各乘以右边的折扣再相加
2.把清单的各行放入一个列表中,每行是一个元素
3.把价格和折扣各放在两个等长的列表中(注意折扣的格式不一需用if多次判断规整)
4.两个列表的对应元素相乘再求和
捷径做法:
1.因为是填空题,可用计算器手算。
2.在处理折扣格式的时候可以手动更改一些,避免使用if
上代码:
stri="""
**** 180.90 88折
**** 10.25 65折
**** 56.14 9折
**** 104.65 9折
**** 100.30 88折
**** 297.15 半价
**** 26.75 65折
**** 130.62 半价
**** 240.28 58折
**** 270.62 8折
**** 115.87 88折
**** 247.34 95折
**** 73.21 9折
**** 101.00 半价
**** 79.54 半价
**** 278.44 7折
**** 199.26 半价
**** 12.97 9折
**** 166.30 78折
**** 125.50 58折
**** 84.98 9折
**** 113.35 68折
**** 166.57 半价
**** 42.56 9折
**** 81.90 95折
**** 131.78 8折
**** 255.89 78折
**** 109.17 9折
**** 146.69 68折
**** 139.33 65折
**** 141.16 78折
**** 154.74 8折
**** 59.42 8折
**** 85.44 68折
**** 293.70 88折
**** 261.79 65折
**** 11.30 88折
**** 268.27 58折
**** 128.29 88折
**** 251.03 8折
**** 208.39 75折
**** 128.88 75折
**** 62.06 9折
**** 225.87 75折
**** 12.89 75折
**** 34.28 75折
**** 62.16 58折
**** 129.12 半价
**** 218.37 半价
**** 289.69 8折
"""
a=stri.replace('\n',',')
b=a.replace('*','')
c=b.strip(',').split(',') #格式化后的总列表
princ=[] #价格
zhe=[] #折扣
for i in range(len(c)):
temp=c[i]
a=temp.replace(' ',' ')[:10]
b=a.replace(' ','')
princ.append(float(b)) #格式化并提取出所有价格
for i in range(len(c)):
temp=c[i]
a=temp.replace(' ',' ')[10:17]
b=a.replace(' ','')
d=b.replace("折",'')
if len(d)==2 and d!='半价':
zhe.append(float(d)/100)
elif len(d)==1:
zhe.append(float(d)/10)
elif d=='半价':
zhe.append(0.5) #格式化并提取出所有折扣
result=0.0
for i in range(len(princ)): #最后一步,累加
result=result+princ[i]*zhe[i] #这里在编译器上可看见result=5136.859500000001
print(5200) #结合题目要求,直接输出5200
总结:这题考察了字符串的一些函数运用,以及浮点型的知识,难度为简单。