Arborescence

Programmer

Python 2 — boucles et fonctions

Ne plus jamais écrire deux fois la même chose.

3 hDès 10 ansFiche G3

01Objectif

À la fin de cette séquence : Répéter une action avec for et while, et regrouper un traitement dans une fonction réutilisable avec paramètres et valeur de retour.

02L'essentiel

<code>for</code> quand on sait combien, <code>while</code> quand on ne sait pas

for i in range(10) répète dix fois. while continue tant qu'une condition tient : idéal pour attendre une saisie correcte.

Une fonction est un outil qu'on fabrique

def aire(largeur, hauteur): crée une opération réutilisable. Écrire une fonction, c'est nommer une intention : le code devient lisible.

<code>return</code> n'est pas <code>print</code>

print montre à l'écran, return rend une valeur au programme pour continuer à calculer. Confondre les deux bloque toute composition.

Trois lignes répétées appellent une fonction

Dès qu'un bloc apparaît deux fois, il doit devenir une fonction. Sinon la correction devra être faite à chaque copie — et une sera oubliée.

03Le schéma

for i inrange(n)1i prend la valeursuivante2Le corps s'execute3Reste-t-il desvaleurs ?4Sinon, on sort
La variable de boucle avance seule : c'est ce qui distingue for de while, où l'avancement est à votre charge — et donc oubliable.

04Le code

def moyenne(notes):
    if len(notes) == 0:
        return 0
    return sum(notes) / len(notes)

notes = []
for i in range(3):
    n = -1
    while n < 0 or n > 20:
        n = float(input("Note sur 20 : "))
    notes.append(n)

print("Moyenne :", moyenne(notes))

05À retenir

  • for = nombre connu, while = condition.
  • return rend, print montre. Ce ne sont pas des synonymes.
  • Deux fois le même code = une fonction à écrire.

06Exercice

Écrivez une fonction qui reçoit une liste de notes et rend la moyenne. Puis une boucle qui redemande une note tant que la valeur saisie n'est pas entre 0 et 20.

Indice — Pour la moyenne, sum(notes) / len(notes) — mais que se passe-t-il si la liste est vide ?

07Vérification des acquis

Pourquoi une fonction qui affiche au lieu de retourner pose-t-elle problème ?

Parce qu'on ne peut plus réutiliser son résultat : impossible de l'additionner, de le stocker ou de le tester. La valeur est partie à l'écran, elle n'existe plus dans le programme.

Quand une boucle while est-elle préférable ?

Quand le nombre de répétitions dépend de quelque chose d'imprévisible : une saisie utilisateur, une lecture de fichier, une condition qui évolue.