Python来做应用题及思路

最近找工作头疼没事就开始琢磨python解应用题应该可以,顺便还可以整理下思路当然下面的解法只是个人理解,也欢迎大佬们给意见或者指点更好的解决办法等于优化代码了嘛,也欢迎大家出点小题目做也可以,如果可以我也会定期专门来做应用题(你弟弟或者你表弟或者外甥等来问应用题在也不用算了,把思路和答案给他让他自己一边研究去。)好了先来看如下题目:

1.firstblood题目一:

55名学生围成一个圆圈站好,并按照顺时针的方向依次编号1~55。然后1开始报数,隔一个人3号继续报数,接着是5号,7号……每一轮中,没有报数的同学都走出队伍,知道剩下最后一个人。请问最后一个站在队伍中的人是几号?

首先来聊聊题目中的信息提取也就是程序已知的参数,55个学生可以当一个列表,报数是1,3,5,7隔着报数,偶数位的都被排除,一轮排除后剩下的等于是接到前面列表结束位置的数55继续排除,这里要提醒前面的55这时候就是剩下的第一位,那么数字1就是第二位,等于我们要把每次循环的第一位给排除掉,才能无缝衔接,只要能理解这个很重要的一点这程序就通了。话不多说上代码了:

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. students = [x for x in range(1,56)] #生成学生1到55个学生列表
  5. print students #打印出来后面对比
  6.  
  7. def leave(team): #定义函数,因为题目剩下的学生还要继续所以用递归的方式
  8. spare = [] #临时创库用于存放每次报数后剩下的学生
  9. if len(team)>1: #判断这个队列的长度不能小于1避免无限递归
  10. for i in range(len(team)+1): #记住这里要的是列表的下标偶数而不是数字偶数(留给你们自己思考)
  11. if i==1: #重点中的重点无缝连接55后面下次循环1等于2的位置所以直接排除
  12. continue
  13. if i%2==0: #队列中偶数下标的人也就是1,3,5中间的2,4排除掉
  14. continue
  15. else: #前面排除后剩下的学生存放到临时仓库
  16. spare.append(team[i-1])
  17. print spare #打印后面衔接的剩下学生
  18. if len(spare)>2: #判断到最后只要两位就是接可以得出结果(由于上面第一位就直接排除的原因)
  19. leave(spare) #迭代函数再次排除偶数位置的学生
  20. else:
  21. print spare[1] #最后剩下两个人时其实第一个人就直接排除剩下就是最后一个报数的人
  22. else:
  23. print "Who lies!!!" #如果没人就打印谁乱报数
  24.  
  25. leave(students)

程序思路是:首先要循环接力报数,然户要递减人数我这里就用递归的方法,需要递减偶数位置,我这里用列表下标方式对应位置(偶数出列),然后限定条件,就是找到剩余几个人结束,由于每次第一个人直接排除所以到剩下两个人时排除第一个位置后就是答案。下面是结果:


2.double kill题目二

有一个监狱犯人吃饭时,如果3个人坐一桌则余2人,5个人坐一桌则余4,7个人坐一桌则余6人,9个人坐一桌则余8人,11个人坐一桌正好坐满,问一共有多少犯人?

还是来先提取题目中的参数信息,如果关键字可以看成程序中的条件if对待,总数X%3=2,X%5=4.......X%9=8..X%11=0,其实这写都是条件,注意的是犯人的总数是要同时满足这几个条件,而不是满足其中一个。是不是思路很清晰了我们可以用程序的and方法就是条件全满足时执行。来看看代码:

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. '''
  5. 1,首先我们不知道这个数,所以可以用X未知数来表示
  6. 2,估计一个范围,因为这个数字不是唯一的,答案也不是唯一的除非是选择题目
  7. 3,我会用两种写法来解答,各位自己取舍理解好用就行。
  8. '''
  9.  
  10. for x in range(10000):
  11. if x%3==2 and x%5==4 and x%7==6 and x%9==8 and x%11==0:
  12. print x,
  13. print
  14.  
  15. print [x for x in range(10000) if x%3==2 and x%5==4 and x%7==6 and x%9==8 and x%11==0]

是不是很简单只用把条件放去循环内部,程序会自己判断取值,这里我定义的范围是1万内满足条件的输出,上面常用的for循环写法,下面就是列表解析式,大家觉得那种好理解就用哪种吧!!!来看结果如下(有3个数满足条件):


3.triple kill题目三:

两火车相距10千米,A火车每小时1千米速度前行,B火车每小时2千米速度前行,求B几小时后追上A?

首先参数是A的长度是10千米,B为0千米,然后计算小时用一个计数器初始为0,然后要用到循环A每次加1千米,B每次加2千米,计数器来计算循环次数也就是几小时后追上A火车。代码如下:

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. A = []
  5. for i in range(10): #初始化一个A已经跑了个距离
  6. A.append("") #用1表示每小时走了1千米
  7. print A #打印一个原始数据
  8. print "--------------分割线-------------------"
  9. B = [] #初始化B列车
  10. count = 0 #小时计数器统计用了几小时
  11. for h in range(100): #估计范围
  12. if len(A)!=len(B): #当A走的范围不等于B走的范围时
  13. A.append("") #A每次走1千米
  14. B.append("") #B每次走2千米走了两次
  15. B.append("")
  16. count+=1 #每次执行就代表用了一小时所以要加上
  17. elif len(A)==len(B): #当A走的距离等于B走的距离时
  18. print "追上了A" #提醒已经追上A
  19. break #退出循环
  20. print A #每次打印走的距离
  21. print B #同上
  22. print "B追上A花了%d小时"%count

