python之捕鱼问题
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之捕鱼问题相关推荐
- python爬虫捕鱼网站_一个简易的爬虫工具,使用Python语言编写,用于zhihu全自动捕鱼...
简介 这是什么 这是一个简易的爬虫工具,使用Python语言编写,用于zhihu全自动捕鱼,理论上,你可以爬取你感兴趣的任何问题,而不仅仅是小姐姐. 如何使用 编程使用 请确保你的Python版本是3 ...
- python爬虫捕鱼网站_Python爬虫从太平洋地震工程研究中心数据库自动下载地震波时程...
python app开发自动捕鱼" 引子-- 最近小编在沉迷捕鱼之余,扫到了某问答网站里的一个网友提问的标题叫做"Python真的有那么神吗?",各位被邀嘉宾们针对最近P ...
- Python写捕鱼达人
当今最火的莫过于用Python写出捕鱼达人的效果了.啥都不用说,亮代码~~~ # coding:utf-8 # 导入模块 import pygame,sys,time,random from pyga ...
- python爬虫捕鱼网站_古法捕鱼,千年绝技
文:魔力 图:来自网络 先民在进入农耕文化之前,打渔狩猎才是他们的谋生手段.经过了千百年,先辈们用经验和智慧创造许多捕鱼的方法. 原来先辈创造的捕鱼方法,人们现在已经不再使用.我们现在看到的都是炸鱼. ...
- for死循环、怪异字符串、两次return……Python冷知识(三)
本文转载自Python编程时光(ID:Python-Time) 冷知识系列,已经更新至第三篇.前两篇传送门小明给你准备好了,还没阅读的可以学习一下. 谈谈 Python 那些不为人知的冷知识(一) 谈 ...
- Python开发游戏的正确姿势,看这篇就够了
Python3在Python2的基础之上做了非常多的改进,比如字符串编码,在Python3中默认字符使用的是unicode编码,可以涵盖这个地球上所有的字符,当然了,优势不仅仅只有这一点.再加上Pyt ...
- python刷题+leetcode(第一部分)
1. 设计前中后队列 思路:python代码直接利用list的insert特性 class FrontMiddleBackQueue:def __init__(self):self.queque = ...
- python画鱼_Python经典五人分鱼实例讲解
A.B.C.D.E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉. 日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份. B 第二个醒来,也将鱼分为 ...
- Python菜鸟入门:day17编程学习
写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 传送门: day01基础知识 day02知识分类 day03 ...
最新文章
- 如何看待研究生导师直接说你写的论文就是垃圾?
- Ajax、jQuery基础入门视频教程
- 8.6 多元高斯分布模型-机器学习笔记-斯坦福吴恩达教授
- 解决yarn build时报错:内存溢出FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed
- linux diff命令_Linux diff命令示例
- .net|dotnet应聘人员应该掌握的知识点
- Visual Studio 2012 实用快捷键
- win7电脑误删鼠标键盘驱动_快速恢复win7系统因驱动冲突导致鼠标键盘用不了的详细步骤...
- 数据恢复哪家强?四大数据恢复类软件评测
- Android 使用VelocityTracker来获取滑动速度
- PostgreSQL存储过程BEGIN块的事务处理
- Latex如何在文本中插入数学符号
- 数据结构教程(c语言)(已完结)
- excel 置信区间 计算_Excel 计算置信区间:CONFIDENCE函数详解
- 怎么用计算机直接截图,电脑怎么截图?使用电脑截图的多种方法
- Python更新失败:SSL错误——Conda/Python
- linux meld 编译,Linux 系统上的可视化比较与合并工具 Meld
- 2020深圳杯B题论文
- 在《自动化学报》搜无人机关键词可以看到这方面的论文
- 洛谷P2455 [SDOI2006]线性方程组