码迷,mamicode.com
首页 > 编程语言 > 详细

python分段计费demo

时间:2020-05-30 15:43:30      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:计费   卡通   汽车   区间   for   def   一卡通   mat   ant   

根据以下信息提示,请帮小明计算,他每月乘坐地铁支出的总费用
提示信息:
北京公交地铁新票价确定
据北京市发改委网站消息称,北京市将从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)

  

输出:

第 1天消费:14.00。本月累计费用:14.00
第 2天消费:14.00。本月累计费用:28.00
第 3天消费:14.00。本月累计费用:42.00
第 4天消费:14.00。本月累计费用:56.00
第 5天消费:14.00。本月累计费用:70.00
第 6天消费:14.00。本月累计费用:84.00
第 7天消费:14.00。本月累计费用:98.00
第 8天消费:14.00。本月累计费用:112.00
第 9天消费:11.20。本月累计费用:123.20
第10天消费:11.20。本月累计费用:134.40
第11天消费:11.20。本月累计费用:145.60
第12天消费:11.20。本月累计费用:156.80
第13天消费:7.00。本月累计费用:163.80
第14天消费:7.00。本月累计费用:170.80
第15天消费:7.00。本月累计费用:177.80
第16天消费:7.00。本月累计费用:184.80
第17天消费:7.00。本月累计费用:191.80
第18天消费:7.00。本月累计费用:198.80
第19天消费:7.00。本月累计费用:205.80
第20天消费:7.00。本月累计费用:212.80
本月乘车总消费:212.80

python分段计费demo

标签:计费   卡通   汽车   区间   for   def   一卡通   mat   ant   

原文地址:https://www.cnblogs.com/andy9468/p/12992811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!