Travaux Pratiques · Seconde · Informatique

TP 3 : Boucles for et fonctions

Apprendre à répéter des instructions avec for et à organiser son code avec des fonctions.

for / range() def / return paramètres print() variables
⏳ Chargement de Python en cours…
0
Rappels des TP précédents
›

Avant de commencer, quelques rappels des notions vues dans les TP 1 et 2.

À retenir :
  • Variables et affectation : x = 5
  • Types : int, float, str, bool — vérifiable avec type()
  • Opérateurs : + - * / ** % — comparaisons : == != < >
  • Affichage : print("texte", variable)
Console Python — Rappels
# Teste ici ce dont tu te souviens !
>>>
?
Que vaut type(7 / 2) ?
int — le résultat est un entier
float — l'opérateur / renvoie toujours un float en Python 3
str — le résultat contient un point
?
Quelle instruction affiche Résultat : 42 en utilisant la variable res = 42 ?
print("Résultat : 42")
print("Résultat :", res)
print(Résultat, res)
1
for — La boucle et range(n)
›
Objectif n°1

Comprendre comment répéter des instructions un nombre fixe de fois avec for et range().

Une boucle for permet de répéter un bloc d'instructions. range(n) génère les entiers de 0 à n−1.

Syntaxe :
for i in range(n) :
    # instructions répétées n fois

⚠ Le bloc à répéter doit être indenté (décalé de 4 espaces ou une tabulation Tab). C'est l'indentation qui indique à Python ce qui est "dans" la boucle.
ExpressionValeurs produitesNombre de tours
range(5)0, 1, 2, 3, 45 tours
range(3)0, 1, 23 tours
range(1)01 tour
range(0)(rien)0 tour
Exercice 1 · Premiers tours de boucle
💡 Indentation dans l'éditeur
Après avoir tapé for i in range(5): et appuyé sur Entrée, utilise la touche Tab pour indenter la ligne suivante de 4 espaces. C'est obligatoire : c'est ce décalage qui indique à Python que l'instruction fait partie de la boucle.

Complète le programme ci-dessous, puis réponds aux questions.

  • 1Remplace le premier ... par le nombre de tours souhaité, et le second par ce qu'on veut afficher. Lance.
  • 2Change range(...) en range(3) et relance — combien de lignes s'affichent ?
  • 3Affiche i * 2 au lieu de i — qu'obtiens-tu ?
Éditeur Python — TP3_exo1.py
?
Quelles valeurs affiche for i in range(5): print(i) ?
1, 2, 3, 4, 5
0, 1, 2, 3, 4 — range(n) commence toujours à 0 et s'arrête à n−1
0, 1, 2, 3, 4, 5
5 fois le chiffre 5
?
Que signifie l'indentation (le décalage) du bloc print(i) sous le for ?
C'est juste une convention visuelle, Python s'en moque.
Cela indique que l'instruction s'exécute une seule fois après la boucle.
Cela indique à Python que cette instruction fait partie de la boucle et doit être répétée à chaque tour.
Exercice 1bis · À toi tout seul !

Sans aide, écris une boucle for qui affiche les nombres de 1 à 5. L'éditeur est vide : tu pars de zéro.

Check-list avant de lancer :
  • La ligne for se termine bien par :
  • Le print() est bien indenté avec Tab (ou 4 espaces)
  • Le range() produit bien 1, 2, 3, 4, 5 — attention à la borne de départ !
