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循环没有在程序中使用?感谢。
答案 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)]