Aller au contenu

Mathématiques · Seconde

Fonctions en Python : exercices corrigés de Seconde

Publié le 9 novembre 2026 · Mis à jour le 9 novembre 2026 · Signaler une erreur

L'essentiel

  • Une fonction Python se définit avec def, un nom, des paramètres entre parenthèses, puis un bloc indenté.
  • return renvoie une valeur à celui qui appelle la fonction ; print affiche seulement quelque chose à l'écran.
  • Une fonction sans return renvoie la valeur spéciale None.
  • Une fonction peut contenir un if (cas différents) ou un for (répétitions) avant de renvoyer son résultat.
  • Pour vérifier une fonction, teste-la à la main sur une valeur simple, puis compare avec le résultat du programme.

Comment utiliser ces exercices

Ces exercices te font manipuler des fonctions en Python, du plus simple (écrire une formule) jusqu'à des fonctions qui contiennent des conditions et des boucles. Le langage retenu au lycée général et technologique est Python.2 Il est donc normal de t'entraîner avec lui, y compris sur une calculatrice compatible : les modèles destinés aux lycéens fonctionnent avec Python 3.4

Pour chaque exercice, cherche d'abord seul·e, sur papier, avant de regarder les indices. Ensuite seulement, déroule la correction étape par étape. Si tu as un ordinateur ou une calculatrice, recopie le programme et vérifie que ton résultat à la main est bien celui que Python affiche.

Les exercices

Exercice 1 Écrire une fonction affine

★☆☆Environ 5 min

On considère la fonction ff définie par f(x)=3x+2f(x)=3x+2.

  1. Écris en Python une fonction f qui prend un nombre x et renvoie 3x+23x+2.
  2. Quelle valeur renvoie l'appel f(4) ?
Indice 1

Le paramètre de la fonction s'appelle x ; la formule s'écrit avec * pour la multiplication.

Indice 2

N'oublie pas return : sans lui, la fonction ne renvoie pas le résultat du calcul.

Voir la correction pas à pas
  1. On commence la définition par def f(x):. Le mot def annonce la fonction, f est son nom, x son paramètre.

  2. Sur la ligne suivante, indentée, on écrit return 3*x + 2. Le signe * est obligatoire : Python ne comprend pas 3x.

  3. Le programme complet est donc :

    def f(x):
        return 3*x + 2
    
  4. Pour f(4), Python remplace x par 4 : 3×4+2=12+2=143\times 4+2=12+2=14.

  5. Vérification avec une autre valeur : f(0) donne 3×0+2=23\times 0+2=2, ce qui correspond bien à l'ordonnée à l'origine de la droite qui représente ff.

L'appel f(4) renvoie 14. Une fonction Python traduit directement la formule mathématique : le paramètre joue le rôle de xx et return donne l'image.

Exercice 2 Deux paramètres : l'aire d'un rectangle

★☆☆Environ 5 min

  1. Écris une fonction aire qui prend la longueur L et la largeur l d'un rectangle (en cm) et renvoie son aire.
  2. Quelle est l'aire, en cm², renvoyée par aire(7.5, 4) ?
Indice 1

Une fonction peut avoir plusieurs paramètres, séparés par des virgules.

Indice 2

Dans un programme, un nombre décimal s'écrit avec un point : 7.5.

Voir la correction pas à pas
  1. On déclare deux paramètres : def aire(L, l):.

  2. L'aire d'un rectangle est le produit de la longueur par la largeur, donc return L * l.

  3. Programme complet :

    def aire(L, l):
        return L * l
    
  4. Pour l'appel aire(7.5, 4), Python prend L = 7.5 puis l = 4, dans l'ordre où les valeurs sont données.

  5. Calcul : 7,5×4=307{,}5\times 4=30. Comme les longueurs sont en cm, l'aire est en cm².

L'appel renvoie 30, soit 30 cm². L'ordre des valeurs dans l'appel correspond à l'ordre des paramètres dans la définition.

Exercice 3 Lire un programme : return et print

★☆☆Environ 6 min

On exécute ce programme :

