使用两个while循环即可。
L = [i for i in range(1,42)] #第一轮所有人的站位
k = 0 #现在报数未开始
while len(L)>2: #目标:剩下两个人。只要人数大于两人,循环继续。
i = 0
while i<len(L):
k += 1
if k == 3: #当报数为3时,从列表中移除一人
L.remove(L[i])
k = 0 #报数归零
else: #这是最重要的一步,只有没有杀人时,才会让第二层while作用与下一人。
i +=1 #如果不明白,自行百度python的for循环中remove的缺点。这是对remove缺点的改进
print(L)
大家也可以从中学习到对for循环中remove缺点的改进。