Python,下面的代码中有什么错误?范围(20,-1,0)返回和#x27;这是个错误
错误是:Python,下面的代码中有什么错误?范围(20,-1,0)返回和#x27;这是个错误,python,Python,错误是: for i in range(20,-1,0): print(i) 回溯(最近一次呼叫最后一次): 文件“D:/Python/b.py”,第1行,在 对于范围(20,-1,0)内的i: ValueError:range()arg 3不能为零 范围包含三个参数:开始、停止和步骤 Traceback (most recent call last): File "D:/Python/b.py", line 1, in <module> for i in ra
for i in range(20,-1,0):
print(i)
回溯(最近一次呼叫最后一次):
文件“D:/Python/b.py”,第1行,在
对于范围(20,-1,0)内的i:
ValueError:range()arg 3不能为零
范围
包含三个参数:开始、停止和步骤
Traceback (most recent call last):
File "D:/Python/b.py", line 1, in <module>
for i in range(20,-1,0):
ValueError: range() arg 3 must not be zero
表示从20
到-1
以大小0
为步长
这毫无意义,因此python抛出了一个错误。在for循环中:
range(20,-1,0):
若要按相反顺序迭代,需要传递第三个参数为负(阅读注释):
要按正常顺序进行迭代,您需要传递+ve编号:
>>> range(20,-1, -1) #
[20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> range(20,-1, -2)
[20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0]
阅读Python文档:
这是一个多功能函数,用于创建包含算术级数的列表。它是
最常用于for循环。参数必须是纯整数。如果
忽略步骤参数,默认为1。如果开始参数
如果省略,则默认为0。完整表单返回一个纯文本列表
整数[start,start+step,start+2*step,…]
。如果步骤是
正,最后一个元素是小于的最大start+i*步数
停止如果步骤为负,则最后一个元素是最小的start+i
*步骤
大于停止步骤
不得为零(否则会引发ValueError)
因此,您得到的是ValueError:range()arg 3不能为零
exception 我想您正在寻找:
range(start, stop[, step])
第三个元素是阶跃,它不能为零,如果你向后走,它应该是负数,而不是正数。呼叫帮助(范围):
返回包含整数算术级数的列表。
范围(i,j)
返回[i,i+1,i+2,…,j-1]代码>开始(!)默认为0
。
当给定步长时,它指定增量(或减量)。对于
例如,range(4)
返回[0,1,2,3]
。终点省略了
这些正是4个元素列表的有效索引
您想做什么?它告诉您错误:range()arg 3不能为零
您指定的步骤是0
,这是不可能的。我们如何从20
到-1
按0
计数?这个问题似乎离题了,因为它是关于从回溯中读取错误的。翻转第三个和第二个参数:list(范围(20,0,-1))
>>> range(0, 20, 1) # == range(0, 20) == range(20)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> range(0, 20, 2)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
range(start, stop[, step])
>>> range(20,-1,-1)
[20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>>
range(...)
range([start,] stop[, step]) -> list of integers