Cours Python – 16 Octobre 2025

Correction Évaluation

Réponses : 12, 30 (j’ai oublié le 10 dans le calcul).

n % 2 == 0 → le reste permet de vérifier si un nombre est pair.

Itérations et boucles

Exemple de boucle dans une boucle : table de multiplication :


for i in range(10):
    for j in range(10):
        print(f"{i} * {j} = {i*j}")

Compteur de valeurs positives (pseudo-code)

Erreur courante : le compteur s’incrémente même pour x < 0 si la condition else_if est mal gérée.


ALGORITHM CountPositive
VARIABLES:
  l: LIST     // liste de nombres
  cpt: INT    // compteur de valeurs positives
  x: INT
BEGIN
    cpt <- 0
    FOR EACH x IN l
        IF x > 0 THEN
            cpt <- cpt + 1
        ELSE_IF x < 0 THEN
            cpt <- cpt  ou  cpt <- cpt + 0
        END_IF
    END_FOR
    RETURN cpt
END

⚠️ Erreur fréquente pour la seconde incrémentation : supprimer la condition (mettre +0 au compteur fonctionne mais n’est pas optimisé). Il suffit ici de supprimer simplement la condition ELSE_IF

Fonction pair ou impair

Solution classique :


def pair_ou_impair(n):
    if n % 2 == 0:
        return "pair"
    else:
        return "impair"

Solution simplifiée avec indentation :


def pair_ou_impair(n):
    if n % 2 == 0:
        return "pair"
    return "impair"

Exercice factorielle

Résolution : reponse ok.

Palindrome (solution formateur)


def est_palindrome(texte):
    lettres = "abcdefghijklmnopqrstuvwxyz"
    gauche_a_droite = []
    droite_a_gauche = []

    for lettre in texte.lower():
        if lettre in lettres:
            gauche_a_droite.append(lettre)
            droite_a_gauche.insert(0, lettre)  # ajoute à l'index 0 pour inverser

    return gauche_a_droite == droite_a_gauche

Sujet du jour : Les fonctions

Lien Google Colab : Colab

Une fonction réalise une action spécifique, permet d'abstraire la complexité du code et rend le programme plus lisible et fluide.

Principe DRY : Don’t Repeat Yourself → éviter la duplication de code.

Syntaxe


def nom_de_fonction(param1, param2):
    """Docstring : description de la fonction"""
    # corps de la fonction
    return resultat

Exemple :


def aire_rectangle(largeur, hauteur):
    """Calcule l'aire d'un rectangle en unités carrées."""
    return largeur * hauteur

print(aire_rectangle(4, 7))  # 28

Différence entre print et return :

Paramètres et valeurs par défaut

Paramètres :

*args et **kwargs

*args → permet de passer un nombre indéterminé de paramètres sous forme de tuple :


def somme(*args):
    total = 0
    for n in args:
        total += n
    return total

print(somme(1, 2, 3))       # 6
print(somme(10, -5, 4, 1))  # 10

**kwargs → capture des paramètres nommés additionnels sous forme de dictionnaire :


def infos_personne(**kwargs):
    return kwargs

print(infos_personne(nom="Ada", pays="UK", domaine="Math/CS"))
# {'nom': 'Ada', 'pays': 'UK', 'domaine': 'Math/CS'}

Le paramètre * dans la déclaration force la nomination :


def config_connexion(hote, *, port=5432, ssl=False):
    ...

Docstring et annotations de type

Docstring : texte explicatif entre triple guillemets immédiatement après la déclaration.


def moyenne(notes: list[float]) -> float:
    """Calcule la moyenne d'une liste de notes."""
    return sum(notes)/len(notes)

Portée et principe LEGB

LEGB : Local → Enclosing → Global → Builtins.


x = 10  # globale

def f():
    x = 5  # locale
    print("locale x =", x)

def g():
    global x
    x = 99  # modifie la variable globale

f()
print("globale x =", x)
g()
print("globale x après g() =", x)

Pass

Le mot-clé pass permet de passer une instruction vide pour éviter les erreurs de syntaxe.

Fonctions pures et effets de bord

Ressources à explorer