C5.1 : Boucles avec while

Prendre connaissance

Prendre connaissance de Mémo : Boucle while et de Outils : 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 :

3) Sur l'ordinateur, avec pythontutor :

Applications avec variable d'incrémentation

Application III_app1

1) Écrire la fonction affiche_nombres(nb_max:int) qui :

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 :

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