def g(x):
    return x**2 - 1

print(g(5))
  1. Que signifie x**2 en Python ?
  2. Quel nombre le programme affiche-t-il ?
  3. Que se passerait-il si on avait écrit g(5) seul sur la dernière ligne, sans print, dans un fichier de programme ?
Indice 1

** est l'opérateur de puissance.

Indice 2

Dans un programme enregistré, une valeur renvoyée n'apparaît à l'écran que si on demande de l'afficher.

Voir la correction pas à pas
  1. Le symbole ** désigne l'élévation à la puissance : x**2 vaut x2x^2.

  2. L'appel g(5) remplace x par 5 : 52−1=25−1=245^2-1=25-1=24. La fonction renvoie 24 grâce à return.

  3. La fonction print, qui prend ses arguments entre parenthèses en Python 3,4 affiche cette valeur : le programme montre 24.

  4. Sans print, la fonction calcule bien 24, mais rien ne s'afficherait à l'écran dans un fichier de programme : la valeur est renvoyée puis perdue.

Le programme affiche 24. Retiens la différence : return fait sortir une valeur de la fonction, print la montre à l'utilisateur.

Exercice 4 Une fonction qui ne renvoie rien

★★☆Environ 8 min

On considère :

def h(x):
    print(x + 1)

y = h(3)
print(y)
  1. Qu'affiche le programme, ligne après ligne ?
  2. Pourquoi y ne contient-il pas 4 ?
  3. Comment corriger h pour que y vaille 4 ?
Indice 1

Distingue ce que h affiche pendant son exécution et ce qu'elle renvoie.

Indice 2

Une fonction sans return renvoie la valeur spéciale None.

Voir la correction pas à pas
  1. À la ligne y = h(3), Python exécute h(3). Dans la fonction, print(x + 1) affiche 4.

  2. La fonction h ne contient pas de return : elle ne renvoie rien d'utile. Python lui fait alors renvoyer None, qui est rangé dans y. Une fonction peut en effet ne rien renvoyer.1

  3. La dernière ligne print(y) affiche donc None. Le programme montre dans l'ordre : 4 puis None.

  4. Pour que y vaille 4, on remplace print par return :

    def h(x):
        return x + 1
    
  5. Avec cette version, y = h(3) range 4 dans y, et print(y) affiche 4.

Le 4 affiché la première fois venait du print dans la fonction, pas d'une valeur récupérée. Pour réutiliser un résultat dans la suite d'un calcul, il faut le renvoyer.

Exercice 5 Une fonction avec condition : le tarif dégressif

★★☆Environ 10 min

Une salle de cinéma vend ses places 8 € l'unité. À partir de 5 places achetées en une fois, chaque place coûte 6 €.

  1. Écris une fonction prix(n) qui renvoie le prix total de n places.
  2. Calcule prix(4) puis prix(7).
  3. Quel est le prix à payer, en euros, pour 7 places ?
Indice 1

Il y a deux cas : moins de 5 places, ou 5 places et plus. Utilise if et else.

Indice 2

Le test « 5 places ou plus » s'écrit n >= 5.

Voir la correction pas à pas
  1. On identifie la condition : le tarif change quand n≥5n\geq 5.

  2. On écrit :

    def prix(n):
        if n >= 5:
            return 6 * n
        else:
            return 8 * n
    
  3. Pour prix(4) : le test 4 >= 5 est faux, donc Python exécute le else et renvoie 8×4=328\times 4=32.

  4. Pour prix(7) : le test 7 >= 5 est vrai, donc Python renvoie 6×7=426\times 7=42.

  5. On remarque que 7 places (42 €) coûtent plus que 4 places (32 €), ce qui est cohérent, mais que 5 places coûtent 30 €, moins que 4 places : le tarif dégressif a un effet de seuil.

Pour 7 places, on paie 42 €. Dans une fonction, le if choisit la formule à appliquer ; un seul return est exécuté, celui du cas qui convient.

Exercice 6 Comparer deux offres

★★☆Environ 12 min

