小明每月乘坐地铁支出的总费用

具体方案实施如下:

一、城市公共电汽车价格调整为: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元;编写程序,帮小明完成每月乘坐地铁需要的总费用

代码如下:

 

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 # 总计消费

per_workday_cost = 0 # 每天乘车消费

for halfday in range(1, 41): # 20个工作日内共有40次乘车

workday = math.ceil(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)

 本月乘车总消费:211.40

 

上一篇:Python中使用if...elif...else语句对代码执行进行分支


下一篇:python中多个if与多个elif使用区别详解