“列表+循环”模拟“报数选猴王”小游戏
程序员文章站
2022-07-15 12:21:58
...
“列表+循环”模拟“报数选猴王”小游戏
文章目录
关键字:
- 循环
- 列表操作
- 模拟
摘要:
- 编程对应生活、表达生活
- 定义每一次报数后的“睡眠”时间
- 可以扩展成其它小游戏,比如:“寻找打扫卫生的幸运儿”
游戏规则:
一群猴子围成一圈,按1,2,3,…,n依次编号。
从第1只开始数,数到第m只,把它剔除圈,再重新开始数。
…
如此不停的进行下去,最后剩下的那只就是大王。
思路:(游戏规则翻译成编程逻辑)
用一个列表list1来表示猴子,名字分别为猴1、猴2、猴3、…、猴n。
如何体现围成一圈?假设他们转圈到一个报数台依次报数,报完数的猴到队伍的最后面,等待下一次报数,用程序语言表示就是list1.append(list1.pop(0)),此处感谢浩源同学的灵感。
用一个内循环1,来表示数到第m只,剔除对应的猴子,此时圈中猴子总数减少了。
…
再用一个外循环2包括上面的循环1,来表示上述循环不停进行,直到猴子总数只剩下1只。
示意图
预演:(将列表第1个(0位)弹出,放到最后)
list2 = ['猴1','猴2','猴3','猴4','猴5']
list2.append(list2.pop(0))
print(list2)
#打印输出结果为:['猴2', '猴3', '猴4', '猴5', '猴1']
def monkey_king(n,m): #定义函数封装
list1 = [f'猴{i+1}' for i in range(n)] #列表用于表示猴子
import time #用于增加时间间隔
while len(list1) > 1 : #外循环2,游戏进行到只剩一只猴子
print(f'\n剩下参与报数名单:{[i for i in list1]}') #每次剔除猴子后,剩下猴子名单
print('从1开始报数!') #每次剔除猴子猴后,重新开始报数
for i in range(m): #内循环1,报数至第m只猴子
print(f'{list1[0]}: {i+1}',end='\t\t') #打印每次猴子报数
list1.append(list1.pop(0)) #将报完数的猴子放到圈最后
time.sleep(1) #报完数,时间间隔
print(f'{list1[-1]} out!') #内循环一次后,通报被剔除的猴子名字
del list1[-1] #内循环一次后,剔除猴子
time.sleep(3) #内循环一次后,时间间隔
return list1[0] #函数返回最后剩下的猴子名字
print('\nThe monkey king is:',monkey_king(7,5)) #调用函数
'''
剩下参与报数名单:['猴1', '猴2', '猴3', '猴4', '猴5', '猴6', '猴7']
从1开始报数!
猴1: 1 猴2: 2 猴3: 3 猴4: 4 猴5: 5 猴5 out!
剩下参与报数名单:['猴6', '猴7', '猴1', '猴2', '猴3', '猴4']
从1开始报数!
猴6: 1 猴7: 2 猴1: 3 猴2: 4 猴3: 5 猴3 out!
剩下参与报数名单:['猴4', '猴6', '猴7', '猴1', '猴2']
从1开始报数!
猴4: 1 猴6: 2 猴7: 3 猴1: 4 猴2: 5 猴2 out!
剩下参与报数名单:['猴4', '猴6', '猴7', '猴1']
从1开始报数!
猴4: 1 猴6: 2 猴7: 3 猴1: 4 猴4: 5 猴4 out!
剩下参与报数名单:['猴6', '猴7', '猴1']
从1开始报数!
猴6: 1 猴7: 2 猴1: 3 猴6: 4 猴7: 5 猴7 out!
剩下参与报数名单:['猴1', '猴6']
从1开始报数!
猴1: 1 猴6: 2 猴1: 3 猴6: 4 猴1: 5 猴1 out!
The monkey king is: 猴6
'''
'''
剩下参与报数名单:['猴1', '猴2', '猴3', '猴4', '猴5']
从1开始报数!
猴1: 1 猴2: 2 猴3: 3 猴4: 4 猴5: 5 猴1: 6 猴2: 7 猴2 out!
剩下参与报数名单:['猴3', '猴4', '猴5', '猴1']
从1开始报数!
猴3: 1 猴4: 2 猴5: 3 猴1: 4 猴3: 5 猴4: 6 猴5: 7 猴5 out!
剩下参与报数名单:['猴1', '猴3', '猴4']
从1开始报数!
猴1: 1 猴3: 2 猴4: 3 猴1: 4 猴3: 5 猴4: 6 猴1: 7 猴1 out!
剩下参与报数名单:['猴3', '猴4']
从1开始报数!
猴3: 1 猴4: 2 猴3: 3 猴4: 4 猴3: 5 猴4: 6 猴3: 7 猴3 out!
The monkey king is: 猴4
'''
总结:
-
充分利用类库(如列表等)
-
程序语言也是表达现实生活的一种方式
欢迎访问:https://blog.csdn.net/weixin_45221012/article/details/101630520
推荐阅读