Gal
Gal

Reputation: 23662

Decreasing for loops in Python impossible?

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?

Upvotes: 122

Views: 212402

Answers (8)

SREERAG R NANDAN
SREERAG R NANDAN

Reputation: 713

For python3 where -1 indicate the value that to be decremented in each step for n in range(6,0,-1): print(n)

Upvotes: 0

Mark Moretto
Mark Moretto

Reputation: 2348

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!'

Upvotes: 1

Neo
Neo

Reputation: 31

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;

Upvotes: 2

Handy Jodana
Handy Jodana

Reputation: 151

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

Upvotes: 15

pratikm
pratikm

Reputation: 4254

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

Upvotes: 57

vanza
vanza

Reputation: 9903

>>> range(6, 0, -1)
[6, 5, 4, 3, 2, 1]

Upvotes: 3

cji
cji

Reputation: 6715

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

Upvotes: 3

Steve Tjoa
Steve Tjoa

Reputation: 61074

for n in range(6,0,-1):
    print n
# prints [6, 5, 4, 3, 2, 1]

Upvotes: 278

Related Questions