【蓝桥杯OJ】省赛:购物单python实现

题目“购物单”:为填空题。意思很简单,就是给出了一个长长的清单(以下代码中的字符串就是原题样式),要求实现:求这份清单的合计价格,并输出。
逻辑分析:
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

总结:这题考察了字符串的一些函数运用,以及浮点型的知识,难度为简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤米尼克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值