C5.1 : Boucles avec while
Prendre connaissance
Prendre connaissance de Mémo : Boucle while et de Mémo : Tableau pas à pas.
Application pour bien démarrer : analyse d'un code
On s'intéresse au programme suivant :
print("Début de la boucle")
i = 5
while i < 8:
i = i + 1
print(i)
print("Fin de la boucle")
print(i)
1) Sur feuille, construire le tableau du déroulement pas à pas du programme.
2) Sur l'ordinateur, avec Thonny :
- - lancer le programme en mode débogage
(Ctrl+F5), - - avancer pas à pas
(F7), - - vérifier le contenu de votre tableau.
3) Sur l'ordinateur, avec pythontutor :
- - lancer le programme pas à pas,
- - vérifier le contenu de votre tableau.
Applications avec variable d'incrémentation
Application III_app1
1) Écrire la fonction affiche_nombres(nb_max:int) qui :
- - prend un nombre entier strictement positif en paramètre,
- - affiche les entiers de 1 à ce nombre.
Remarque : cette fonction ne renvoie rien.
2) Compléter le programme principal pour tester la fonction.
Application III_app2
Écrire une fonction qui affiche les lettres de l'alphabet.
Remarque : cette fonction ne prend pas de paramètre et ne renvoie rien.
Information : chr(65) renvoie la lettre 'A', chr(66) renvoie la lettre 'B'...
Application III_app3
1) Écrire la fonction affiche_nombres_paires(nb_max:int) qui :
- - prend un nombre entier strictement positif en paramètre,
- - affiche les nombres paires de 2 à ce nombre.
Remarque : cette fonction ne renvoie rien.
2) Compléter le programme principal pour tester la fonction.
Applications avec une variable supplémentaire
Application IV_app1
Sur feuille :
On considère le programme suivant :
def fct(n:int) -> int:
somme = 0
i = 1
while i <= n:
somme = somme + i
i = i + 1
return somme
1) Détailler ligne par ligne (sous forme d'un tableau) l'exécution de l'instruction fct(4).
2) Ecrire la docstring de cette fonction
3) Que faut-il modifier d'autre dans le programme si l'on inverse les lignes 4 et 5 ?
Application IV_app2
Ecrire une fonction qui prend deux nombres entiers positifs n1 et n2 en paramètres et renvoie la somme des nombre de n1 à n2 si n1 ≤ n2, ou de n2 à n1 si n1 > à n2.
Application IV_app3
Sur feuille :
On considère le programme suivant :
nb = int(input("Entrer un nombre : "))
bn = 0
while nb > 0:
bn = bn * 10 + nb % 10
nb = nb // 10
print(bn)
1) Détailler l'exécution du programme ligne par ligne (sous forme d'un tableau) en supposant que l'utilisateur entre le nombre 421.
2) Expliquer en une phrase ce que fait le programme.
Application sans incrémentation
Application V_app1
Sur feuille :
def input_voyelle():
v = input("Entrer une voyelle : ")
while v not in "aeiouyAEIOUY":
v = input("Ce n'est pas une voyelle. Entrer une voyelle : ")
return v
1) Expliquer ce que fait la fonction ci-dessus.
2) Écrire la docstring de la fonction.
Application V_app2
Écrire une fonction qui permet à l'utilisateur de saisir un nombre entier compris entre 1 et 100, puis renvoie cet entier.
La fonction doit redemander un nombre entier tant que ce nombre n'est entier et pas compris entre 1 et 100.
On supposera que l'utilisateur entre effectivement un nombre entier.
Complément
Python, documentation officielle : L'instruction while