Aller au contenu

Exercices corrigés — Algorithmique et programmation Python (Seconde)

Quatre niveaux de difficulté, du plus simple au plus exigeant. Chaque exercice a sa correction détaillée, étape par étape.

2 exercices de niveau « Application ». Voir les 8 exercices.

Exercice 3 Application

Écrire une fonction determinant(x, y, xp, yp) qui renvoie le déterminant des vecteurs u(x ; y) et v(xp ; yp). L'utiliser pour tester si u(6 ; −9) et v(−4 ; 6) sont colinéaires.

Voir la correction
Correction détaillée

le déterminant de u(x ; y) et v(x' ; y') vaut xy' − yx'. La fonction traduit cette formule, avec quatre arguments et un return :

def determinant(x, y, xp, yp):
    return x*yp - y*xp

Test : determinant(6, -9, -4, 6) calcule 6 × 6 − (−9) × (−4) = 36 − 36 = 0. Le déterminant est nul, donc les vecteurs sont colinéaires (en fait u = −1,5 v).
On peut en déduire une fonction booléenne colineaires(x, y, xp, yp) qui renvoie determinant(x, y, xp, yp) == 0. Avec des coordonnées décimales, on préférera tester abs(determinant(...)) < 1e-9, car les calculs flottants ne tombent pas toujours exactement sur 0.
Rappel : return renvoie une valeur réutilisable ; print ne ferait que l'afficher.

Exercice 4 Application

Un musée propose l'entrée à 5 € pour les moins de 12 ans, 8 € de 12 à 17 ans inclus, et 12 € à partir de 18 ans. Écrire une fonction tarif(age) qui renvoie le prix, puis donner les résultats de tarif(11), tarif(12) et tarif(18).

Voir la correction
Correction détaillée

on enchaîne trois cas avec if, elif et else, en testant les conditions dans l'ordre croissant des âges :

def tarif(age):
    if age < 12:
        return 5
    elif age < 18:
        return 8
    else:
        return 12

tarif(11) : 11 < 12 est vrai, la fonction renvoie 5. tarif(12) : 12 < 12 est faux, on passe au elif, 12 < 18 est vrai, elle renvoie 8. tarif(18) : les deux tests sont faux, on arrive au else, elle renvoie 12.
Le second test n'a pas besoin d'écrire age >= 12 : quand on l'atteint, on sait déjà que la première condition était fausse. Les cas limites 12 et 18 sont les plus importants à tester : ils vérifient les inégalités strictes ou larges. Une fois qu'un return est exécuté, la fonction s'arrête.