Python练习-购物单

 更新时间:2022年01月23日 08:36:41   作者:是Dream呀      
这篇文章主要介绍了Python练习-购物单,下文主要以举例说明从问题描述开始,以及解题思路展开文章内容,作为日常学习小练习,需要的小伙伴可以参考一下

一、题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。

这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。

小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。

现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。

取款机只能提供 100 元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。

以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。

****     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折

需要说明的是,8888 折指的是按标价的 88%88 计算,而 88 折是按 80%80 计算,余者类推。 特别地,半价是按 50%50 计算。

请输出小明要从取款机上提取的金额,单位是元。

运行限制:

最大运行时间:1s
最大运行内存: 128M

二、解题思路

  • data = data.split()将data按空格进行拆分,把给出来的data放入列表中,进行循环遍历取值
  • 价格price转化为浮点数用于计算,折扣discount先保持字符串类型不变,让其去匹配对应的值
  • 当discount为两位长度时,当其为‘半价’,discount等于0.5,反之取其数字部分,将对应数字部分字符串进行强制转化浮点数乘以对应的小数点,float(discount[0])*0.1
  • 不是两位长度时,就是三位长度,此时数字部分对应的字符串部分为两位。也就是说强制转化为浮点数后的数字部分是一个两位数,也就是对应的小数点应该向前移动两位。float(discount[0:2])*0.01
  • 最后要算其需要的纸币100元是多少,也就是求出来的总和sum整除100之后再加一个1就是一共需要带的100元的数量,然后通过浮点数进行输出就可以啦!

三、源码分享

import math
data = '''
****     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折
'''
data = data.split()
sum = 0
for i in range(0,len(data),3):
    price = float(data[i+1])
    discount = data[i+2]
    if len(discount) == 2:
        if discount == '半价':
            discount = 0.5
        else:
            discount = float(discount[0])*0.1
    else:
        discount = float(discount[0:2])*0.01
    sum += price*discount
print('%.0f'%(((sum//100)+1)*100))

四、学习总结

data = data.split() 语法将字符串按照空格进行分割:

a = '1 213 31'
print(a.split())
# ['1', '213', '31']

列表切片:[1:3]左闭右开,[:-1]表示除了最后一个其余的全都取:

a = [2,3,4,5,6]
print(a[0:1])
print(a[:-1])
# [2]
# [2, 3, 4, 5]

到此这篇关于Python练习-购物单的文章就介绍到这了,更多相关Python购物单内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现外星人去哪了小游戏详细代码

    Python实现外星人去哪了小游戏详细代码

    今天为大家带来一款小游戏,名叫外星人去哪了,用Python语言实现完成,代码简洁易懂,感兴趣的小伙伴快来看看吧
    2022-03-03
  • Python中的基本数据类型讲解

    Python中的基本数据类型讲解

    这篇文章介绍了Python中的基本数据类型,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Python连接mysql方法及常用参数

    Python连接mysql方法及常用参数

    这篇文章主要介绍了Python连接mysql方法及常用参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Python 并行化执行详细解析

    Python 并行化执行详细解析

    这篇文章主要介绍了Python 并行化执行详细解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-07-07
  • TensorFlow实现Logistic回归

    TensorFlow实现Logistic回归

    这篇文章主要为大家详细介绍了TensorFlow实现Logistic回归的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • 使用pandas的DataFrame的plot方法绘制图像的实例

    使用pandas的DataFrame的plot方法绘制图像的实例

    今天小编就为大家分享一篇使用pandas的DataFrame的plot方法绘制图像的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 详解python logging日志传输

    详解python logging日志传输

    这篇文章主要介绍了python logging日志传输的相关资料,文中讲解非常详细,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 500行python代码实现飞机大战

    500行python代码实现飞机大战

    这篇文章主要为大家详细介绍了500行python代码实现飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • Django forms表单 select下拉框的传值实例

    Django forms表单 select下拉框的传值实例

    今天小编就为大家分享一篇Django forms表单 select下拉框的传值实例。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python BytesIO 中 read 用法示例详解

    python BytesIO 中 read 用法示例详解

    这篇文章主要介绍了python BytesIO 中 read 用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06

最新评论