Une salle de sport propose deux formules :

  • Offre A : 40 € d'abonnement, puis 5 € par séance ;
  • Offre B : 9 € par séance, sans abonnement.
  1. Écris une fonction economie(n) qui renvoie, pour n séances, le prix de B moins le prix de A.
  2. Quelle économie, en euros, l'offre A permet-elle pour 12 séances ?
  3. Que représente une valeur négative renvoyée par economie ?
Indice 1

Le prix de A pour nn séances est 40+5n40+5n ; celui de B est 9n9n.

Indice 2

Écris d'abord les deux prix, puis soustrais-les dans le bon ordre.

Voir la correction pas à pas
  1. On exprime les deux prix en fonction du nombre de séances nn : pA(n)=40+5np_A(n)=40+5n et pB(n)=9np_B(n)=9n.

  2. La fonction renvoie la différence « B moins A » :

    def economie(n):
        prix_A = 40 + 5 * n
        prix_B = 9 * n
        return prix_B - prix_A
    
  3. Pour economie(12) : pA=40+5×12=100p_A=40+5\times 12=100 et pB=9×12=108p_B=9\times 12=108.

  4. La différence vaut 108−100=8108-100=8.

  5. Si le résultat est négatif, B coûte moins cher que A : par exemple pour 5 séances, pA=65p_A=65 et pB=45p_B=45, donc economie(5) renvoie −20-20.

Avec 12 séances, l'offre A fait économiser 8 €. Une valeur négative signifie que l'offre B est la moins chère.

Exercice 7 Une fonction avec boucle : somme d'entiers

★★★Environ 12 min

On considère :

def somme(n):
    s = 0
    for k in range(1, n + 1):
        s = s + k
    return s
  1. Que contient s à la fin de chaque tour de boucle pour n = 4 ?
  2. Que calcule cette fonction ?
  3. Quelle valeur renvoie somme(10) ?
Indice 1

range(1, n + 1) fait prendre à k les valeurs 1, 2, ..., n (la valeur n + 1 est exclue).

Indice 2

Fais un tableau avec les colonnes k et s pour suivre l'évolution.

Voir la correction pas à pas
  1. Au départ, s vaut 0.

  2. Pour n = 4, range(1, 5) donne k = 1, 2, 3, 4. Tour 1 : s=0+1=1s=0+1=1. Tour 2 : s=1+2=3s=1+2=3. Tour 3 : s=3+3=6s=3+3=6. Tour 4 : s=6+4=10s=6+4=10.

  3. Après la boucle, return s renvoie 10 : la fonction calcule la somme 1+2+⋯+n1+2+\dots+n.

  4. Pour n = 10, k va de 1 à 10 et s prend successivement les valeurs 1, 3, 6, 10, 15, 21, 28, 36, 45, 55.

  5. On peut le contrôler : 1+2+⋯+10=551+2+\dots+10=55.

somme(10) renvoie 55. Dans une fonction, une variable comme s sert d'accumulateur : on l'initialise avant la boucle, on la modifie à chaque tour, et on la renvoie à la fin.

Exercice 8 Une fonction définie par morceaux

★★★Environ 12 min

On considère :

def f(x):
    if x < 0:
        return -2 * x + 1
    else:
        return x ** 2
  1. Calcule f(-3) et f(3).
  2. Quelle est la valeur de f(-3) + f(3) ?
  3. Que renvoie f(0) ? Pourquoi ?
Indice 1

Pour chaque appel, commence par décider si le test x < 0 est vrai ou faux.

Indice 2

Le cas x = 0 ne vérifie pas x < 0 : il passe par le else.

