2018.03.04
auther:wills

捕鱼,有abcde五个人去捕鱼,补了很多鱼fish,休息一夜,a最先醒来,扔了一条鱼然后平均分成五份,拿走了自己的一份。b第二个醒来,也扔了一条鱼然后平均分成五份,拿走了自己的一份。c第三个醒来,d第四个醒来,e第五个醒来均进行了相同的动作,问:最少有多少条鱼?

先从正向捕鱼说起

下面是我最初写的代码

fish = 1
while Trueflag = 1for _ in range(5):if (fish - 1)%5==0:fish = (fish - 1)//5*4else:flag = 0breakif flag:print(fish)breakfish += 1

这段代码我已运行就进入死循环,找了半天都没找到问题点,最后才发现我从fish=1开始,进入if语句后fish被修改为0,然后又fish+=1,进入了死循环。修改后代码如下

fish = 1
while 1:flag = 1total = fishfor _ in range(5):if (total - 1)%5==0:total = (total -1)//5*4else:flag = 0if flag:print(fish)breakfish += 1

逆向思维,假设第五个人分鱼后剩下的鱼为fish,这样分鱼过程就只有4次,可以少一个循环代码如下

for fish in range(1,10000):for n in range(4):if (fish -1 )%5 == 0 and fish%4 == 0:fish = fish//4*5+1if n ==3:print(fish)# else:#     break

这个分鱼方法有个好处,就是代码极少,只有6行,#号注释的两行只是用于跳出for循环提高代码执行速度

下面这个while+for循环的办法可以更高的提高代码执行速度,不过稍微需要多加几个变量

fish = 1
flag = 1
while flag:total = fishfor n in range(4):if (total-1)%5==0 and total%4==0:total = total//4*5+1if n==3:print(fish)print(total)flag =0fish += 1

下面我把4种捕鱼代码都放到一起,并且使用了一个time函数来进行计时,比较几种代码的运行效率

from time import time
a1 = time()
fish = 1
while 1:flag = 1total = fishfor _ in range(5):if (total - 1)%5==0:total = (total -1)//5*4else:flag = 0if flag:print(fish)breakfish += 1
a2 = time()
for fish in range(1,10000):for n in range(4):if (fish -1 )%5 == 0 and fish%4 == 0:fish = fish//4*5+1if n ==3:print(fish)
a3 = time()
for fish in range(1,10000):for n in range(4):if (fish -1 )%5 == 0 and fish%4 == 0:fish = fish//4*5+1if n ==3:print(fish)else:break
a4 = time()fish = 1
flag = 1
while flag:total = fishfor n in range(4):if (total-1)%5==0 and total%4==0:total = total//4*5+1if n==3:print(fish)print(total)flag =0fish += 1a5 = time()
print(a2-a1)
print(a3-a2)
print(a4-a3)
print(a5-a4)

下面是3次运行结果

可以看出第二种代码最简洁,但是运行速度最慢,第四种虽然有点冗长,但是运行速度是最快的。那么众位看官,你们会选哪一种呢。

python之捕鱼问题相关推荐

  1. python爬虫捕鱼网站_一个简易的爬虫工具,使用Python语言编写,用于zhihu全自动捕鱼...

    简介 这是什么 这是一个简易的爬虫工具,使用Python语言编写,用于zhihu全自动捕鱼,理论上,你可以爬取你感兴趣的任何问题,而不仅仅是小姐姐. 如何使用 编程使用 请确保你的Python版本是3 ...

  2. python爬虫捕鱼网站_Python爬虫从太平洋地震工程研究中心数据库自动下载地震波时程...

    python app开发自动捕鱼" 引子-- 最近小编在沉迷捕鱼之余,扫到了某问答网站里的一个网友提问的标题叫做"Python真的有那么神吗?",各位被邀嘉宾们针对最近P ...

  3. Python写捕鱼达人

    当今最火的莫过于用Python写出捕鱼达人的效果了.啥都不用说,亮代码~~~ # coding:utf-8 # 导入模块 import pygame,sys,time,random from pyga ...

  4. python爬虫捕鱼网站_古法捕鱼,千年绝技

    文:魔力 图:来自网络 先民在进入农耕文化之前,打渔狩猎才是他们的谋生手段.经过了千百年,先辈们用经验和智慧创造许多捕鱼的方法. 原来先辈创造的捕鱼方法,人们现在已经不再使用.我们现在看到的都是炸鱼. ...

  5. for死循环、怪异字符串、两次return……Python冷知识(三)

    本文转载自Python编程时光(ID:Python-Time) 冷知识系列,已经更新至第三篇.前两篇传送门小明给你准备好了,还没阅读的可以学习一下. 谈谈 Python 那些不为人知的冷知识(一) 谈 ...

  6. Python开发游戏的正确姿势,看这篇就够了

    Python3在Python2的基础之上做了非常多的改进,比如字符串编码,在Python3中默认字符使用的是unicode编码,可以涵盖这个地球上所有的字符,当然了,优势不仅仅只有这一点.再加上Pyt ...

  7. python刷题+leetcode(第一部分)

    1. 设计前中后队列 思路:python代码直接利用list的insert特性 class FrontMiddleBackQueue:def __init__(self):self.queque = ...

  8. python画鱼_Python经典五人分鱼实例讲解

    A.B.C.D.E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉. 日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份. B 第二个醒来,也将鱼分为 ...

  9. Python菜鸟入门:day17编程学习

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 传送门: day01基础知识 day02知识分类 day03 ...

最新文章

  1. 如何看待研究生导师直接说你写的论文就是垃圾?
  2. Ajax、jQuery基础入门视频教程
  3. 8.6 多元高斯分布模型-机器学习笔记-斯坦福吴恩达教授
  4. 解决yarn build时报错:内存溢出FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed
  5. linux diff命令_Linux diff命令示例
  6. .net|dotnet应聘人员应该掌握的知识点
  7. Visual Studio 2012 实用快捷键
  8. win7电脑误删鼠标键盘驱动_快速恢复win7系统因驱动冲突导致鼠标键盘用不了的详细步骤...
  9. 数据恢复哪家强?四大数据恢复类软件评测
  10. Android 使用VelocityTracker来获取滑动速度
  11. PostgreSQL存储过程BEGIN块的事务处理
  12. Latex如何在文本中插入数学符号
  13. 数据结构教程(c语言)(已完结)
  14. excel 置信区间 计算_Excel 计算置信区间:CONFIDENCE函数详解
  15. 怎么用计算机直接截图,电脑怎么截图?使用电脑截图的多种方法
  16. Python更新失败:SSL错误——Conda/Python
  17. linux meld 编译,Linux 系统上的可视化比较与合并工具 Meld
  18. 2020深圳杯B题论文
  19. 在《自动化学报》搜无人机关键词可以看到这方面的论文
  20. 洛谷P2455 [SDOI2006]线性方程组

热门文章

  1. streamx如何支持我司线上实时作业
  2. BZOJ-1898 Swamp 沼泽鳄鱼
  3. 【SVN】Win 10:SVN 下载、安装和汉化
  4. python 绘图 坐标轴范围 颜色 保存
  5. 【蓝桥杯选拔赛真题15】Scratch碰苹果游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
  6. 百度paddlepaddle七天打卡之青你实战
  7. java+http文件夹上传
  8. 看完这套书才发现,以前的四大名著都白看了!
  9. NG-ALAIN的使用
  10. 如何搭建云进销存-销售管理系统?