Jul 03, 2024

Wiki

Python

Aide

edit SideBar

Search

Le For


Présentation de la méthode range

La méthode range permet de créer rapidement des listes d'entiers :

  • L'instruction range(n) renvoie la liste des entiers de 0 à n-1,
  >>> range(5)
[0, 1, 2, 3, 4]
  • range(a,b) renvoie la liste des entiers de a à b-1.
  >>> range(3,8)
[3, 4, 5, 6, 7]
  • range(a,b,c) renvoie la liste des entiers de a à b-1, avec un pas de c.
  >>> range(3,12,2)
[3, 5, 7, 9, 11]
  • Ce pas peut être négatif :
  >>> range(11,7,-1)
[11, 10, 9, 8]

Notons pour finir que la méthode range ne permet de manipuler que des entiers.

Le range dans le for

La boucle for (pour) peut parcourir tout "itérable" : chaînes de caractères, listes d'entiers ou d'autres objets, tuples... L'itérable de base pour for une liste d'entiers, donc écrite avec range.

Ainsi, lorsque l'on écrit :

  >>> for i in range(5) :
  ...     print i,
  ...

...on obtient 0 1 2 3 4.

Il faut comprendre ce qui précède ainsi : "Pour i parcourant la liste d'entier range(5)=[0,1,2,3,4], afficher i."

Ainsi, pour calculer la somme des 100 premiers entiers, on peut procéder ainsi :

  >>> S = 0
  >>> for k in range(101):
  ...     S = S + k
  ...
  >>> print S
  5050

Notons, pour finir, qu'à la fin de la boucle, la variable de boucle existe toujours, et posséde sa dernière valeur prise :

  >>> for k in range(5):
  ...     print k,
  ... 
  0 1 2 3 4
  >>> k
  4

Le for et les autres itérables

Une chaîne de caractères, comme mot, peut aussi être itérée : il y a un premier caractère, puis un second, etc. On peut donc utiliser un for ici, quand on souhaite demander : pour un caractère dans la chaîne de caractères suivante...

  >>> for lettre in "mot" :
  ...     print lettre,
  ...
  mot

Ainsi, on l'a dit, une boucle for peut parcourir une liste, un tuple ou une chaîne de caractères.

A choisir, il vaut mieux utiliser for avec un itérable non modifiable (une chaîne de caractères, un tuple plutôt qu'une liste). En effet, for évalue dynamiquement les éléments à chaque cycle, et des effets de bords imprévisibles peuvent survenir si la liste itérée a été modifiée.

Comparer, par exemple, les deux boucles suivantes :

  >>> liste = [1, 2, 3]
  >>> for k in liste:
  ...     print k
  ...     liste = []
  ...  
  1
  2
  3
  >>> liste = [1, 2, 3]
  >>> for k in liste:
  ...     print liste[k-1]
  ...     liste = []
  ... 
  1
  Traceback (most recent call last):
    File "<stdin>", line 2, in <module>
  IndexError: list index out of range
  >>> 

pass, continue et break

Pour faciliter l'écritures de boucles, Python utilise trois mots-clés :

pass
ne fait rien.
continue
interromp l'exécution d'une boucle, mais reprend au début de cette boucle à l'itération prochaine.
break
arrête définitivement la boucle.

Page Actions

Recent Changes

Group & Page

Back Links