我坚持这个问题。如何创建一个随机添加1到[0,0,0,0,0,0]列表的程序。我希望保持这种状态,直到列表中的所有数字至少为> 0
我的代码中有三个问题,我不知道它是什么。这是我的代码和列表Votes = [0,0,0,0,0,0:
第7次停止打印
有时它在一个项目
我希望它以列表中的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]
答案 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]