菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 基础教程
(追記) (追記ここまで)

Python 练习实例69

Python 100例 Python 100例

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

程序分析:无。

程序源代码:

实例(Python 2.0+)

#!/usr/bin/python# -*- coding: UTF-8 -*-if__name__ == '__main__': nmax = 50n = int(raw_input('请输入总人数:'))num = []foriinrange(n): num.append(i + 1)i = 0k = 0m = 0whilem < n - 1: ifnum[i] != 0 : k += 1ifk == 3: num[i] = 0k = 0m += 1i += 1ifi == n : i = 0i = 0whilenum[i] == 0: i += 1printnum[i]

执行以上代码,输出结果:

$ python test.py 
请输入总人数:34
10

Python 100例 Python 100例

AI 思考中...

3 篇笔记 写笔记

  1. #0

    朦胧

    253***[email protected]

    5

    参考方法:

    # coding:utf-8
    n=int(input("输入人数:"))
    List=[]
    for i in range(1,n+1):
     List.append(i)
    sum=0
    while 1:
     t=0;
     for i in range(1,len(List)+1):
     sum=sum+1
     if (sum)%3==0:
     List.pop(i-1-t)
     t=t+1
     if len(List)==1:
     print("最后留下的是原来第%d号的那位" % List[0])
     break

    朦胧

    253***[email protected]

    9年前 (2017年06月14日)
  2. #0

    helloworld

    hel***[email protected]

    55

    参考方法:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    data = [i+1 for i in range(20)]
    print(data)
    i = 1 
    while len(data) > 1:
     if i % 3 == 0:
     data.pop(0)
     else:
     data.insert(len(data),data.pop(0))
     i += 1
    print(data)
    

    helloworld

    hel***[email protected]

    9年前 (2017年06月26日)
  3. #0

    薄荷可乐

    r49***[email protected]

    3

    参考方法:

    #coding=utf-8
    from collections import deque
    #添加进列表
    a=[]
    n=input('请输入几个人:')
    for i in range(1,n+1):
     a.append(i)
    b=deque(a) # 使用双段队列deque,目的是使用里面的方法回转rotate
    #创建删除符合3的数并且回转列表
    while True:
     b.remove(b[2]) #删除为3的数也就是索引为2的数
     b.rotate(-2) #将第三个数后面的数进行回转从头开始
     if len(b)==2: 
     print b[1] #最后剩两个数,那么最后的人一定是最后一个数
     break
    

    薄荷可乐

    r49***[email protected]

    9年前 (2017年09月19日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /