Boucle while Listes
Cette fiche permet d'introduire la structure et la syntaxe de la boucle non bornée while et propose deux exercices d'application corrigés.
On utilise généralement la boucle while
lorsqu'on souhaite répéter un nombre de fois une même instruction et qu'on ne sait pas combien de fois cette instruction va être répétée.
On connait alors une condition d'arrêt, c'est-à-dire un test qui permet de savoir si l'instruction va être répétée ou non.
Par exemple, si on veut ajouter 1 à un nombre tant que ce nombre est inférieur à 50, on utilisera une boucle while
: "TANT QUE nombre < 50, ajouter 1 à nombre".
En Python, la structure de la boucle while
est la suivante :
while condition: instruction
Dans notre exemple, pour un nombre initial égal à 8, on écrira donc :
A la fin de la boucle, on aura :
En effet, lorsque nombre
contient 49 la condition est toujours vérifiée et l'instruction s'exécute. nombre
est donc incrémenté de 1 et vaut alors 50. La condition n'est alors plus vérifiée et la boucle while
se termine.
La fiche sur les instructions conditionnelles contenait la syntaxe des conditions possibles en Python. Elles sont répétées ci-dessous.
Condition | Syntaxe Python |
est égal à | x==y: |
est différent de | x!=y: |
est strictement supérieur à | x>y: |
est strictement inférieur à | x<y: |
est supérieur ou égal à | x>=y: |
est inférieur ou égal à | x<=y: |
Écrire une fonction max_cube(n)
qui prend un entier naturel en argument et qui renvoie le plus grand entier dont le cube est inférieur ou égal à .
Prenons pour exemple le cas .
On cherche le plus grand entier naturel (0, 1, 2, ...) dont le cube est inférieur à 30.
Naturellement nous testons les entiers un par un :
Si l'entier est 0 : ;
Si l'entier est 1 : ;
Si l'entier est 2 : ;
Si l'entier est 3 : ;
Si l'entier est 4 : .
Le cube de 4 étant trop grand, l'entier recherché est 3 : c'est en effet le plus grand nombre dont le cube est inférieur à 30.
Grâce à cet exemple, on a pu identifier la structure de la fonction que l'on va écrire :
On initialise une variable entier
à 0 ;
On teste si "entier
au cube" est inférieur ou égal à ;
Si c'est le cas, on ajoute 1 à entier
;
Si ce n'est pas le cas, la réponse est entier-1
(car entier
au cube dépasse ) ;
On recommence à l'étape 2.
Vous reconnaissez une structure de boucle while
:
while condition: instruction
Ici la condition est "entier
au cube est inférieur ou égal à " :
entier**3 <= n
Et l'instruction est "ajouter 1 à entier
", soit :
entier = entier + 1
Pour incrémenter un nombre d'une même valeur à chaque fois, vous pouvez écrire : entier += 1
à la place de entier = entier + 1
.
Écrire une fonction facteurs(n)
qui prend un nombre entier en argument et renvoie la liste des facteurs de sa decomposition en facteurs premiers.
On crée une liste des diviseurs premiers de n
que l'on va remplir à chaque fois que l'on en trouve un : liste_div
.
On commence par tester si n
est divisible par 2.
Si c'est le cas, on stocke 2 dans liste_div
et on remplace n
par n/2
.
Puis on recommence par tester si 2 divise le nouveau n
.
Si ce n'est pas le cas, on ajoute 1 à 2 et on teste donc si le nouveau n
est divisible par 3.
Ainsi de suite jusqu'à ce qu'à force de diviser n
par ses diviseurs premiers, on arrive à .
Pour ajouter un élément à une liste, on utilise la fonction append
. Pour ajouter l'élément 5 à une liste L
, on écrira :
>>> L=[1,2] >>> L.append(5) >>> L [1,2,5]