Python: Boucles en Python: Difference between revisions

From Wiki Cours
Jump to navigation Jump to search
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
[[Memento_Python|<--Sommaire]]
== Boucle While ==
== Boucle While ==


Line 12: Line 14:
i=0
i=0
while i<10:
while i<10:
     print i**2
     print(i**2)
     i += 1
     i += 1
</source>
</source>
Cette structure est utile dans le cas où le test de condition est plus compliqué que dans cet exemple et déterminé après un processus non-trivial à l'intérieur du bloc d’exécution. Il faut en particulier être certain que la condition test=False soit réaliser pour ne pas créer une boucle infinie. Dans le cas ci-dessous, on préférera utiliser une boucle for.  
Cette structure est utile dans le cas où le test de condition est plus compliqué que dans cet exemple et déterminé après un processus non-trivial à l'intérieur du bloc d’exécution. Il faut en particulier être certain que la condition test=False soit réaliser pour ne pas créer une boucle infinie. Dans le cas ci-dessous, on préférera utiliser une boucle for.


== Boucle For ==
== Boucle For ==
Line 29: Line 31:
<source lang="py">
<source lang="py">
for i in range(10):
for i in range(10):
     print i**2
     print(i**2)
</source>
</source>
dont on voit qu'il est plus concis.
dont on voit qu'il est plus concis.
Noter que pour gagner un peu d'espace, il est possible de mettre le contenu du bloc d'exécution en ligne si celui-ci ne comporte qu'une seule ligne
Noter que pour gagner un peu d'espace, il est possible de mettre le contenu du bloc d'exécution en ligne si celui-ci ne comporte qu'une seule ligne
<source lang="py">
<source lang="py">
for i in range(10): print i**2
for i in range(10): print(i**2)
</source>
</source>


Line 42: Line 44:
<source lang=python>
<source lang=python>
for i in range(6):
for i in range(6):
     print i
     print(i)
     for j in range(6):
     for j in range(6):
         if i*j >= 10:
         if i*j >= 10:
             print i,j
             print(i,j)
             break
             break
</source>
</source>
L'instruction continue poursuit la boucle mais en renvoyant au début de l'exécution du bloc sous la boucle:
Le mot-clé '''continue''' poursuit la boucle mais en renvoyant au début de l'exécution du bloc sous la boucle:
<source lang=python>
<source lang=python>
for i in range(6):
for i in range(6):
     print i
     print(i)
     for j in range(6):
     for j in range(6):
         if i*j >= 10:
         if i*j >= 10:
             print i,j
             print("#",i,j)
             continue
             continue
        print("%",i,j)
</source>
</source>

Latest revision as of 10:33, 3 October 2016

<--Sommaire

Boucle While

Une première manière d'effectuer des boucles en Python utilise un test logique et le mot-clé while:

while test:
    ...
    ...

Il ne faut pas oublier d'indenter le bloc correspondant à l’exécution de la boucle. Par exemple, on peut faire

i=0
while i<10:
    print(i**2)
    i += 1

Cette structure est utile dans le cas où le test de condition est plus compliqué que dans cet exemple et déterminé après un processus non-trivial à l'intérieur du bloc d’exécution. Il faut en particulier être certain que la condition test=False soit réaliser pour ne pas créer une boucle infinie. Dans le cas ci-dessous, on préférera utiliser une boucle for.

Boucle For

La boucle for permet de parcourir des éléments d'un 'iterable' qui est un objet sur lequel on peut itérer.

for i in iterable:
    ...
    ...

Un iterable peut être un conteneur, typiquement une liste, ou un algorithme qui génère une succession d'élément. Dans ce cours, on utilisera essentiellement des listes. L'exemple précédent se réécrit en

for i in range(10):
    print(i**2)

dont on voit qu'il est plus concis. Noter que pour gagner un peu d'espace, il est possible de mettre le contenu du bloc d'exécution en ligne si celui-ci ne comporte qu'une seule ligne

for i in range(10): print(i**2)

Les mots-clé break, continue

Deux mots-clé permettent d'agir sur le déroulement d'une boucle: break permet de sortir d'une boucle, on revient alors au niveau du bloc supérieur à la boucle

for i in range(6):
    print(i)
    for j in range(6):
        if i*j >= 10:
            print(i,j)
            break

Le mot-clé continue poursuit la boucle mais en renvoyant au début de l'exécution du bloc sous la boucle:

for i in range(6):
    print(i)
    for j in range(6):
        if i*j >= 10:
            print("#",i,j)
            continue
        print("%",i,j)