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购物单内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解解决jupyter不能使用pytorch的问题

    详解解决jupyter不能使用pytorch的问题

    这篇文章主要介绍了详解解决jupyter不能使用pytorch的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 实例讲解Python3中abs()函数

    实例讲解Python3中abs()函数

    在本篇文章里小编给大家分享了关于Python3中abs()函数的相关知识点内容,需要的朋友们跟着学习下。
    2019-02-02
  • pytest配置文件pytest.ini的详细使用

    pytest配置文件pytest.ini的详细使用

    这篇文章主要介绍了pytest配置文件pytest.ini的详细使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python抽象和自定义类定义与用法示例

    Python抽象和自定义类定义与用法示例

    这篇文章主要介绍了Python抽象和自定义类定义与用法,结合实例形式分析了Python抽象方法、抽象类相关功能、定义、用法及相关操作注意事项,需要的朋友可以参考下
    2018-08-08
  • python内置函数anext的具体使用

    python内置函数anext的具体使用

    本文主要介绍了python内置函数anext的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Python创建普通菜单示例【基于win32ui模块】

    Python创建普通菜单示例【基于win32ui模块】

    这篇文章主要介绍了Python创建普通菜单,结合实例形式分析了Python基于win32ui模块创建普通菜单及添加菜单项的相关操作技巧,并附带说明了win32ui模块的安装命令,需要的朋友可以参考下
    2018-05-05
  • python实现可下载音乐的音乐播放器

    python实现可下载音乐的音乐播放器

    这篇文章主要为大家详细介绍了python实现可下载音乐的音乐播放器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Python连接MySQL数据库的简单便捷方法

    Python连接MySQL数据库的简单便捷方法

    在数据分析过程中往往要操作较大的数据集,这就需要连接数据库进行操作,下面这篇文章主要给大家介绍了关于Python连接MySQL数据库的简单便捷方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 详解python Todo清单实战

    详解python Todo清单实战

    这篇文章主要介绍了详解python Todo清单实战,需要实现的功能有添加任务、删除任务、编辑任务,操作要关联数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python使用pymysql小技巧

    Python使用pymysql小技巧

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。
    2017-06-06

最新评论