题目: 有一百个人,分别从 1 一直到 100。现在有人拿枪从第一个开始枪毙,每枪毙一个跳过一个,一直到一轮完成。接着在活着的人里面再次枪毙第一个,间隔一个再枪毙一个,请问最后活着的是这一百个人里的第几个人? 要求: 1、看谁撸得短 2、你们补充 xxk 的算法。。 people = 100 i=0 while peo ..

python练习题

本贴最后更新于 1898 天前,其中的信息可能已经时过境迁

题目:
有一百个人,分别从 1 一直到 100。现在有人拿枪从第一个开始枪毙,每枪毙一个跳过一个,一直到一轮完成。接着在活着的人里面再次枪毙第一个,间隔一个再枪毙一个,请问最后活着的是这一百个人里的第几个人?

要求:
1、看谁撸得短
2、你们补充

xxk 的算法。。

people = 100
i=0
while people > 1:
    i+=1
    people = people/2

print 2**i
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    336 引用 • 484 回帖 • 664 关注
18 回帖   
请输入回帖内容...
  • muyuballs  

    x=[x for x in range(0,100,2)]
    while len(x) >2 : x=x[::2]
    print(x[1])

  • muyuballs  

    x=[x for x in range(0,100,2)]

    while len(x) >2 : x=x[::2]

    print(x[1])

  • DASHU  

    看谁射(pao)得快

  • muyuballs  

    x=[x for x in range(0,100,2)]

    while len(x) >2 : x=x[::2]
    
    print(x[1])
    
  • muyuballs  

    格式好难搞啊

    x=[x for x in range(0,100,2)]
    
    while len(x) >2 : x=x[::2]
    
    print(x[1])
    
  • leifeng  

    print 64

  • 88250

    @Qiao 插入代码请看这里

  • raiz  

    people = range(1,101)
    while len(people)>2:
        people = people[::2]
    print(people[1])
    

  • raiz  

    num = 100
    people = range(1, num + 1)
    while len(people) > 2:
        people = people[ : : 2]
    survivor = people[1] if len(people) == 2 else people[0]
    

  • ch3nOr  

    people_list = [x for x in range(1, 101)]
    while len(people_list) != 1:
        people_list = people_list[1::2]
    print people_list[0]
    

  • sniperhgy  

    诸位的代码貌似都有一个共同的问题:[::2]是取得隔一个人的方法,但是这样的话,有些人不就反复被取出来了吗?比如一号。 改成[1::2]貌似才是把被枪毙的人去掉的方法。

  • 88250

    @sniperhgy @ch3nOr @raiz @Qiao

    为什么你们都玩 [Python] ....

  • hh  

    @88250 已从 Python 阵营转向 Golang 阵营。

  • 88250

    @hh 你昨天不是还在问 Python 问题么....

  • hh  

    @88250 还是习惯用 python 写脚本....

  • sniperhgy  

    @88250 "苦海无涯,python 是岸"`(∩_∩)′

  • raiz  

    @88250 没有为什么啊, 要用到啊,觉得 python 挺友好的

  • coswind  

    s = range(100)
    while len(s) > 1:
        s = [x for i, x in enumerate(s) if i % 2 == 1]
    print s.pop() + 1
    

请输入回帖内容 ...