• 北京地铁月度消费总金额计算(Python版)


      最近业余时间在学习Python,这是那天坐地铁时突发奇想,想看看我这一个月的地铁费共多少钱,所以简单的构思了下思路,就直接开写了,没想到用Python来实现还挺简单的。    

    设计思路:

      每次乘车正常消费7元,每天乘车2次,每月工作日乘车22天。

      每月乘车总金额超过100元,下次乘车票价的8折

      每月乘车总金额超过150元,下次乘车票价的5折

      每月乘车总金额超过400元,下次乘车不打折

    代码:

     1 # _*_coding=utf-8 _*_
     2 __author__ = 'Xue'
     3  
     4  
     5 '''
     6 计算北京地铁每月乘车票价总金额
     7 version 1.0
     8 默认:每次乘车x元,每天乘车2次,每月乘车22天
     9  
    10 每月乘车总金额超过100元,下次乘车票价的8折
    11 每月乘车总金额超过150元,下次乘车票价的5折
    12 每月乘车总金额超过400元,下次乘车不打折
    13  
    14 '''
    15  
    16 def way():
    17     dayMoney=int(raw_input("请输入您单次乘车正常票价(单位:元):"))
    18     dayTime=raw_input("请输入您每天乘车次数(默认2次):")
    19     dayMonth=raw_input("请输入您每月乘车天数(默认22天):")
    20     dayAllMoney=0.0 #当月乘车总金额
    21  
    22     #统计各阶段乘车的钱数和次数和
    23     m100=0.0
    24     m150=0.0
    25     m400=0.0
    26     mmax=0.0
    27     t100=0
    28     t150=0
    29     t400=0
    30     tmax=0
    31  
    32     if dayTime=='':
    33         dayTime=2
    34     else:
    35         dayTime=int(dayTime)  #格式转换
    36  
    37     if dayMonth=='':
    38         dayMonth=22
    39     else:
    40         dayMonth=int(dayMonth) #格式转换
    41  
    42     dayMonthTime=dayTime*dayMonth #每月总乘车次数
    43     dayNowTime=0  #乘车次数记录
    44  
    45     while dayNowTime<=dayMonthTime:
    46  
    47         if dayAllMoney<=100.0: #总金额小等于100元时,按正常票价收费
    48             dayAllMoney+=dayMoney
    49             m100+=dayMoney
    50             t100+=1
    51         elif dayAllMoney<=150.0:  #总金额小等于150时,按正常票价的8折收费
    52             dayAllMoney+=dayMoney*0.8
    53             m150+=dayMoney*0.8
    54             t150+=1
    55         elif dayAllMoney<=400.0: #总金额小等于400时,按正常票价的5折收费
    56             dayAllMoney+=dayMoney*0.5
    57             m400+=dayMoney*0.5
    58             t400+=1
    59         else :  #总金额超过400元,按正常票价收费
    60             dayAllMoney+=dayMoney
    61             mmax+=dayMoney
    62             tmax+=1
    63  
    64  
    65         dayNowTime+=1 #乘车次数++
    66  
    67     return (dayMonth,dayTime,dayMoney,dayAllMoney,m100,t100,m150,t150,m400,t400,mmax,tmax)
    68  
    69  
    70 if __name__== '__main__':
    71     (dm,dt,dy,dam,m100,t100,m150,t150,m400,t400,mmax,tmax)= way()
    72  
    73     print("
    ")
    74     print ("您该月共乘坐北京地铁 {0} 天,每天 {1} 次,单次乘车消费{2}元,共消费 {3:.2f} 元。".format(dm,dt,dy,dam))
    75     print("
    ")
    76     print("月总消费额度100元阶段内: 共乘坐 {0} 次,阶段消费 {1:.2f} 元,共计 {2:.2f} 元。".format(t100,m100,m100))
    77     print("月总消费额度150元阶段内: 共乘坐 {0} 次,阶段消费 {1:.2f} 元,共计 {2:.2f} 元。".format(t150,m150,m100+m150))
    78     print("月总消费额度400元阶段内: 共乘坐 {0} 次,阶段消费 {1:.2f} 元,共计 {2:.2f} 元。".format(t400,m400,m100+m150+m400))
    79     print("月总消费额度超过400元阶段内: 共乘坐 {0} 次,阶段消费 {1:.2f} 元,共计 {2:.2f} 元。".format(tmax,mmax,m100+m150+m400+mmax))
    80     print("
    ")

    测试结果:

  • 相关阅读:
    Oracle11g客户端安装记要202011+Navicat Premium 连接Oracle 数据库
    设计模式之 ==> 观察者计模式
    设计模式之 ==> 责任链计模式
    一个.NET Core下的开源插件框架
    JavaScript判断文件是否为UTF-8编码
    Postgresql 设置字段搜索支持中文排序
    springboot docker 显示中文乱码问题
    linux 更新系统时间
    怎么让网易云音乐等音乐软件的歌词在MacBook Pro的 touch bar(触摸栏)上显示
    数仓:解读 NameNode 的 edits 和 fsimage 文件内容
  • 原文地址:https://www.cnblogs.com/babycool/p/4611031.html
Copyright © 2020-2023  润新知