2017-10-09 238 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]