Python经典五人分鱼实例讲解


Posted in Python onJanuary 04, 2021

A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。

日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。

C、D、E依次醒来,也按同样的方法拿鱼。

问他们至少捕了多少条鱼?

def main():
  fish = 1
  while True:
    total, enough = fish, True
    for _ in range(5):
      if (total - 1) % 5 == 0:
        total = (total - 1) // 5 * 4
      else:
        enough = False
        break
    if enough:
      print(f'总共有{fish}条鱼')
      break
    fish += 1


if __name__ == '__main__':
  main()

实例扩展:

#Python3 实例--Python 五人分鱼
print("Python3 实例--Python 五人分鱼")

#原则:

'''日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。

C、D、E依次醒来,也按同样的方法拿鱼。

问他们台伙至少捕了多少条鱼?(x)
A:(x-1)/5
B:(x-((x-1)/5)-1)/5
C:(x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5
D:(x-((x-1)/5)-((x-((x-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5)-1)
E:(x-((x-1)/5)-((x-((x-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-((x-((x-1)/5)-((x-((x-1)/5)-1)/5)-1)/5)-1))-1)
'''



def main():
  fish = 1
  while True:
    #默认鱼的数量是够分的,enough = True
    total, enough = fish, True
    #循环步骤:每一个人都按照相同的原则分鱼
    for _ in range(5):
      #"_"符号在循环中不会用到,起的是循环次数的作用,可以看作和i,j是等效的
      #如果正好够5个人分,不需要扔掉一条
      if (total - 1) % 5 == 0:
        #除了第一个人,剩下的鱼的总数为:(total - 1) // 5 * 4,
        # 但是此时流程还没有走完,还未计算鱼的总数
        total = (total - 1) // 5 * 4
      #如果不够一个人分,enough = False,
      # 说明鱼的数量不是最少的,还需要每一个重复步骤上加一条,跳出循环
      else:
        enough = False
        break

    #判断鱼是不是够分,而且鱼的总数取的是最小值
    if enough:

      #若是,输出鱼的总数,结束程序
      print(f'总共有{fish}条鱼')
      break
    #鱼的数量循环加1
    fish += 1


main()

到此这篇关于Python经典五人分鱼实例讲解的文章就介绍到这了,更多相关Python 五人分鱼内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python显示天气预报
Mar 02 Python
深入理解Python 代码优化详解
Oct 27 Python
python sort、sorted高级排序技巧
Nov 21 Python
Python的Urllib库的基本使用教程
Apr 30 Python
python基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
python如何爬取个性签名
Jun 19 Python
python+Splinter实现12306抢票功能
Sep 25 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
Nov 16 Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 Python
python判断链表是否有环的实例代码
Jan 31 Python
python批量修改文件名的示例
Sep 27 Python
使用python创建股票的时间序列可视化分析
Mar 03 Python
Python约瑟夫生者死者小游戏实例讲解
Jan 04 #Python
python邮件中附加文字、html、图片、附件实现方法
Jan 04 #Python
python自动化发送邮件实例讲解
Jan 04 #Python
Python Selenium库的基本使用教程
Jan 04 #Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 #Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 #Python
python Scrapy框架原理解析
Jan 04 #Python
You might like
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
php数组去重复数据示例
2014/02/25 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
js最简单的拖拽效果实现代码
2010/09/24 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
Python 常用 PEP8 编码规范详解
2017/01/22 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
python 对xml解析的示例
2021/02/27 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
拾金不昧表扬信范文
2014/01/11 职场文书
学生会主席竞聘书
2014/03/31 职场文书
迎国庆演讲稿
2014/09/05 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
react 路由Link配置详解
2021/11/11 Javascript