with Fazer um loop de trás para frente usando índices em Python?




python with django pdf (11)

Eu estou tentando loop de 100 para 0. Como faço isso em Python?

for i in range (100,0) não funciona.


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

Curto e grosso. Esta foi a minha solução ao fazer o curso codeAcademy. Imprime uma string em ordem de rotação.

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

Na minha opinião, isso é o mais legível:

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

Por que seu código não funcionou

Você codifica for i in range (100, 0) está bem, exceto

o terceiro parâmetro ( step ) é por padrão o +1 . Então você tem que especificar o 3º parâmetro para o intervalo () como -1 para retroceder.

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

NOTA: Isso inclui 100 e 0 na saída.

Existem várias maneiras.

Melhor maneira

Para o modo pythonic, verifique o PEP 0322 .

Este é o exemplo pythonico do Python3 para imprimir de 100 a 0 (incluindo 100 e 0).

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

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

e algumas soluções um pouco mais longas (e mais lentas):

for i in reversed(range(101))

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

Eu tentei isso em um dos exercícios de codeacademy (invertendo chars em uma string sem usar invertido nem :: -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')

Geralmente em Python, você pode usar índices negativos para começar pela parte de trás:

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

Resultado:

50
40
30
20
10

Você sempre pode fazer aumentar o intervalo e subtrair de uma variável no seu caso 100 - i onde i in range( 0, 101 ) .

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

Tente o range(100,-1,-1) , o terceiro argumento é o incremento a ser usado (documentado here ).


A resposta simples para resolver o seu problema pode ser assim:

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

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





loops