Voir la correction pas à pas
  1. Pour f(-3) : le test -3 < 0 est vrai, donc Python renvoie −2×(−3)+1=6+1=7-2\times(-3)+1=6+1=7.

  2. Pour f(3) : le test 3 < 0 est faux, donc on passe au else et Python renvoie 32=93^2=9.

  3. On additionne : 7+9=167+9=16.

  4. Pour f(0) : le test 0 < 0 est faux (0 n'est pas strictement inférieur à 0), donc c'est le else qui s'applique et la fonction renvoie 02=00^2=0.

f(-3) + f(3) vaut 16. Une fonction définie par morceaux se programme avec un if : on vérifie toujours dans quel cas tombe chaque valeur, surtout aux bornes.

Exercice 9 Chercher des antécédents par balayage

★★★Environ 15 min

On veut savoir pour combien d'entiers xx compris entre 0 et 10 (inclus) on a x2−5x+6=0x^2-5x+6=0.

  1. Écris une fonction f(x) qui renvoie x2−5x+6x^2-5x+6.
  2. Écris une fonction compter() qui parcourt les entiers de 0 à 10 et renvoie le nombre de ceux qui annulent f.
  3. Quel nombre compter() renvoie-t-elle ?
Indice 1

Pour parcourir les entiers de 0 à 10 inclus, utilise range(0, 11).

Indice 2

Utilise un compteur initialisé à 0, que tu augmentes de 1 chaque fois que f(x) == 0. Le test d'égalité s'écrit avec deux signes =.

Voir la correction pas à pas
  1. On définit d'abord la fonction :

    def f(x):
        return x**2 - 5*x + 6
    
  2. On écrit la fonction de comptage :

    def compter():
        c = 0
        for x in range(0, 11):
            if f(x) == 0:
                c = c + 1
        return c
    
  3. On teste à la main quelques valeurs : f(0)=6f(0)=6, f(1)=2f(1)=2, f(2)=4−10+6=0f(2)=4-10+6=0, f(3)=9−15+6=0f(3)=9-15+6=0, f(4)=2f(4)=2.

  4. Pour x≥4x\geq 4, la valeur x2−5x+6=(x−2)(x−3)x^2-5x+6=(x-2)(x-3) est strictement positive, donc elle ne s'annule plus.

  5. Seuls x=2x=2 et x=3x=3 annulent la fonction : le compteur finit à 2.

compter() renvoie 2. Cette méthode de balayage teste toutes les valeurs possibles une à une ; elle donne les solutions entières d'un intervalle, mais ne détecte pas les solutions non entières.

Les questions qu'on se pose

Quelle est la différence entre return et print ?

return renvoie une valeur : la fonction la transmet à l'endroit où elle a été appelée, et on peut la ranger dans une variable ou s'en servir dans un autre calcul. print se contente d'afficher un texte ou un nombre à l'écran, sans le transmettre. Une fonction qui n'a que des print ne renvoie rien d'utilisable.1 Pour réutiliser un résultat, utilise return.

Pourquoi mon programme affiche-t-il une erreur d'indentation ?

En Python, le décalage des lignes vers la droite indique quelles instructions font partie de la fonction, du if ou de la boucle. Si une ligne du bloc n'est pas alignée comme ses voisines, Python ne sait plus où le bloc commence ou finit. Vérifie que toutes les lignes d'un même bloc ont le même décalage, et que la ligne qui se termine par deux-points (def ...:, if ...:, for ...:) est bien suivie d'une ligne décalée.

Comment vérifier qu'une fonction est correcte ?

Choisis une valeur pour laquelle tu connais déjà le résultat (par exemple x=0x=0 ou x=1x=1), calcule-le à la main, puis appelle la fonction avec cette valeur et compare. Teste aussi des cas limites : une valeur juste avant et juste après un seuil dans un if, ou une valeur très petite pour une boucle. Si les deux résultats diffèrent, relis la formule, l'ordre des paramètres et la présence du return.

Sources

  1. Ressource Éduscol - Algorithmique et programmation (document d'accompagnement), Éduscol - Ministère de l'Éducation nationale. Consulté le 9 novembre 2026.
  2. Ressource Éduscol - Fonctions et programmation, Éduscol - Ministère de l'Éducation nationale. Consulté le 9 novembre 2026.
  3. Document ressource fonctions - IREM, IREM - Université de Lille. Consulté le 9 novembre 2026.
  4. Python (langage), Wikipédia. Consulté le 9 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2
  • CM1
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page