python之找最后一个人

 

题目大概是:有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])

  

posted @ 2018-08-24 16:03  水里的芋头  阅读(290)  评论(0编辑  收藏  举报