2017-10-09 163 views
-1

我被困在这个问题上。我怎样才能创建一个程序,随机地将一个[0,0,0,0,0,0]列表加1。我想继续下去,直到列表中的所有数字都至少大于0.For循环条件在Python

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

  1. 它的第七次

  2. 有时,它拥有超过1开始在后停止打印item

我希望它在列表中仅以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次,有时候会像这样开始。我希望它在列表像以前打印的东西只具有1号刚开始

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

请不要添加图像。请将您的代码直接放入问题中。 –

+2

请将您的代码格式化为代码(使用'{}'按钮),并使用真正的代码和正确装箱的关键字。 – SiHa

+0

您的代码完全不可读。请发布一个适当的mcve(https://stackoverflow.com/help/mcve) –

回答

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]