Python中range函数与for循环的用法及range(1,4,-1)无输出原因
嘿,这个问题问到点子上了,我来给你掰扯清楚:
Python中range函数与for循环的配合逻辑
首先,range()是Python里用来生成整数序列的内置函数,而for循环的作用就是逐个遍历这个序列里的每一个元素,把每个元素赋值给循环变量(比如你代码里的i),然后执行一次循环体的代码。
range()的用法主要有三种:
range(stop):从0开始生成到stop-1的整数,步长默认是1,比如range(3)生成[0,1,2]range(start, stop):从start开始生成到stop-1的整数,步长默认1,比如range(1,4)生成[1,2,3]range(start, stop, step):从start开始,每次增减step的值,直到接近但不越过stop为止
当for循环和range配合时,其实就是把range生成的序列里的每个数依次拿出来,丢给循环变量,然后跑一遍循环体的代码——比如print(i)就是把当前的i打印出来。
为什么
for i in range(1,4,-1): print(i)没有输出? 这得搞懂range()在步长为负数时的生成规则:当step是负数时,range会从start开始,每次减少step的绝对值,但只有当前数值严格大于stop的时候,才会被加入序列。
咱们看你的代码:range(1,4,-1),这里start=1,stop=4,step=-1。一开始判断初始值1是否大于stop=4?1>4显然不成立,所以这个range直接生成了一个空序列。for循环遍历空序列的时候,根本不会进入循环体,自然也就没有任何输出了。
如果想实现从某个数倒着数到另一个数,比如从4倒到1,你应该写成range(4,0,-1)——这时候start=4,stop=0,step=-1,生成的序列是[4,3,2,1],for循环遍历这个序列就会输出对应的数啦。
内容的提问来源于stack exchange,提问作者Sarthak Gupta




