为什么我的for循环被忽略了?

时间:2015-04-05 19:23:52

标签: python dice

import random
stats = [0]*6
fixed = [1,2,3,4,5,6]
def single_roll(n,fixed=(),sides=6):
    for x in range(0,n):
        dice = random.randint(1,6)
        if dice == 1:
           stats[0] += 1
        elif dice == 2:
           stats[1] += 1
        elif dice == 3:
           stats[2] += 1
        elif dice == 4:
           stats[3] += 1
        elif dice == 5:
           stats[4] += 1
        elif dice == 6:
           stats[5] += 1
x = list(zip(fixed, stats))
single_roll(10)
print (x)

当我尝试运行它时,为什么它会为统计列表生成一个0'的列表?为什么我的for循环没有在程序中使用?感谢。

2 个答案:

答案 0 :(得分:3)

您在调用x函数之前创建了single_roll,此时stats列表全为零。 stats用于计算x的值,但之后x是一个全新列表,与stats没有关联,因此即使single_roll修改{ {1}},stats不会改变。您可以在通话后输入作业:

x

答案 1 :(得分:0)

你所要做的就是:

import random
stats = [0]*6
fixed = [1,2,3,4,5,6]
def single_roll(n,fixed=(),sides=6):
    for x in range(0,n):
        dice = random.randint(1,6)
        if dice == 1:
           stats[0] += 1
        elif dice == 2:
           stats[1] += 1
        elif dice == 3:
           stats[2] += 1
        elif dice == 4:
           stats[3] += 1
        elif dice == 5:
           stats[4] += 1
        elif dice == 6:
           stats[5] += 1


single_roll(10)      
x = list(zip(fixed, stats))  #place this after the function call
print (x)

现在输出:

[(1, 1), (2, 2), (3, 2), (4, 2), (5, 2), (6, 1)]