题目大概是:有10个人围成一圈,从第一个人数,数到3的人出局,问最后一个人是谁?
围成一圈,那就是无限循环,直至最后一个人,我们可以把10个人看做一个列表,每循环一次就把除3为0的数去除,下次再次循环时需要考虑上次循环的余数是0、1、2中的哪个。
具体代码如下
#!/usr/bin/env python #-*-coding:utf-8-*- n = 10 #创建初始列表person for i in range(1,n+1): person.append(i) #设置俩个循环变量j和i j = n i = 0 #无限循环 while True: #创建一个回收列表 dellist = [] if i = 0: for i in range(1,j+1): if i%3 == 0: dellist.append(person[i-1]) if i = 1: for i in range(2,j+2): if i%3== 0: dellist.append(person[i-2]) else: for i in range(3,j+3): if i%3 == 0: dellist.append(person[i-3]) i = i%3 j =j-len(dellist) for delperson in dellist: person.remove(delperson) if len(person) == 1: break print("Last person is %d"%person[0])