Sto provando ad eseguire il ciclo da 100 a 0. Come faccio a farlo in Python?Loop indietro usando gli indici in Python?
for i in range (100,0)
non funziona.
Sto provando ad eseguire il ciclo da 100 a 0. Come faccio a farlo in Python?Loop indietro usando gli indici in Python?
for i in range (100,0)
non funziona.
Provare range(100,-1,-1)
, il terzo argomento è l'incremento da utilizzare (documentato here).
potresti anche usare xrange invece di range se non hai bisogno dell'elenco dei numeri, ma questa è la risposta corretta. –
Anche io devo usare questo per cancellare gli elementi dalla collezione, ecco perché volevo solo gli indici. –
qual è il secondo argomento? – deltanine
for i in range(100, -1, -1)
e alcuni leggermente più lungo (e più lento) Soluzione:
for i in reversed(range(101))
for i in range(101)[::-1]
A mio parere, questo è il più leggibile:
for i in reversed(xrange(101)):
print i,
Questo è migliore della risposta accettata poiché in realtà non assegna tutti i numeri in memoria (in Python 3 la risposta accettata non lo sarebbe neanche), in più è più ovvio cosa sta succedendo. – Blixt
Python prima di 2.6 assegna tutti i numeri, perché invertito non ha modo di dire all'arrange di andare indietro ... (Poiché Python 2.6 chiama __verso __().) –
@Triptych preferisco questa soluzione – zulucoda
Generalmente in Python, è possibile utilizzare gli indici negativi per iniziare da dietro:
numbers = [10, 20, 30, 40, 50]
for i in xrange(len(numbers)):
print numbers[-i - 1]
Risultato:
50
40
30
20
10
Un'altra soluzione:
z = 10
for x in range (z):
y = z-x
print y
Risultato:
10
9
8
7
6
5
4
3
2
1
Suggerimento: Se si utilizza questo metodo per contare di nuovo gli indici in un elenco, si vuole -1 dal valore "y", poiché gli indici della lista inizieranno a 0.
for var in range(10,-1,-1)
funziona
ho provato questo in uno degli esercizi Codecademy (retromarcia caratteri di una stringa senza utilizzare né invertita :: -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')
breve e dolce. Questa era la mia soluzione quando facevo il corso CodeAcademy. Stampa una stringa in ordine di rev.
def reverse(text):
string = ""
for i in range(len(text)-1,-1,-1):
string += text[i]
return string
Oppure 'text [:: - 1]' – PascalVKooten
a = 10
for i in sorted(range(a), reverse=True):
print i
Benvenuto in Stack Overflow! Ti preghiamo di considerare di modificare il tuo post per aggiungere ulteriori spiegazioni su cosa fa il tuo codice e perché risolverà il problema. Una risposta che per lo più contiene solo codice (anche se funziona) di solito non aiuta l'OP a capire il loro problema. – SuperBiasedMan
Ti rendi conto che l'uso di 'ordinato' memorizzerà inutilmente l'intero elenco in memoria, giusto? Questo è uno spreco e non è fattibile per grandi 'a'. –
Perché il codice non ha funzionato
codice È for i in range (100, 0)
va bene, tranne
il terzo parametro (step
) è di default +1
. Quindi devi specificare il 3 ° parametro su range() come -1
per tornare indietro.
for i in range(100, -1, -1):
print(i)
NOTA: Questo include 100 & 0 nell'output.
Esistono diversi modi.
modo migliore
Per modo divinatorio, controllare PEP 0322.
Questo è Python3 esempio pitone per stampare da 100 a 0 (incluso 100 & 0).
for i in reversed(range(101)):
print(i)
si può sempre fare crescente gamma e sottrarre da una variabile nel vostro caso in cui 100 - i
i in range(0, 101)
.
for i in range(0, 101):
print 100 - i
La risposta più semplice per risolvere il tuo problema potrebbe essere simile a questo:
for i in range(100):
i = 100 - i
print i
Il modo migliore è quello di utilizzare la funzione gamma
Caso 1. Quando sappiamo che dobbiamo certo numero di iterazioni che può semplicemente usare la funzione range come questa
Prima di usare range() lasciatemi dare una breve descrizione sul range()
ci vogliono tre parametri prima sta iniziando numero 2 ° ultimo numero tranne questo terza differenza tra ogni iterazione
for step in range(5,-1,-1):
print(step)
Caso 2 quando abbiamo lista e vogliamo iterare lista in ordine inverso
words = ['cat','xat','hat','mat']
for word in range(len(words)-1,-1,-1):
print(words[word])
BTW, probabilmente si desidera eseguire il ciclo da 99 a 0 e raramente da 100 a 0. Ciò influenza le risposte. –