Programmer
Python 2 — boucles et fonctions
Ne plus jamais écrire deux fois la même chose.
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
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.returnrend,printmontre. 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.