Éditeur Python — TP3_exo1bis.py
?
Quel range() as-tu utilisé pour afficher 1, 2, 3, 4, 5 ?
range(5) — donne 0, 1, 2, 3, 4 (commence à 0)
range(1, 6) — donne 1, 2, 3, 4, 5 (commence à 1, s'arrête avant 6)
range(1, 5) — donne 1, 2, 3, 4 (s'arrête avant 5)
Exercice 2 · Accumuler dans une variable

Une boucle est très utile pour accumuler des résultats. Ici on calcule la somme des entiers de 0 à 4 pas à pas.

Rappel TP 1 : somme = somme + i signifie « ajoute i à la valeur actuelle de somme et range le résultat dans somme ».
  • 1Complète les ... pour calculer la somme 0+1+2+3+4.
  • 2Ajoute un print() à l'intérieur de la boucle pour afficher somme après chaque ajout.
  • 3Modifie le programme pour calculer la somme de 0 à 9 (change juste le range()).
Éditeur Python — TP3_exo2.py
?
Que vaut somme après for i in range(5): somme = somme + i (en partant de somme = 0) ?
5 — Python additionne le nombre de tours
15 — Python additionne 1+2+3+4+5
10 — Python additionne 0+1+2+3+4
4 — la dernière valeur de i
2
for — range(a, b) : choisir son point de départ
›
Objectif n°2

Utiliser range(a, b) pour contrôler précisément la plage de valeurs parcourue par la boucle.

range(a, b) génère les entiers de a inclus jusqu'à b exclu. On peut aussi ajouter un pas avec range(a, b, pas).

ExpressionValeurs produites
range(1, 6)1, 2, 3, 4, 5
range(0, 10, 2)0, 2, 4, 6, 8
range(10, 0, -1)10, 9, 8, …, 1
range(5, 5)(rien — a égal b)
Exercice 3 · Explorer range(a, b)

Complète et lance ces trois variantes une par une en modifiant le range() à chaque étape.

  • 1Complète avec range(1, 6) et lance — quelles valeurs obtiens-tu ?
  • 2Remplace par range(0, 10, 2) et relance — à quoi sert le 3e argument ?
  • 3Remplace par range(10, 0, -1) et relance — que se passe-t-il avec un pas négatif ?
Éditeur Python — TP3_exo3.py
?
Que produit range(1, 6) ?
1, 2, 3, 4, 5, 6 — les deux bornes sont incluses
1, 2, 3, 4, 5 — la borne de gauche est incluse, celle de droite est exclue
0, 1, 2, 3, 4, 5
?
Quel range() faut-il pour afficher les nombres pairs de 2 à 10 inclus ?
range(2, 10)
range(2, 11, 2) — début 2, fin 11 (exclu), pas de 2
range(2, 10, 2) — s'arrête à 8 car 10 est exclu
range(0, 10, 2) — commence à 0
Exercice 4 · Table de multiplication

Complète ce programme qui affiche la table de multiplication d'un nombre choisi.

Éditeur Python — TP3_exo4.py
✎
Pour afficher les lignes de 1 à 10, quel range() faut-il écrire ? (écris uniquement l'expression range(...))
La boucle doit produire les valeurs 1, 2, 3, …, 10.
3
def — Créer une fonction
›
Objectif n°3

Comprendre ce qu'est une fonction, comment la définir avec def et comment l'appeler.

Une fonction est un bloc d'instructions auquel on donne un nom, pour pouvoir le réutiliser facilement. Plutôt que de réécrire le même code plusieurs fois, on l'écrit une seule fois dans une fonction et on l'appelle autant de fois qu'on veut.

Syntaxe :
def nom_de_la_fonction(parametre1, parametre2) :
    # instructions de la fonction

Puis pour l'utiliser :
nom_de_la_fonction(valeur1, valeur2)
⚠ Définir ≠ Appeler ! Écrire def ma_fonction(): crée la fonction mais ne l'exécute pas. Pour l'exécuter, il faut l'appeler : ma_fonction().
Exercice 5 · Observer une fonction

Ce programme est entièrement écrit. Lis-le attentivement, essaie de deviner ce qu'il va afficher, puis lance-le pour vérifier.

  • 1Repère la définition de la fonction (ligne commençant par def) et les appels de la fonction (lignes du bas).
  • 2Lance le programme — combien de lignes s'affichent ?
  • 3Ajoute un 4e appel : saluer("Grace") — que se passe-t-il ?
Éditeur Python — TP3_exo5.py
?
Combien de lignes s'affichent quand on lance ce programme ?
2 lignes — la fonction contient 2 print()
3 lignes — une par appel
6 lignes — la fonction est appelée 3 fois, chaque appel produit 2 lignes
?
Dans def saluer(prenom):, à quoi sert prenom ?
C'est une variable globale définie en dehors de la fonction.
C'est un paramètre : une variable locale qui reçoit la valeur passée lors de l'appel.
C'est le nom qui sera affiché par la fonction, toujours le même.
Exercice 6 · Écrire sa propre fonction

Voici d'abord une fonction complète à observer : elle calcule le double d'un nombre. Lance-la, vérifie que tu comprends chaque ligne, puis réponds à la question ci-dessous.

Éditeur Python — exemple_fonction.py

À toi maintenant ! Complète la fonction afficher_table en t'inspirant de l'exemple ci-dessus et de la boucle de l'exercice 4.

  • 1Remplace les ... dans la boucle for (même logique qu'exercice 4).
  • 2Complète les deux appels de la fonction.
Éditeur Python — TP3_exo6.py
✎
Quel est l'avantage d'utiliser une fonction plutôt que de réécrire la boucle à chaque fois ? (réponds en une phrase courte)
Pense à ce qui se passe si tu veux afficher 10 tables différentes…
4
return — Renvoyer un résultat
›
Objectif n°4

Apprendre à renvoyer une valeur depuis une fonction avec return, pour pouvoir réutiliser le résultat dans la suite du programme.

Jusqu'ici nos fonctions affichaient des choses mais ne renvoyaient rien. Avec return, une fonction peut renvoyer une valeur qu'on peut stocker dans une variable ou réutiliser dans un calcul.

Sans returnAvec return
def double(x):
    print(x * 2)

double(5)  # affiche 10
y = double(5) # y vaut None !
def double(x):
    return x * 2

y = double(5) # y vaut 10
print(y)      # affiche 10
Règle : return arrête immédiatement la fonction et renvoie la valeur indiquée. Tout code écrit après un return dans la même fonction ne sera jamais exécuté.
Exercice 7 · Découverte de return
  • 1Lance le programme ci-dessous et observe les résultats.
  • 2Remplace return par print() à la ligne 2 — que se passe-t-il quand on essaie de stocker le résultat dans r ?
  • 3Restaure le return et ajoute l'utilisation de triple() dans un calcul : print(triple(4) + triple(2)).
Éditeur Python — TP3_exo7.py
?
Que vaut r après r = triple(5) avec la fonction def triple(x): return x * 3 ?
None — la fonction n'a pas de print()
15 — return x * 3 renvoie 5 × 3 = 15, qui est affecté à r
5 — la valeur du paramètre x
?
Que se passe-t-il si on remplace return x * 3 par print(x * 3) et qu'on écrit r = triple(5) ?
r vaut 15 — print() et return font la même chose
15 s'affiche dans la console, mais r vaut None — print() affiche sans renvoyer de valeur
Une erreur — on ne peut pas appeler une fonction sans return
Exercice 8 · Fonctions avec paramètres et return

Voici d'abord une fonction complète à observer : elle calcule l'aire d'un carré. Lance-la, lis bien le return, et vois comment on récupère et utilise son résultat.

Éditeur Python — exemple_return.py

À toi maintenant ! Complète les trois fonctions ci-dessous en t'inspirant de l'exemple. Chacune reçoit des paramètres, effectue un calcul et renvoie le résultat.

Éditeur Python — TP3_exo8.py
?
Que renvoie perimetre(8, 5) avec la bonne formule ?
40 — c'est l'aire
26 — le périmètre vaut 2 × (longueur + largeur) = 2 × 13 = 26
13 — la somme des deux côtés
✎
Écris la formule à mettre dans le return de la fonction prix_reduit.
Le prix final = prix initial − la réduction. La variable reduction est déjà calculée.
5
Programme complet — Tout mettre ensemble
›
Objectif n°5

Combiner boucles for, fonctions avec return, types, variables et print() dans un programme complet.

Ce programme génère un rapport de notes pour une classe. Il utilise une fonction pour calculer la moyenne, et une boucle pour afficher toutes les notes.

Exercice 9 · Rapport de classe
  • 1Complète la fonction calculer_moyenne qui prend trois notes et renvoie leur moyenne.
  • 2Complète la boucle pour afficher chaque élève avec sa moyenne, en appelant la fonction.
  • 3Complète la boucle finale pour calculer la meilleure moyenne de la classe.
Éditeur Python — TP3_exo9.py
?
Quelle est la moyenne de Camille (notes : 17, 15, 18) ?
16.0
16.7 — (17 + 15 + 18) / 3 = 50 / 3 ≈ 16.67
18.0 — la meilleure des trois notes
?
Dans ce programme, pourquoi utilise-t-on une fonction pour calculer la moyenne plutôt que de faire le calcul directement dans la boucle ?
Parce que Python ne permet pas les calculs à l'intérieur d'une boucle.
Parce que la fonction est obligatoire quand on utilise round().
Pour pouvoir réutiliser ce calcul facilement ailleurs dans le programme, sans le réécrire à chaque fois.
+
Pour aller plus loin (bonus)
›
  • AÉcris une fonction est_pair(n) qui renvoie True si n est pair et False sinon. (Rappel : n % 2 == 0). Teste-la avec une boucle for i in range(1, 11).
  • BÉcris une fonction factorielle(n) qui calcule n! (ex : 5! = 5×4×3×2×1) en utilisant une boucle for et une variable accumulatrice. Teste avec factorielle(5) → 120.
  • CModifie le programme de l'exercice 9 pour afficher aussi le prénom de l'élève ayant la meilleure moyenne.
Console Python — Défis bonus
# Console libre.
>>>
?
Défi A : que renvoie est_pair(7) ?
True — 7 est impair donc c'est vrai
False — 7 % 2 = 1 ≠ 0, donc 7 n'est pas pair
1 — c'est le reste de 7 / 2
✎
Défi B : que vaut factorielle(5) ?
5! = 5 × 4 × 3 × 2 × 1
🏆 Score TP 3 :
0 / 0 validé(s)
🏠