为什么range函数倒着读取写step=-1,不显示结果
如下代码,没有正确的打印ifor i in range(-4,0,-1):
print(i) 这是因为使用`range`函数时,当指定了`step`为负数时,起始值应该比结束值小。但是在你的代码中,起始值为-4,而结束值为0,这样的话`range`函数就无法生成任何数字了。
要解决这个问题,你可以将起始值和结束值互换一下,代码如下:
for i in range(0, -5, -1):
print(i)
这样就能按照倒序的方式打印出-1、-2、-3、-4这些数字了。记住,当使用负数的步长时,起始值要比结束值大。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 星许Sky 于 2024-4-14 10:01 编辑
内部机制就是这样的。
在Python中文文档中有这么一段话:
如果 step 为负值,确定 range 内容的公式仍然为 r = start + step*i,但限制条件改为 i >= 0 且 r > stop.
如果 r 不符合值的限制条件,则该 range 对象为空。
你使用的语句是这样的
for i in range(-4,0,-1):
print(i)
其生成的列表第一个元素-4+-1*0=-4,-4<0,就已经不符合条件,所以直接返回空列表。
才疏学浅,如有错误,还请指正。 -4 + k(-1) 不可能到 0 好吧
你要改成:
for i in range(-4,0,1):
print(i) 本帖最后由 jackz007 于 2024-4-15 14:26 编辑
for i range(a, b, step) :
如果 step < 0,必须满足 a >b,在本例中,step = -1 < 0,而 a = -4,b = 0,a > b 的条件没有得到满足,这就是问题所在。
【修改方法】,只要 a、b 位置互换即可。
for i in range(0, -4, -1):
print(i) 当指定了step为负数时,起始值应该比结束值小。
有两种修改方法:
1.for i in range(-4, 0, 1):
print(i)
2.for i in range(0, -4, -1):
print(i)
页:
[1]