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.
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)
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
range(100)[::-1]
(which is automatically translated torange(9, -1, -1)
) - Tested in python 3.7 – Hassan