当前位置:   article > 正文

python上机作业(约瑟夫环问题)_编写程序,从键盘输入人数和密码,输出留下的人的编号。python约瑟夫环

编写程序,从键盘输入人数和密码,输出留下的人的编号。python约瑟夫环

给n个学生编号1~n,按顺序围成一圈,按1~3报数,凡报到3者出列,从1开始报数,直到最后剩下一个人,计算剩下这个人是第几号学生。

直接上代码吧

第一种方法:

  1. num = int(input("请输入学生人数:"))
  2. list = [i for i in range(1,num+1)]
  3. index = 0
  4. # print(list)
  5. while 1:
  6. temp = list.pop(0)
  7. index += 1
  8. if index == 3:
  9. index = 0
  10. continue
  11. list.append(temp)
  12. if len(list) == 1:
  13. break
  14. print("剩下学生的编号:",end='')
  15. print(list)

第二种方法 :

  1. n = int(input("请输入学生人数:"))
  2. a = [1 for i in range(1,n+1)]
  3. # print(a)
  4. i = 0
  5. s = 0
  6. while True:
  7. s = s + a[i]
  8. if s == 3:
  9. a[i] = 0
  10. s = 0
  11. n = n-1
  12. if n == 1:
  13. break
  14. i = i + 1
  15. if i == len(a):
  16. i = 0
  17. print("剩下学生的编号:",end='')
  18. print(a.index(1) + 1)

第三种方法:

  1. n = int(input("请输入学生人数:"))
  2. a = [i for i in range(1,n+1)]
  3. while 1:
  4. a.append(a[0])
  5. a.append(a[1])
  6. a.pop(0)
  7. a.pop(0)
  8. a.pop(0)
  9. if len(a) == 1:
  10. break
  11. print("剩下学生的编号:", end='')
  12. print(a)

第4种方法:

  1. s = int(input("请输入有多少个学生:"))
  2. a = [i for i in range(1,s+1)]
  3. l = 0
  4. while len(a) > 1:
  5. i = 0
  6. while i < len(a):
  7. l += 1
  8. if l == 3:
  9. del a[i]
  10. l = 0
  11. else:
  12. i += 1
  13. print("剩下学生的编号:", end='')
  14. print(a)

运行结果都是一样的,但是效率就不大一样了。。。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/543727
推荐阅读
相关标签
  

闽ICP备14008679号