python分段计费demo
时间:2020-05-30
本文章向大家介绍python分段计费demo,主要包括python分段计费demo使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
根据以下信息提示,请帮小明计算,他每月乘坐地铁支出的总费用
提示信息:
北京公交地铁新票价确定
据北京市发改委网站消息称,北京市将从2015年12月28起实施公共交通新票价:地铁6公里(含)内3元,公交车10公里(含)内2元,使用市政交通一卡通刷卡乘公交车普通卡5折,学生卡2.5折。
具体实施方案如下:
一、城市公共电汽车价格调整为:10公里(含)内2元,10公里以上部分,每增加1元可乘坐5公里。使用市政交通一卡通刷卡乘坐城市公共电汽车,市域内路段给予普通卡5折,学生卡2.5折优惠;市域外路段维持现行折扣优惠不变。享受公交政策的郊区客运价格,由各区、县政府按照城市公共电汽车价格制定。
二、轨道交通价格调整为:6公里(含)内3元;6公里至12公里(含)4元;12公里至22公里(含)5元;22公里至32公里(含)6元;32公里以上部分,每增加1元可乘坐20公里。使用市政交通一卡通刷卡乘坐轨道交通,每自然月内每张卡支出累计满100元以后的乘次,价格给予8折优惠;满150元以后的乘次,价格给予5折优惠;支出累计达到400元以后的乘次,不再享受打折优惠。
要求:
假设每个月,小明都需要上20天班,每次上班需要来回1次,即每天需要乘坐2次同样路线的地铁;每月月初小明第一次刷公交卡时,扣款5元;编写程序,帮小明完成每月乘坐地铁需要的总费用
解答:由题名推断,小明的乘车距离在45-50km区间,这里乘车距离取50来计算。
代码实现如下:
import math from decimal import Decimal def per_cost(distance): ''' 每次乘坐地铁的费用 :param distance: 乘坐距离 :return: 乘坐费用 ''' per_consume = 0 # 累计消费金额 if distance > 32: num = math.ceil((distance - 32) / 20) more = num * 1 per_consume = 6 + more elif distance > 22 and distance >= 32: per_consume = 6 elif distance > 12 and distance >= 22: per_consume = 5 elif distance > 6 and distance >= 12: per_consume = 4 elif distance > 0 and distance >= 6: per_consume = 3 return per_consume if __name__ == '__main__': distance = 50 # 乘坐距离 sum_consume = 0 # 总计消费 for workday in range(1, 21): per_workday_cost = 0 # 每天乘车消费 if sum_consume >= 0 and sum_consume <= 100: per_consume = per_cost(distance) * 1 # 每次乘车费用 per_workday_cost = per_consume * 2 # 每天乘车费用 sum_consume += per_workday_cost # 本月累计乘车费用 # 发生优惠后,消费 # 100元后,折扣0.8 # 150元后,折扣0.5 # 400元后,折扣1 elif sum_consume > 100 and sum_consume <= 150: per_consume = per_cost(distance) * 0.8 per_workday_cost = per_consume * 2 sum_consume += per_workday_cost elif sum_consume > 150 and sum_consume <= 400: per_consume = per_cost(distance) * 0.5 per_workday_cost = per_consume * 2 sum_consume += per_workday_cost elif sum_consume > 400: per_consume = per_cost(distance) * 1 per_workday_cost = per_consume * 2 sum_consume += per_workday_cost print("第%2s天消费:%s。本月累计费用:%s" % ( workday, Decimal(per_workday_cost).quantize(Decimal('0.00')), Decimal(sum_consume).quantize(Decimal('0.00'))) ) print("本月乘车总消费:%s" % sum_consume)
原文地址:https://www.cnblogs.com/andy9468/p/12992811.html
- React多页面应用1(webpack开发环境搭建,包括Babel、热更新等)
- JOJ 2676 Problem B
- React项目配置2(自己封装Ajax)
- React项目配置1(如何管理项目公共js方法)
- c++中stack、queue、vector的用法一、栈(stack)二、队列(queue)三、向量(vector)
- React技巧7(TodoList实现3组件之间传递数据之优化)
- React技巧6(TodoList实现2组件之间传递数据)
- POJ A Knight's Journey
- React技巧5(TodoList实现)
- 求一个数n次方后的末尾数(数论/快速幂)问题描述解题思路代码实现运行结果参考
- Catch That Cow
- React技巧4(如何处理List里面的Item)
- ZOJ 3620 Escape Time II
- React技巧3(如何优雅的渲染一个List)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- java之如何在eclipse中新建对象时自动补全
- mybatis文件映射之当输入的参数不只一个时
- mybatis插件开发初探
- 剑指offer(25-30)题解
- 如何实时迁移MySQL到TcaplusDB
- 如何利用Terraform工具编排管理TcaplusDB
- 如何实时迁移AWS DynamoDB到TcaplusDB
- 腾讯云TcaplusDB基础能力介绍
- 游戏架构上云实战
- 【JUC】CyclicBarrier的了解和使用
- 完美解决-RuntimeError: CUDA error: device-side assert triggered
- springmvc之异常处理SimpleMappingExceptionResolver
- 剑指offer(13-15)题解
- 【leetCode】青蛙跳台问题(这只青蛙会托马斯大旋转)day07
- 【leetCode】斐波那契数列day06