python制作收费_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 = il((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 # 总计消费
per_workday_cost = 0 # 每天乘车消费改装车出售
for halfday in range(1, 41): # 20个⼯作⽇内共有40次乘车workday = il(halfday / 2) # 第workday个⼯作⽇half_tag = ""
if halfday % 2 != 0:
half_tag = "上午"
else:
half_tag = "下午"
per_consume = 0 # 每次乘车费⽤
if sum_consume >= 0 and sum_consume <= 100:
per_consume = per_cost(distance) * 1 # 每次乘车费⽤sum_consume += per_consume # 本⽉累计乘车费⽤
# 发⽣优惠后,消费
# 100元后,折扣0.8
# 150元后,折扣0.5
# 400元后,折扣1
elif sum_consume > 100 and sum_consume <= 150: per_consume = per_cost(distance) * 0.8
sum_consume += per_consume
elif sum_consume > 150 and sum_consume <= 400: per_consume = per_cost(distance) * 0.5
sum_consume += per_consume
elif sum_consume > 400:
per_consume = per_cost(distance) * 1
sum_consume += per_consume
print("第%2s天 %s 消费:%s。本⽉累计费⽤:%s" % ( workday, half_tag,
Decimal(per_consume).quantize(Decimal('0.00')),
Decimal(sum_consume).quantize(Decimal('0.00'))) )
print("本⽉乘车总消费:%.2f" % sum_consume)
输出:
第 1天 上午 消费:7.00。本⽉累计费⽤:7.00
第 1天 下午 消费:7.00。本⽉累计费⽤:14.00
倒库技巧
第 2天 上午 消费:7.00。本⽉累计费⽤:21.00
第 2天 下午 消费:7.00。本⽉累计费⽤:28.00
第 3天 上午 消费:7.00。本⽉累计费⽤:35.00
第 3天 下午 消费:7.00。本⽉累计费⽤:42.00
第 4天 上午 消费:7.00。本⽉累计费⽤:49.00
第 4天 下午 消费:7.00。本⽉累计费⽤:56.00
福特探险者suv第 5天 上午 消费:7.00。本⽉累计费⽤:63.00
第 5天 下午 消费:7.00。本⽉累计费⽤:70.00
第 6天 上午 消费:7.00。本⽉累计费⽤:77.00
第 6天 下午 消费:7.00。本⽉累计费⽤:84.00
第 7天 上午 消费:7.00。本⽉累计费⽤:91.00
第 7天 下午 消费:7.00。本⽉累计费⽤:98.00
第 8天 上午 消费:7.00。本⽉累计费⽤:105.00
第 8天 下午 消费:5.60。本⽉累计费⽤:110.60
第 9天 上午 消费:5.60。本⽉累计费⽤:116.20
第 9天 下午 消费:5.60。本⽉累计费⽤:121.80
第10天 上午 消费:5.60。本⽉累计费⽤:127.40
第10天 下午 消费:5.60。本⽉累计费⽤:133.00
第11天 上午 消费:5.60。本⽉累计费⽤:138.60
第11天 下午 消费:5.60。本⽉累计费⽤:144.20
第12天 上午 消费:5.60。本⽉累计费⽤:149.80
第12天 下午 消费:5.60。本⽉累计费⽤:155.40
第13天 上午 消费:3.50。本⽉累计费⽤:158.90
第13天 下午 消费:3.50。本⽉累计费⽤:162.40
第14天 上午 消费:3.50。本⽉累计费⽤:165.90
奇瑞x1
第14天 下午 消费:3.50。本⽉累计费⽤:169.40
第15天 上午 消费:3.50。本⽉累计费⽤:172.90
第15天 下午 消费:3.50。本⽉累计费⽤:176.40
第16天 上午 消费:3.50。本⽉累计费⽤:179.90第16天 下午 消费:3.50。本⽉累计费⽤:183.40第17天 上午 消费:3.50。本⽉累计费⽤:186.90第17天 下午 消费:3.50。本⽉累计费⽤:190.40第18天 上午 消费:3.50。本⽉累计费⽤:193.90第18天 下午 消费:3.50。本⽉累计费⽤:197.40第19天 上午 消费:3.50。本⽉累计费⽤:200.90第19天 下午 消费:3.50。本⽉累计费⽤:204.40第20天 上午 消费:3.50。本⽉累计费⽤:207.90第20天 下午 消费:3.50。本⽉累计费⽤:211.40本⽉乘车总消费:211.40