python题目:猴子选大王
题目内容:
一群猴子围成一圈,按1,2,3,…,m依次编号。
然后从第1只开始数,数到第n只,把它剔除圈,再重新开始数,
如此不停的进行下去,最后剩下的那只就是大王。
要求编程模拟次过程,封装一个函数,传入参数m,n,返回最后大王的编号
#####代码:
# 定义函数king,传入参数m是猴子总数,n是要剔除的数字
def king(m, n):
# 使用range函数将全部的猴子放入列表中
lt = list(range(1, m+1))
# 定义一个变量,用来计数
i = 0
# 使用while循环,只有剩下最后一个猴子,循环才会停止,选出大王
while len(lt) > 1:
# 每次把列表的第一个元素弹出,赋值给mokey
monkey = lt.pop(0)
# 每取出一个猴子,计数+1
i += 1
# 判断计数是否等于要剔除的数字,如果等于,剔除已经取出的猴子
if i == n:
# 将计数的i重新赋值为0
i = 0
# i的值比n小,所以还不需要踢猴子
else:
# 将取出的第一个猴子放入列表的最后一个,形成循环
lt.append(monkey)
# 当循环结束时,列表内只剩下一个猴子,返回列表的第一个元素,就是大王的编号
return lt[0]
m = int(input('请输入猴子的总数:'))
n = int(input('请输入n的值:'))
print(king(m, n))