赞
踩
给n个学生编号1~n,按顺序围成一圈,按1~3报数,凡报到3者出列,从1开始报数,直到最后剩下一个人,计算剩下这个人是第几号学生。
直接上代码吧
第一种方法:
- num = int(input("请输入学生人数:"))
- list = [i for i in range(1,num+1)]
- index = 0
- # print(list)
- while 1:
- temp = list.pop(0)
- index += 1
- if index == 3:
- index = 0
- continue
- list.append(temp)
- if len(list) == 1:
- break
- print("剩下学生的编号:",end='')
- print(list)
第二种方法 :
- n = int(input("请输入学生人数:"))
- a = [1 for i in range(1,n+1)]
- # print(a)
- i = 0
- s = 0
- while True:
- s = s + a[i]
- if s == 3:
- a[i] = 0
- s = 0
- n = n-1
- if n == 1:
- break
- i = i + 1
- if i == len(a):
- i = 0
- print("剩下学生的编号:",end='')
- print(a.index(1) + 1)
第三种方法:
- n = int(input("请输入学生人数:"))
- a = [i for i in range(1,n+1)]
-
- while 1:
- a.append(a[0])
- a.append(a[1])
- a.pop(0)
- a.pop(0)
- a.pop(0)
- if len(a) == 1:
- break
- print("剩下学生的编号:", end='')
- print(a)
第4种方法:
- s = int(input("请输入有多少个学生:"))
- a = [i for i in range(1,s+1)]
- l = 0
- while len(a) > 1:
- i = 0
- while i < len(a):
- l += 1
- if l == 3:
- del a[i]
- l = 0
- else:
- i += 1
- print("剩下学生的编号:", end='')
- print(a)
运行结果都是一样的,但是效率就不大一样了。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。