基本都在注释上面,很容易理解,是不是觉得很有趣,用python来做应用题锻炼思路很好的方法,可以锻炼对问题的分析及处理过程。

好了最后还是感谢观看,下次再见!!!

Python来做应用题及思路的更多相关文章

  1. 你都用python来做什么?

    首页发现话题   提问     你都用 Python 来做什么? 关注问题写回答     编程语言 Python 编程 Python 入门 Python 开发 你都用 Python 来做什么? 发现很 ...

  2. 可以用 Python 编程语言做哪些神奇好玩的事情?

    作者:造数科技链接:https://www.zhihu.com/question/21395276/answer/219747752 使用Python绘图 我们先来看看,能画出哪样的图 更强大的是,每 ...

  3. Python能做些什么?

    前言 网上搜集到的一些python能做什么的资料,利用python能做很多事情,我们可以在多门课程中都使用Python作为我们的教学语言.比如,计算机网络.数据结构.人工智能.图像处理.软件分析与测试 ...

  4. Python 能做什么?

    Python 能做什么? Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,我所关注的是网络爬虫方面,2018即将到来,我准备步入python的世界. Hello,wor ...

  5. 学了Python可以做什么工作

    学了Python可以做什么工作 用 Python 写爬虫 据我所知很多初学 Python 的人都是使用它编写爬虫程序.小到抓取一个小黄图网站,大到一个互联网公司的商业应用.通过 Python 入门爬虫 ...

  6. python + unittest 做单元测试之学习笔记

    单元测试在保证开发效率.可维护性和软件质量等方面有很重要的地位,所谓的单元测试,就是对一个类,一个模块或者一个函数进行正确性检测的一种测试方式. 这里主要是就应用 python + unitest 做 ...

  7. 一篇文章告你python能做什么,该不该学?好不好学?适不适合学?

    一.python好学吗?简单吗?容易学吗?没有编程的领取能学吗? 最近有很多小伙伴都在问我这些问题.在这里,我想说,python非常简单易学. 1,简单, Python 非常易于读写,开发者可以把更多 ...

  8. Python能做什么,自学Python效果怎么样?

    短时间掌握一门技能是现代社会的需求.生活节奏越来越快,现在不是大鱼吃小鱼,而是快鱼吃慢鱼的时代,人的时间比机器的时间更值钱.Python作为一种轻量级编程语言,语言简洁开发快,没那么多技巧,受到众多追 ...

  9. python是什么?python能做什么?

    人生苦短,我用python. python是什么? Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. python语言有以下特点: 易于学习.Python有相对较少的关键字 ...

随机推荐

  1. Lind.DDD.Plugins~插件模式的集成

    回到目录 对于Lind.DDD这个敏捷框架来说,插件也是其中的一个亮点,所有被认为是插件(Plugins)的模块都会继承自IPlugins这个标示接口,它在程序启动时会找到所有插件,并通过autofa ...

  2. Linux命令:ps,netstat,top

    ps ps用于查看当前运行的进程.如果想查看动态的进程信息,可以使用top命令.查看详细命令帮助使用man ps. ps最常用的选项组合就是ps aux: # ps aux USER PID %CPU ...

  3. MySQL触发器-条件触发器语法

    文章为作者原创,未经许可,禁止转载.    -Sun Yat-sen University 冯兴伟 实验4 触发器 )实验目的 掌握数据库触发器的设计和使用方法 )实验内容和要求 定义BEFORE触发 ...

  4. Java Collection知识总结

    首先说说java中常用的集合容器:ArrayList,LinkedList,Vector,HashMap,Hashtable,HashSet,TreeSet.[就个人认为] java集合容器本人理解为 ...

  5. iOS开发之Alamofire源码解析前奏--NSURLSession全家桶

    今天博客的主题不是Alamofire, 而是iOS网络编程中经常使用的NSURLSession.如果你想看权威的NSURLSession的东西,那么就得去苹果官方的开发中心去看了,虽然是英文的,但是结 ...

  6. 防御性编程习惯:求出链表中倒数第 m 个结点的值及其思想的总结

    防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数 ...

  7. ORACLE 11gR2 DG(Physical Standby)日常维护02

    环境:RHEL 6.5 + Oracle 11.2.0.4 三.监控DG的状态 3.1监控DG备库的状态 3.2监控主库传输日志链路的状态 四.备库切换为snapshot standby 4.1备库切 ...

  8. u-boot源码分析之C语言段

    题外话: 最近一直在学习u-boot的源代码,从代码量到代码风格,都让我认识到什么才是真正的程序.以往我所学到的C语言知识和u-boot的源代码相比,实在不值一提.说到底,机器都是0和1控制的.感觉这 ...

  9. 前端开发:setTimeout与setInterval 定时器与异步循环数组

    前端开发:setTimeout与setInterval 定时器与异步循环数组 前言: 开通博客园三个月以来,随笔记录了工作中遇到的大大小小的难题,也看过无数篇令人启发的文章,我觉得这样的环境是极好的, ...

  10. Basic Tutorials of Redis(2) - String

    This post is mainly about how to use the commands to handle the Strings of Redis.And I will show you ...