J'essaie de passer de 100 à 0 en boucle. Comment faire cela en Python?
for i in range (100,0)
ne fonctionne pas.
Essayez range(100,-1,-1)
, le troisième argument étant l'incrément à utiliser (documenté ici ).
À mon avis, c'est le plus lisible:
for i in reversed(xrange(101)):
print i,
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]
Généralement en Python, vous pouvez utiliser des indices négatifs pour commencer à partir de l’arrière:
numbers = [10, 20, 30, 40, 50]
for i in xrange(len(numbers)):
print numbers[-i - 1]
Résultat:
50
40
30
20
10
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
Astuce: Si vous utilisez cette méthode pour compter les index dans une liste, vous voudrez -1 à partir de la valeur 'y', car vos index de liste commenceront à 0.
La réponse simple pour résoudre votre problème pourrait être la suivante:
for i in range(100):
k = 100 - i
print k
Court et doux. C’était ma solution lorsque je suivais le cours de codecademy. Imprime une chaîne dans l'ordre des rev.
def reverse(text):
string = ""
for i in range(len(text)-1,-1,-1):
string += text[i]
return string
Pourquoi votre code n'a pas fonctionné
Votre code for i in range (100, 0)
est correct, sauf _
le troisième paramètre (step
) est par défaut +1
. Vous devez donc spécifier le 3ème paramètre de range () sous la forme -1
pour revenir en arrière.
for i in range(100, -1, -1):
print(i)
REMARQUE: ceci inclut 100 & 0 dans la sortie.
Il y a plusieurs façons.
Meilleure façon
Pour le mode Pythonic, vérifiez PEP 0322 .
Ceci est un exemple Python Python3 pour imprimer de 100 à 0 (y compris 100 & 0).
for i in reversed(range(101)):
print(i)
for var in range(10,-1,-1)
fonctionne
Vous pouvez toujours augmenter la portée et soustraire à une variable de votre cas 100 - i
où i in range( 0, 101 )
.
for i in range( 0, 101 ):
print 100 - i
Oh, d'accord, lisais mal la question, je suppose qu'il s'agit de revenir en arrière dans un tableau? si oui, j'ai ceci:
array = ["ty", "rogers", "smith", "davis", "tony", "jack", "john", "jill", "harry", "tom", "jane", "hilary", "jackson", "andrew", "george", "rachel"]
counter = 0
for loop in range(len(array)):
if loop <= len(array):
counter = -1
reverseEngineering = loop + counter
print(array[reverseEngineering])
J'ai essayé cela dans l'un des exercices de codeacademy (inversion des caractères dans une chaîne sans utiliser reverse ni :: -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')
Je voulais faire défiler deux listes en même temps, il me fallait donc un index négatif. Ceci est ma solution:
a= [1,3,4,5,2]
for i in range(-1, -len(a), -1):
print(i, a[i])
Résultat:
-1 2
-2 5
-3 4
-4 3
-5 1