运气最佳游戏: 一群人排成一圈,按“1,2,......n”依次编号。然后从第1个人开始数,数到m把 踢出圈,其后的人再从1开始数,数到m,再把它踢出去...... 如此不停地进行下去直到最后只剩下一个人为止,那个人就是运气最佳。 具体需求如下所示。 编写函数模拟该游戏。 根据用户输入的m和n,指定人的总数n和踢出第m个人。 最后输出运气最佳的人的编号。
n = eval(input("请输入总人数:"))
m = eval(input("请输踢出第几个人:"))
list1 = []
for i in range(1, n+1):
list1.append(i)
while len(list1) != 1:
if len(list1) >= m:
list1 = list1[m:] + list1[0:m-1]
print(list1)
elif len(list1) < m:
while len(list1) != 1:
if m%len(list1) != 0:
list1 = list1[m%len(list1):] + list1[0:m%len(list1)-1]
else:
list1 = list1[0:-2]
print("最佳运气人编号为:%d号!"%list1[0])
这个可以吗?
n=int(input('总人数:'))
m=int(input('第m个人:'))
list=list(range(1,n+1))
while(len(list)!=1):
list=list[m:]+list[0:m-1]
while len(list)<m:
try:
m_1=m%len(list) if m%len(list)!=0 else len(list)
except:
break
list=list[m_1:]+list[0:m_1-1]
if len(list)==1:
print('list=',list)
break
n = int(input("请输入参与游戏的总人数:"))
ls = []
def biaohao(n,m):
for a in range(1,n+1):
ls.append(a)
print("人员编号列表:{}".format(ls))
ls.remove(m)
print("剔除 m 后剩余人:{}".format(ls))
print("剩余人数:{}".format(len(ls)))
ls.clear()
while n>1:
m = int(input("请输入想要剔除人的编号:"))
if m >n:
print("输入的m需要小于目前人数,请重新输入...")
continue
biaohao(n,m)
n = n-1
我也是新手,可能题意理解有问题,不知道是不是你想要的结果