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 + 115 if n == 3:16 list_create[i] = 017 n = 018 number_stay = number_stay - 119 if i == list_size:20 i = 021 22 # 通过报数函数最后生成的新的列表,遍历,找到唯一一个值不是0的人23 def remove_num_3(list_create):24 num_report(list_create)25 print('经过报数逻辑最后得到的列表是:' + str(list_create))26 i = 027 while i < len(list_create):28 if list_create[i] == 1:29 print('最后剩下的编号是:' + str(i + 1))30 return True31 i = i + 132 33 # 根据用户输入的人数n,生成列表,同时执行移除动作34 def list_create_rm(n):35 try:36 if not n.isdigit():37 return False38 except ValueError as e:39 pass40 41 nn = int(n)42 i = 043 list_create = []44 while i < nn:45 list_create.append(1)46 i = i + 147 print('生成的列表是:' + str(list_create))48 remove_num_3(list_create)49 50 if __name__ == '__main__':51 n = raw_input('请输入人数:')52 list_create_rm(n)