Boucle à l'envers en utilisant des indices en Python?

j'essaie de boucler la boucle de 100 à 0. Comment je fais ça en Python?

for i in range (100,0) ça ne marche pas.

176
demandé sur Joan Venge 2009-05-15 21:17:06

12 réponses

Try range(100,-1,-1) , le troisième argument étant l'incrément à utiliser (documenté ici ).

279
répondu 0x6adb015 2014-08-23 17:55:31

À mon avis, c'est le plus lisible:

for i in reversed(xrange(101)):
    print i,
153
répondu Triptych 2009-05-15 17:24:09
for i in range(100, -1, -1)

et une solution légèrement plus longue (et plus lente):

for i in reversed(range(101))

for i in range(101)[::-1]
26
répondu kcwu 2009-05-15 17:21:39

généralement en Python, vous pouvez utiliser des indices négatifs pour commencer par le dos:

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

résultat:

50
40
30
20
10
15
répondu Blixt 2009-11-17 20:46:58

une autre solution:

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

résultat:

10
9
8
7
6
5
4
3
2
1

Conseil: Si vous utilisez cette méthode pour recompter les indices dans une liste, vous voudrez -1 à partir de la valeur 'y', car les indices de votre liste commenceront à 0.

4
répondu Andy T. 2011-07-24 14:48:06

court et doux. C'était ma solution en faisant cours de codeAcademy. Imprime une corde dans l'ordre de rev.

def reverse(text):
    string = ""
    for i in range(len(text)-1,-1,-1):
        string += text[i]
    return string    
2
répondu Mike 2015-05-18 19:27:33

for var in range(10,-1,-1) œuvres

1
répondu user2220115 2014-06-23 20:41:01

Pourquoi votre code n'a pas fonctionné

Vous code for i in range (100, 0) est très bien, sauf

le troisième paramètre ( step ) est par défaut +1 . Vous devez donc spécifier le troisième paramètre à range () comme -1 pour revenir en arrière.

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

NOTE: Cela inclut 100 & 0 dans la sortie.

il y a plusieurs façons.

Meilleure Façon

pour Pythonic way, cochez PEP 0322 .

c'est un exemple pythonique Python3 à imprimer de 100 à 0 (y compris 100 & 0).

for i in reversed(range(101)):
    print(i)
1
répondu mythicalcoder 2017-02-12 15:54:04

vous pouvez toujours augmenter la portée et soustraire d'une variable dans votre cas 100 - ii in range( 0, 101 ) .

for i in range( 0, 101 ):
    print 100 - i
1
répondu pnoob 2017-05-29 00:55:40

la réponse simple pour résoudre votre problème pourrait être comme ceci:

for i in range(100):
    k = 100 - i
    print k
1
répondu Yurii M. 2018-05-02 08:23:49

j'ai essayé cela dans l'un des exercices de codeacademy (inverser les chars dans une chaîne de caractères sans utiliser ni inversé: -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')
0
répondu Tabula Rasa 2014-07-07 18:55:05
a = 10
for i in sorted(range(a), reverse=True):
    print i
-2
répondu boomba 2015-09-22 11:50:33