首页 > 解决方案 > 谁能帮助解释为什么删除方括号会使函数正常工作?

问题描述

def roll(M=100,T=100,N=6):
trails=[]
N_plus_1=N+1
for m in range(M):
    collection=[random.randrange(1,N_plus_1)]
    while [sum(collection)<T]:
        collection.append(random.randrange(1,N_plus_1))
    trials.append(len(collection))
return sum(trials)/len(trials) 

为什么下面的滚动功能会一直运行并且不会产生答案。但是,如果我从 while 循环条件中删除方括号,那么 roll 函数就可以正常工作了吗?

标签: pythonmontecarlo

解决方案


这是因为 python 语法将方括号识别为列表。While 循环有一个条件,它需要是一个布尔值(True或者False)。当您在条件周围加上方括号时,它被视为一个列表。

>> [sum(collection) < T]
[True] # a list with True
>> sum(collection) < T
True   # a boolean

推荐阅读