I am trying to loop from 100 to 0. How do I do this in Python?

`for i in range (100,0)`

doesn’t work.

Skip to content
# Loop backwards using indices in Python?

## The Question :

*315 people think this question is useful*
*The Question Comments :*
## The Answer 1

*435 people think this answer is useful*
## The Answer 2

*209 people think this answer is useful*
## The Answer 3

*40 people think this answer is useful*
## The Answer 4

*18 people think this answer is useful*
## The Answer 5

*12 people think this answer is useful*
## The Answer 6

*6 people think this answer is useful*
## The Answer 7

*5 people think this answer is useful*
## The Answer 8

*1 people think this answer is useful*
## The Answer 9

*1 people think this answer is useful*
## The Answer 10

*1 people think this answer is useful*
## The Answer 11

*1 people think this answer is useful*
## The Answer 12

*0 people think this answer is useful*
## The Answer 13

*0 people think this answer is useful*
## The Answer 14

*0 people think this answer is useful*
## The Answer 15

*-1 people think this answer is useful*
## The Answer 16

*-2 people think this answer is useful*

2021-01-18

I am trying to loop from 100 to 0. How do I do this in Python?

`for i in range (100,0)`

doesn’t work.

- BTW, you probably want to loop from 99 to 0, and rarely from 100 to 0. This affects the answers.
- @Acumenus That was exactly what I searched for when reached here. And for the record the solution is to simply write:
`range(100)[::-1]`

(which is automatically translated to`range(9, -1, -1)`

) – Tested in python 3.7

Try `range(100,-1,-1)`

, the 3rd argument being the increment to use (documented here).

(“range” options, start, stop, step are documented here)

In my opinion, this is the most readable:

for i in reversed(xrange(101)): print i,

for i in range(100, -1, -1)

and some slightly longer (and slower) solution:

for i in reversed(range(101)) for i in range(101)[::-1]

Generally in Python, you can use negative indices to start from the back:

numbers = [10, 20, 30, 40, 50] for i in xrange(len(numbers)): print numbers[-i - 1]

Result:

50 40 30 20 10

**Why your code didn’t work**

You code `for i in range (100, 0)`

is fine, *except*

the third parameter (`step`

) is by default `+1`

. So you have to specify 3rd parameter to range() as `-1`

to step backwards.

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

NOTE: This includes 100 & 0 in the output.

There are multiple ways.

**Better Way**

For pythonic way, check PEP 0322.

This is Python3 pythonic example to print from 100 to 0 (including 100 & 0).

for i in reversed(range(101)): print(i)

Another solution:

z = 10 for x in range (z): y = z-x print y

Result:

10 9 8 7 6 5 4 3 2 1

Tip: If you are using this method to count back indices in a list, you will want to -1 from the ‘y’ value, as your list indices will begin at 0.

The simple answer to solve your problem could be like this:

for i in range(100): k = 100 - i print(k)

`for var in range(10,-1,-1)`

works

Short and sweet. This was my solution when doing codeAcademy course. Prints a string in rev order.

def reverse(text): string = "" for i in range(len(text)-1,-1,-1): string += text[i] return string

You can always do increasing range and subtract from a variable in your case `100 - i`

where `i in range( 0, 101 )`

.

for i in range( 0, 101 ): print 100 - i

I wanted to loop through a two lists backwards at the same time so I needed the negative index. This is my solution:

a= [1,3,4,5,2] for i in range(-1, -len(a), -1): print(i, a[i])

Result:

-1 2 -2 5 -3 4 -4 3 -5 1

I tried this in one of the codeacademy exercises (reversing chars in a string without using reversed nor :: -1)

def reverse(text): chars= [] l = len(text) last = l-1 for i in range (l): chars.append(text[last]) last-=1 result= "" for c in chars: result += c return result print reverse('hola')

Oh okay read the question wrong, I guess it’s about going backward in an array? if so, I have this:

array = ["ty", "rogers", "smith", "davis", "tony", "jack", "john", "jill", "harry", "tom", "jane", "hilary", "jackson", "andrew", "george", "rachel"] counter = 0 for loop in range(len(array)): if loop <= len(array): counter = -1 reverseEngineering = loop + counter print(array[reverseEngineering])

You might want to use the `reversed`

function in python.
Before we jump in to the code we must remember that the `range`

function always returns a list (or a tuple I don’t know) so `range(5)`

will return `[0, 1, 2, 3, 4]`

. The `reversed`

function reverses a list or a tuple so `reversed(range(5))`

will be `[4, 3, 2, 1, 0]`

so your solution might be:

for i in reversed(range(100)): print(i)

You can also create a custom reverse mechanism in python. Which can be use anywhere for looping an iterable backwards

class Reverse: """Iterator for looping over a sequence backwards""" def __init__(self, seq): self.seq = seq self.index = len(seq) def __iter__(self): return self def __next__(self): if self.index == 0: raise StopIteration self.index -= 1 return self.seq[self.index] >>> d = [1,2,3,4,5] >>> for i in Reverse(d): ... print(i) ... 5 4 3 2 1

a = 10 for i in sorted(range(a), reverse=True): print i