BOUCLE WHILE ET BOUCLEfor TP
Boucle while et boucle for – TP
21. Modes d’emploi
Boucle itérative
On utilise une bouclefor, appelée boucle itérative, pour exécuter une instruction (ou un bloc d’instructions) un nombre de fois déterminé.
Python
1 for <variable> in range(m,n,pas):
2 <instruction1> #|
3 <instruciton2> #|
4 ... # Bloc d'instructions
5 <instructionN> #|
La<variable>parcourt les entiers demàn−1 avec unpasdonné. Pour chaque valeur possible, le bloc d’instructions est exécuté.
L’indentation des instructions est obligatoire.
Le programme suivant affiche sur la même ligne le carré des entiers 1, 3, 5, 7 et 9.
Python
1 for i in range(1,11,2):
2 print(i**2,end=" ") Exemple 1
Exercice 1
Python
1 u=0
2 for i in range(21):
3 u=u+i
4 print(u)
1. Donner la valeur stockée dans la variableuaprès exécution du programme.
2. Discuter de l’affichage si l’instructionprint(u)est indenté.
Ï Si lepasn’est pas précisé dansrange(m,n,pas)alors il est égal à 1. Par exemplerange(3,8)donne la séquence 3, 4, 5, 6, 7.
Ï Si lemet le paspasne sont pas précisés dansrange(m,n,pas)alorsmvaut 0 et le pas vaut 1.
Remarque 1 –range
G. BOUTARD 1 Lycée GAY-LUSSAC
TP BOUCLE WHILE ET BOUCLEfor
On dit querangeest unitérable. Nous verrons dans un prochain TP qu’il existe d’autres itérables (les listes ou les chaînes de caractères par exemple).
Remarque 2 – Itérable
Boucle conditionnelle
On utilise une bouclewhile, appeléeboucle conditionnelle, pour exécuter une instruction (ou un bloc d’instructions) tant qu’une condition est vérifiée.
Python
1 while <condition> : # <condition> est de type booléen
2 <instruction1> #|
3 <instruciton2> #|
4 ... # Bloc d'instructions
5 <instructionN> #|
Si la condition est fausse, tout le bloc d’instruction est ignoré.
L’indentation des instructions est obligatoire et il ne faut oublier les deux points à la fin de la ligne commençant parwhile.
Le programme suivant affiche sur une même ligne le carré des entiers naturels inférieurs à 5, et affiche un message une fois sorti de la bouclewhile.
Python
1 a=5
2 while a >= 0:
3 print(a**2,end=" ")
4 a-=1
5 print("J'ai fini !") Exemple 2
Si la condition booléenne est toujours vraie, le bloc d’instruction sera exécuté indéfiniment ! On parle de boucle infine.
Python
1 while 1+1 >= 2:
2 print("Arrêtez moi !")
La combinaison des touchesCtrletIou l’icône spécifique sur Pyzo (éclair) permet d’interrompre un programme.
Remarque 3 – Attention !
PCSI 2021 – 2022 2 G. BOUTARD
BOUCLE WHILE ET BOUCLEfor TP
2. Exercice
Exercice 2 – Suite de Syracuse
On considère la suite de Syracuse :u0=a∈N?et, pour toutn∈N,
un+1= ( un
2 siunest pair, 3un+1 siunest impair.
1. Comment peut-on déterminer la parité d’un entier en Python ?
2. Écrire une fonctiontermes(a,N)de paramètresaetNdeux entiers naturels non nuls et renvoie la liste des termes u0,u1, . . . ,uN de la suite de Syracuse.
3. Observer le comportement de la suite lorsqueN est choisi « assez grand » (mais pas trop...).
La conjecture de Syracuse est : pour touta∈N?, il existen∈Ntel queun=1.
4. Écrire une fonctiontempsDeVol(a)de paramètreaun entier naturel non nul et qui renvoie le plus petit entierntel queun=1.
Indication:tempsDeVol(9)renvoie 19.
5. Poura∈N? fixé, on appellealtitude maximale la valeur maximale de la suite (un)n∈N avant qu’elle ne prenne la valeur 1 pour la première fois.
Écrire une fonctionaltitudeMaximale(a)de paramètreaun entier naturel non nul et qui renvoie le plus petit entierntel queun=1.
Indication:altitudeMaximale(9)renvoie 52.
3. Travail à faire
Exercice 3 – Nombre premier
Écrire une fonctionisPrime(N)qui prend un entier strictement positifNet qui renvoie le booléenTruesiN est premier et le booléenFalsesinon.
G. BOUTARD 3 Lycée GAY-LUSSAC