python循环报数游戏_python经典面试题之一:猴子报数
在与python相关的面试中,很经常能看到这样类似的一道题:
有13只猴子围成一圈,编号分别为1~13,从1开始报数,报到10之后,下一个猴子又重新由1报起,每逢报到7的猴子出局,请设计程序,求得最终留下来的那一只猴子的编号。
以前,我的解法是老老实实地写几个循环嵌套,不过其实有更加省事的办法:使用字典!
以字典的键(int类型的1-13)作为猴子的编号,以他们对应的键值作为猴子当前的状态(报到几号数或者是已出局),定义字典的时候可以设置一个初值给它们。然后,设报数号为1,通过轮巡1-13号猴子进行报数,已出局的猴子跳过,未出局的猴子报数,报完判断当前猴子报的是否为7,是则将该猴子的状态设置为出局,然后报数号继续+1,到10之后又重置为1,猴子号数也是,报到13号猴子以后重置为1号猴子。最后通过判断是否已经有12只猴子出局,即可结束该循环。
代码如下:
monkey = {i + 1: "" for i in range(13)}
callnumber = 1
try:
while True:
for m in range(1, 14):
if monkey[m] != "out":
monkey[m] = callnumber
if callnumber == 7: monkey[m] = "out"
callnumber += 1
if callnumber > 10: callnumber = 1
if list(monkey.values()).count("out") == 12: raise TypeError
except:
[print("\nmonkey:{} is win".format(k)) for k, v in monkey.items() if v != "out"]
这里我还是用了两层循环,通过try...except加raise Error来一次性打破多重循环,实际上也可以做成一层循环,只做while True的就可以,里面的for循环可以自建一个循环计数器变量来替代掉。
也有使用列表的做法,当然,上一篇文章提到了高手通过极限缩减代码行数来秀技能,那在这个场景也是可以这样玩的
status = [[0 for i in range(13)], 1, 0]
while 1:
if status[0][status[2]] != -1:
status[0][status[2]] = status[1]
if status[1] == 7: status[0][status[2]] = -1
status[1] += 1
if status[1] > 10: status[1] = 1
if status[0].count(-1) == 12: break
status[2] += 1
if status[2] == len(status[0]): status[2] = 0
[print("monkey:{} is win".format(index + 1)) for index, k in enumerate(status[0]) if k != -1]
这段代码让人难受的地方在于,你要是不将status[0],status[1],status[2]替换成别的变量,你需要花费超级多的经历去看懂这段代码,玩儿嘛,哈哈哈!仅供参考,不喜勿喷~
python循环报数游戏_python经典面试题之一:猴子报数相关推荐
- python代码表达失恋_Python 经典面试题汇总之网络篇
网络篇 1.简述 OSI 七层协议 物理层:定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介质. 数据链路层:定义如何传输格式化数据,以及如何访问物理介质. 网络层:定义逻辑网络地址. ...
- python中bytearray和java中byte[]的区别_Python经典面试题:说说Python中xrange和range的区别?...
昨晚一小伙后台问xrange和range有啥区别,讲了下他倒领悟的挺快,其实这也是你各面试Python岗位,经常会遇到的Python面试题,长个心眼哈,说不定明年3月你找工作就用上了. 废话不多说,开 ...
- python sorted函数_Python 经典面试题 二
1.简要描述Python的垃圾回收机制(garbage collection) Python中的垃圾回收是以引用计数为主,标记-清除和分代收集为辅. •引用计数:Python在内存中存储每个对象的引用 ...
- python循环定义变量_Python变量和循环
1.Python变量 比C语言,Java语言更加简洁,不需要加int等等类型定义,直接变量名 = 值,Python里甚至不需要分号.有些特定的不能当做变量名,变量只能由字母.数字和下划线组成,下划线可 ...
- 如何用python制作五子棋游戏_Python制作打地鼠小游戏
原文链接 Python制作小游戏(二十一)mp.weixin.qq.com 效果展示 打地鼠小游戏https://www.zhihu.com/video/1200492442610450432 简介 ...
- python智力问答游戏_Python语言编写智力问答小游戏功能
本篇博文将使用Python代码语言简单编写一个轻松益智的小游戏,效果如下所示: 1.设计思路 本项目使用SQLite建立问答题库,每道题包括4个选项答案(3个正确答案,1个错误答案).每道题都有一定分 ...
- python pygame小游戏_python:利用pygame实现消消乐小游戏
消消乐记分小游戏GUI界面 文件结构规划 定义config.py文件存储相关参数:包括界面的宽高,整个方格行列个数,总格数等等. 定义utils.py文件用于存放基础的类和函数:包括整个消除拼图类,游 ...
- python循环语句嵌套_Python 循环语句
循环语句 循环语句主要是用于解决某些重复的代码工作,使需要重复的代码只写一遍即可. Python循环语句主要有两种:while循环和for...in...循环. 一.while循环 主要用于不确定循 ...
- python开发大型游戏_Python也有做大型游戏的潜力?原来我们小看了Python,无所不能...
前言 在小编以前还没怎么接触很多编程语言时,都是认为游戏(端游,手游)都是用C做出来了!不知道大家有没有这么想过,反正我是这样的.后来慢慢接触多了,才知道并不是所有的都是这个样子的! Python也有 ...
最新文章
- Ansible01-Ansible基础和部署
- Robot framework 二次开发笔记
- 【数据平台】Eclipse+Scala远程开发调试关于hostname的问题
- ipynb是什么文件_数据科学家的神器:为什么大家都用Kaggle?
- 石油勘探是属于计算机应用中的,计算机在石油勘探开发中的应用论文
- 浅谈mpvue项目目录和文件结构
- 将xscj指定为当前数据库_通过网络连接数据库模式Hive的搭建过程详解
- 腾讯大动刀:微信试行松绑外链!用户已可打开淘宝、抖音等链接
- mysql 临时表循环_在游标循环中查询临时表可以,但是结束循环后就无法查询了。...
- Boost库编译安装
- js点击事件onclick_关于JavaScript的事件绑定问题
- web javescript与cookie理解
- UTM投影分带相关资料及计算公式
- 《2019年中国互联网网络安全报告》发布,恶意程序攻击半数来自美国
- Matlab linspace函数C++实现
- 判断一个数是否是素数
- oracle normsinv函数,统计函数NormSDist和NormSInv函数实现
- 3D游戏模型之鼻子的建模
- [JavaScript]45 Fresh Useful JavaScript and jQuery Techniques and Tools
- 把自己的电脑作为网络代理服务器