我正在学习python,我有一个小片段,如下所示:
for i in range(-10, 11, -6):
print(i)这既没有引发错误,也没有给出输出。令人惊讶的是,我预期会出现一个错误,因为11的停止值永远不会被击中。知道为什么会这样吗?
发布于 2022-06-14 13:09:31
范围表示不可变的数字序列。
这里是range类型的文档。
就你而言:
对于负步骤,范围的内容仍然由公式ri = start + step*i决定,但约束是i >= 0和ri > stop。 如果r不满足value约束,range对象将为空。
因此,让我们尝试为您的情况生成范围优先元素。
r[0] = -10 + -6 * 0
r[0] = -10但是-10小于停止,所以算法在这里停止,生成一个空范围。
>>> range(-10, 11, -6)
[]因此,在您的代码范围内将等效于以下内容:
for i in []: # empty array, 0 iterations of loop, nothing printed to console
print(i)这段代码是完全有效的python,“遍历一个空范围并完成”--这就是为什么(1)没有任何打印为范围的内容是空的,并且(2)没有错误,因为代码是有效的。
https://stackoverflow.com/questions/72617277
复制相似问题