对于Python中具有条件的循环

时间:2017-10-09 07:04:12

标签: python

我坚持这个问题。如何创建一个随机添加1到[0,0,0,0,0,0]列表的程序。我希望保持这种状态,直到列表中的所有数字至少为> 0

我的代码中有三个问题,我不知道它是什么。这是我的代码和列表Votes = [0,0,0,0,0,0:

  1. 第7次停止打印

  2. 有时它在一个项目

  3. 中以超过1开头

    我希望它以列表中的1开始,并从那里随机添加1到列表中的项目。

    所以我希望列表中的每个中至少有一个大于0。

    我的代码是

    Def get_all_prizes():
           For items in votes:
                  Items = random.radiant(0, 5)
                  Votes[items] + = 1
                   If items == 0:
                        False
                   Else:
                        Print(votes)
    

    这是印刷的内容

    [0, 0, 0, 0, 1, 0]
    [0, 0, 1, 0, 1, 0]
    [0, 1, 1, 0, 1, 0]
    [0, 1, 2, 0, 1, 0]
    [0, 1, 3, 0, 1, 0]
    [0, 1, 3, 1, 1, 0]
    

    它只做了6次,有时它就像这样开始。我希望它只是通过在列表中只有一个数字开始,就像之前打印的东西一样

    [0, 1, 2, 0, 1, 0]
    [0, 1, 3, 0, 1, 0]
    [0, 1, 3, 1, 1, 0]
    

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,您可以使用all检查每个元素是否大于0并继续使用while进行循环,直到此条件满了为止:

import random
n = 6
votes = [0] * n

while not all(votes):
    i = random.randrange(0, n)
    votes[i] += 1
    print(votes)

#   [0, 0, 0, 0, 1, 0]
#   [1, 0, 0, 0, 1, 0]
#   [1, 0, 1, 0, 1, 0]
#   [1, 0, 2, 0, 1, 0]
#   [1, 0, 2, 0, 1, 1]
#   [1, 0, 2, 1, 1, 1]
#   [1, 0, 2, 2, 1, 1]
#   [1, 0, 3, 2, 1, 1]
#   [2, 0, 3, 2, 1, 1]
#   [2, 0, 3, 3, 1, 1]
#   [2, 0, 3, 4, 1, 1]
#   [2, 0, 3, 4, 2, 1]
#   [2, 0, 3, 5, 2, 1]
#   [2, 0, 3, 6, 2, 1]
#   [3, 0, 3, 6, 2, 1]
#   [4, 0, 3, 6, 2, 1]
#   [4, 0, 3, 6, 3, 1]
#   [4, 0, 3, 6, 4, 1]
#   [4, 1, 3, 6, 4, 1]