"""
标题: 购物单
小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。
老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。
这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。
取款机只能提供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折
需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。
特别地,半价是按50%计算。
请提交小明要从取款机上提取的金额,单位是元。
答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。
特别提醒:不许携带计算器入场,也不能打开手机。
"""
import math
from fnmatch import fnmatchcase as match
"""
这个求解方式很装逼,
但是,
蓝桥杯不允许导入第三方库,
又但是,
蓝桥杯是可以用python的标准库的,
math是python标准库可以用,fnmatch我上网查貌似也是python的标准库。
我不确定,有兴趣的小伙伴们可以取查一下。
所以大家知道导库解决更容易就行了。
实锤:
fnmatch.fnmatchcase(filename, pattern)
Test whether filename matches pattern, returning True or False;
the comparison is case-sensitive and does not apply os.path.normcase().
官方文档可查,fnmatch也是python标准库,蓝桥可以使用。
本题完全可以使用这种方法。
此外,
本方法也可以不加库,
把match(new_line[-1], '?折')改为new_line[-1]去掉'折'后判断剩余new_line[-1]字符串的长度,
为1则 time = int(new_line[-1][:-1]) * 0.1
为2则 time = int(new_line[-1][:-1]) * 0.01
普通应试解法参考链接:
https://blog.csdn.net/qq_31910669/article/details/103641497
在目录中选购物单即为本题目应试解法。
此方法需要用记事本先对数据进行格式化处理。
"""
def get_prices(file_name):
prices = 0
with open(file_name, mode='rt', encoding='utf-8') as f:
info = f.readlines()
for line in info:
new_line = line.split()
time = 0
if new_line[-1] == '半价':
time = 0.5
elif match(new_line[-1], '?折'):
time = int(new_line[-1][:-1]) * 0.1
elif match(new_line[-1], '*折'):
time = int(new_line[-1][:-1]) * 0.01
prices += float(new_line[1]) * time
return math.ceil(prices / 100) * 100
if __name__ == '__main__':
print(get_prices('../数据/com_info')) # 5200
"""
注释:
1. fnmatch模块
fnmatch模块下的fnmatchcase方法
fnmatchcase(匹配目标字符串, 需要匹配的通配符字符串)
* 匹配多个
? 匹配一个
可以匹配返回True
否则返回False
2. math模块(math库蓝桥考试可以用,属于python的标准库)
math模块下的ceil(x)方法:向上取整,x为500.45则返回501
math模块下的floor(x)方法:向下取整,x为500.45则返回500
"""

manylinux
- 粉丝: 4788
- 资源: 2900
最新资源
- C++算法竞赛中的蓝桥杯典型试题详解及编程实战技巧
- 某站价值3000的仿SOUL社交友附近人婚恋约仿陌陌APP源码系统.zip
- 鱼皮SpringBoot后端万能框架
- ISO 14229-1-2020-诊断服务UDS-包含UDS29.pdf
- 基于星闪技术的应急救援设备
- docker+逆向实现小红书帖子的爬取
- xianhc_ape-volo-admin_1742202269.zip
- 互联网技术_博客系统_手动搭建_后台管理_1742204806.zip
- 图书管理_DjangoRestFramework_Vue_前_1742200550.zip
- budwk_budwk_1742204727.zip
- 前端_VUE_物资管理_管理系统_1742202979.zip
- 博客系统_SpringBoot_Vue_学习交流_实战项目_1742205063.zip
- 电信数据分析_Django_异步任务_实时监控平台_1742199010.zip
- 后台管理_Go_Gin_JWT_RBAC系统框架_1742203939.zip
- 前端开发_Vue_ElementUI_管理平台ACP_Adm_1742208176.zip
- 餐饮服务_uniapp_奶茶点餐_微信小程序_SpringB_1742202973.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


