Python基础(3)——北京市地铁买票问题(思维练习题)
2017-08-01 23:02
357 查看
Python基础练习,进行循环与条件判断的嵌套,有一道逻辑练习题如下:
根据以下信息提示,请帮小明计算,他每月乘坐地铁支出的总费用
提示信息:
北京公交地铁新票价确定
据北京市发改委网站消息称,北京市将从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元;编写程序,帮小明完成每月乘坐地铁需要的总费用
一开始有些一头雾水的题,本题的关键就是理清思路,其中判断条件较为复杂,从题意分析,可以看出题意是希望我们,将路程作为输入值,对路程进行分析,计算,从而得到一个月消耗的金额(本人的理解,据说答案不唯一)。
其次便是对题目中的循环条件进行分析,认真分析,可以看出,循环应为两层,外层表示天数,内层表示每天的两趟,因为,每一趟都会使金额发生改变,而每一次改变,都可能使得金额区间改变(题目中有优惠条件),所以内层循环控制很是必要。同时循环内还需要对金额进行条件判断,根据区间,对金额进行计算(每一趟都需要判断)
源代码如下:
#-*-coding:utf-8-*-
#乘地铁问题
i = 1 #i表示天数
ditence = input("input your ditence:") #ditence表示距离
money = 0 #初始金额为0
while i <= 20: #控制20天
j = 1 #j表示趟数
if ditence == 0:
breake
while j <= 2 : # 每天两趟
if money < 100:
if ditence <= 6:
money += 3
elif 6 < ditence and ditence <= 12:
money += 4
elif 12 < ditence and ditence <= 22:
money += 5
elif 22 < ditence and ditence <= 33:
money += 6
elif ditence > 33:
money += (ditence - 33)%20
elif money >= 100 and money <= 150:
if ditence <= 6:
money += 3*0.8
elif 6 < ditence and ditence <= 12:
money += 4*0.8
elif 12 < ditence and ditence <= 22:
money += 5*0.8
elif 22 < ditence and ditence <= 33:
money += 6*0.8
elif ditence > 33:
money += ((ditence - 33)%20)*0.8
elif money >= 150 and money <= 400:
if ditence <= 6:
money += 3*0.5
elif 6 < ditence and ditence <= 12:
money += 4*0.5
elif 12 < ditence and ditence <= 22:
money += 5*0.5
elif 22 < ditence and ditence <= 33:
money += 6*0.5
elif ditence > 33:
money += ((ditence - 33)%20)*0.5
elif money >= 400 :
if ditence <= 6:
money += 3
elif 6 < lngth and ditence <= 12:
money += 4
elif 12 < ditence and ditence <= 22:
money += 5
elif 22 < ditence and ditence <= 33:
money += 6
elif ditence >= 33:
money += (ditence - 33)%20
j += 1
i += 1
money += 5
print("money=%f"%money)
本题对练习循环,条件判断的嵌套很有帮助,是一道有提高的题!
根据以下信息提示,请帮小明计算,他每月乘坐地铁支出的总费用
提示信息:
北京公交地铁新票价确定
据北京市发改委网站消息称,北京市将从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元;编写程序,帮小明完成每月乘坐地铁需要的总费用
一开始有些一头雾水的题,本题的关键就是理清思路,其中判断条件较为复杂,从题意分析,可以看出题意是希望我们,将路程作为输入值,对路程进行分析,计算,从而得到一个月消耗的金额(本人的理解,据说答案不唯一)。
其次便是对题目中的循环条件进行分析,认真分析,可以看出,循环应为两层,外层表示天数,内层表示每天的两趟,因为,每一趟都会使金额发生改变,而每一次改变,都可能使得金额区间改变(题目中有优惠条件),所以内层循环控制很是必要。同时循环内还需要对金额进行条件判断,根据区间,对金额进行计算(每一趟都需要判断)
源代码如下:
#-*-coding:utf-8-*-
#乘地铁问题
i = 1 #i表示天数
ditence = input("input your ditence:") #ditence表示距离
money = 0 #初始金额为0
while i <= 20: #控制20天
j = 1 #j表示趟数
if ditence == 0:
breake
while j <= 2 : # 每天两趟
if money < 100:
if ditence <= 6:
money += 3
elif 6 < ditence and ditence <= 12:
money += 4
elif 12 < ditence and ditence <= 22:
money += 5
elif 22 < ditence and ditence <= 33:
money += 6
elif ditence > 33:
money += (ditence - 33)%20
elif money >= 100 and money <= 150:
if ditence <= 6:
money += 3*0.8
elif 6 < ditence and ditence <= 12:
money += 4*0.8
elif 12 < ditence and ditence <= 22:
money += 5*0.8
elif 22 < ditence and ditence <= 33:
money += 6*0.8
elif ditence > 33:
money += ((ditence - 33)%20)*0.8
elif money >= 150 and money <= 400:
if ditence <= 6:
money += 3*0.5
elif 6 < ditence and ditence <= 12:
money += 4*0.5
elif 12 < ditence and ditence <= 22:
money += 5*0.5
elif 22 < ditence and ditence <= 33:
money += 6*0.5
elif ditence > 33:
money += ((ditence - 33)%20)*0.5
elif money >= 400 :
if ditence <= 6:
money += 3
elif 6 < lngth and ditence <= 12:
money += 4
elif 12 < ditence and ditence <= 22:
money += 5
elif 22 < ditence and ditence <= 33:
money += 6
elif ditence >= 33:
money += (ditence - 33)%20
j += 1
i += 1
money += 5
print("money=%f"%money)
本题对练习循环,条件判断的嵌套很有帮助,是一道有提高的题!
相关文章推荐
- 算法基础之python实现动态规划中数字三角形和最长上升子序列问题
- python爬虫基础之request设置问题
- 从使用Python开发一个Socket示例说到开发者的思维和习惯问题 - 突破中的IT结构师 - 51CTO技术博客
- python 第六篇 基础练习题 乘客打的费用计算
- python 语法基础练习题
- 第2章 Python基础-字符编码&数据类型 字符编码&字符串 练习题
- MYSQL基础上机练习题(六) 排序问题综合应用
- 八皇后问题 - Python - from Python基础教程
- python基础教程总结8——特殊方法,属性,迭代器,生成器,八皇后问题
- 从使用Python开发一个Socket示例说到开发者的思维和习惯问题
- Python练习题 9-7~9-8管理员问题
- python基础练习---关于字符串连接问题
- 算法基础之python实现贪心算法中圣诞老人分糖果问题和二分查找算法中烘干衣服问题
- Python基础知识- 函数定义,参数问题(hard)
- Python零基础学习 问题及作业 问题待续
- python学习(一)---基础知识(安装、IDE、API查询、常见问题)
- python3 从基础入门到高级进阶练习题之----基础篇004
- 从使用Python开发一个Socket示例说到开发者的思维和习惯问题
- [基础] Python问题
- 从使用Python开发一个Socket示例说到开发者的思维和习惯问题 推荐