1 #coding:utf-8
2 #__author__ = 'Diva'
3 # 用户输入n,n代表人数,围成一圈,顺序排号
4 # 从第一个开始报数,1,2,3,数到3的人,退出圈子
5
6 # 报数逻辑,数到3的把对应的位置置为0,直到剩下最后一个人
7 def num_report(list_create):
8 n = 0
9 list_size = len(list_create)
10 number_stay = list_size # 剩下的人数(值为1的个数)
11 while not number_stay == 1:
12 for i in range(list_size):
13 if list_create[i] == 1:
14 n = n + 1
15 if n == 3:
16 list_create[i] = 0
17 n = 0
18 number_stay = number_stay - 1
19 if i == list_size:
20 i = 0
21
22 # 通过报数函数最后生成的新的列表,遍历,找到唯一一个值不是0的人
23 def remove_num_3(list_create):
24 num_report(list_create)
25 print('经过报数逻辑最后得到的列表是:' + str(list_create))
26 i = 0
27 while i < len(list_create):
28 if list_create[i] == 1:
29 print('最后剩下的编号是:' + str(i + 1))
30 return True
31 i = i + 1
32
33 # 根据用户输入的人数n,生成列表,同时执行移除动作
34 def list_create_rm(n):
35 try:
36 if not n.isdigit():
37 return False
38 except ValueError as e:
39 pass
40
41 nn = int(n)
42 i = 0
43 list_create = []
44 while i < nn:
45 list_create.append(1)
46 i = i + 1
47 print('生成的列表是:' + str(list_create))
48 remove_num_3(list_create)
49
50 if __name__ == '__main__':
51 n = raw_input('请输入人数:')
52 list_create_rm(n)