Sarthak Gupta
Sarthak Gupta

Reputation: 813

How range works with for loop in python

for i in range(1,4,-1):
    print(i)

Here , "i" will be initialized as "1" which lies in [1, 4) , So it should print 1 , but it doesn't print anything. Why ?

Upvotes: 0

Views: 129

Answers (3)

Rajan Sharma
Rajan Sharma

Reputation: 2281

Here your step value is negative

For a positive step, the contents of a range r are determined by the formula r[i] = start + step*i where i >= 0 and r[i] < stop.

For a negative step, the contents of the range are still determined by the formula r[i] = start + step*i, but the constraints are i >= 0 and r[i] > stop.

The first value would be 1 + (-1) * 0 = 1, which is less than your step value (4) and this fails the second constraint.

so if you go through the formula, its obvious nothing would get printed - Reference

Upvotes: 2

Thierry Lathuille
Thierry Lathuille

Reputation: 24290

According to this part of the documentation:

For a negative step, the contents of the range are still determined by the formula r[i] = start + step*i, but the constraints are i >= 0 and r[i] > stop.

Your first value would be 1 + (-1) * 0 = 1, which is less than your stop value of 4. So the second constraint applies, and this value isn't kept. Your range is empty.

Upvotes: 0

elkolotfi
elkolotfi

Reputation: 6210

In order to make it work you should have: range(4, 1, -1).

As said on the documentation :

For a positive step, the contents of a range r are determined by the formula r[i] = start + step*i where i >= 0 and r[i] < stop.

For a negative step, the contents of the range are still determined by the formula r[i] = start + step*i, but the constraints are i >= 0 and r[i] > stop.

Upvotes: 1

Related Questions