Decreasing for loops in Python impossible?

Question:

I could be wrong (just let me know and I’ll delete the question) but it seems python won’t respond to

for n in range(6,0):
    print n

I tried using xrange and it didn’t work either. How can I implement that?

Asked By: Gal

||

Answers:

for n in range(6,0,-1):
    print n
# prints [6, 5, 4, 3, 2, 1]
Answered By: Steve Tjoa
for n in range(6,0,-1):
    print n
Answered By: cji
>>> range(6, 0, -1)
[6, 5, 4, 3, 2, 1]
Answered By: vanza

This is very late, but I just wanted to add that there is a more elegant way: using reversed

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

gives:

4
3
2
1
0
Answered By: pratikm
for n in range(6,0,-1)

This would give you 6,5,4,3,2,1

As for

for n in reversed(range(0,6))

would give you 5,4,3,2,1,0

Answered By: Handy Jodana

0 is conditional value when this condition is true, loop will keep executing.10 is the initial value. 1 is the modifier where may be simple decrement.

for number in reversed(range(0,10,1)):
print number;
Answered By: Neo

Late to the party, but for anyone tasked with creating their own or wants to see how this would work, here’s the function with an added bonus of rearranging the start-stop values based on the desired increment:

def RANGE(start, stop=None, increment=1):
    if stop is None:
        stop = start
        start = 1

    value_list = sorted([start, stop])

    if increment == 0:
        print('Error! Please enter nonzero increment value!')
    else:
        value_list = sorted([start, stop])
        if increment < 0:
            start = value_list[1]
            stop = value_list[0]
            while start >= stop:
                worker = start
                start += increment
                yield worker
        else:
            start = value_list[0]
            stop = value_list[1]
            while start < stop:
                worker = start
                start += increment
                yield worker

Negative increment:

for i in RANGE(1, 10, -1):
    print(i)

Or, with start-stop reversed:

for i in RANGE(10, 1, -1):
    print(i)

Output:

10
9
8
7
6
5
4
3
2
1

Regular increment:

for i in RANGE(1, 10):
    print(i)

Output:

1
2
3
4
5
6
7
8
9

Zero increment:

for i in RANGE(1, 10, 0):
    print(i)

Output:

'Error! Please enter nonzero increment value!'
Answered By: Mark Moretto

For python3 where -1 indicate the value that to be decremented in each step

for n in range(6,0,-1):
print(n)

Answered By: SREERAG R NANDAN
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.