python - 谁能帮助解释为什么删除方括号会使函数正常工作?
问题描述
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 函数就可以正常工作了吗?
解决方案
这是因为 python 语法将方括号识别为列表。While 循环有一个条件,它需要是一个布尔值(True
或者False
)。当您在条件周围加上方括号时,它被视为一个列表。
>> [sum(collection) < T]
[True] # a list with True
>> sum(collection) < T
True # a boolean
推荐阅读
- r - 在 Python 中处理分类数据中缺失值的更简单方法
- java - 有没有更好的方法来编写与我相同的代码?
- c# - 慢更新查询 SQLite
- php - “我试图将文本回显到一行中,没有换行符
- scala - 自定义循环 dsl 终止于循环体中条件匹配的点
- c# - 即使登录成功,向表添加输入(通过 ASP.NET Web 应用程序和 Azure)也不会在表中注册
- python - 使用 flask-sqlalchemy:当我添加或更改模型时,我必须重新启动应用程序和 nginx
- reactjs - StackNavigator 和 DrawerNavigator 不工作反应原生
- javascript - JavaScript 中感叹号的使用
- javascript - 为什么从 JavaScript 更改变换会导致重新计算样式事件,而 CSS 动画不会?