Chargement de Python...

🎓 Cours Interactif Python

Apprends pas à pas avec des exercices pratiques. Exécute du vrai code Python !

📦

Variables & Types

int, float, str, bool - les fondamentaux

⏱️ 10 min
📋

Listes (Tableaux)

Créer, manipuler, parcourir des listes

⏱️ 15 min
🔄

Boucles for & while

Répéter des actions, parcourir

⏱️ 15 min
⚡

Conditions if/else

Prendre des décisions dans le code

⏱️ 10 min
🔧

Fonctions

Paramètres, return, bonnes pratiques

⏱️ 20 min
🔀

Tri par sélection

Implémenter un algorithme de tri

⏱️ 15 min
🎯

Filtrage de données

Filtrer des tableaux (projet domotique)

⏱️ 20 min
🏗️

Classes & POO

Point, Segment, Polygone

⏱️ 25 min
🐍 Éditeur Python
Templates:
📤 Sortie
Le résultat apparaîtra ici...

🎯 Exercices Pratiques

Teste tes connaissances avec ces exercices du contrôle

1

Somme d'une liste

À faire

Écris une fonction somme_liste(tableau) qui retourne la somme de tous les éléments d'une liste de nombres.

Rappel : Pas de fonction sum() ! Utilise une boucle.

📤 Résultat attendu

somme_liste([1, 2, 3, 4, 5]) → 15
somme_liste([10, 20, 30]) → 60
0 essai(s)
📤 Sortie

💡 Indice

1. Crée une variable total = 0 au début
2. Parcours chaque élément avec for element in tableau:
3. Ajoute chaque élément à total
4. Retourne total à la fin (en dehors de la boucle !)

✅ Solution

def somme_liste(tableau):
    total = 0
    for element in tableau:
        total = total + element
    return total
2

Filtrer par valeur

À faire

Écris une fonction filtrer_superieur(tableau, seuil) qui retourne un nouveau tableau contenant uniquement les éléments supérieurs au seuil.

📤 Résultat attendu

filtrer_superieur([1, 5, 3, 8, 2, 9], 4) → [5, 8, 9]
filtrer_superieur([10, 20, 30], 25) → [30]
0 essai(s)
📤 Sortie

💡 Indice

1. Crée un nouveau tableau vide : resultat = []
2. Parcours chaque élément du tableau
3. Si l'élément est strictement supérieur au seuil → resultat.append(element)
4. Retourne le tableau résultat

✅ Solution

def filtrer_superieur(tableau, seuil):
    resultat = []
    for element in tableau:
        if element > seuil:
            resultat.append(element)
    return resultat
3

Tri par sélection

À faire

Implémente la fonction tri_selection(tableau) qui trie le tableau en place par ordre croissant.

⚠️ INTERDIT d'utiliser sort() !

📤 Résultat attendu

tri_selection([64, 25, 12, 22, 11]) → [11, 12, 22, 25, 64]
0 essai(s)
📤 Sortie

💡 Indice

Principe du tri par sélection :
1. Pour chaque position i de 0 à n-1 :
2. Trouve le minimum dans la partie non triée (de i à la fin)
3. Échange l'élément à la position i avec le minimum trouvé

Échange : tableau[i], tableau[j] = tableau[j], tableau[i]

✅ Solution

def tri_selection(tableau):
    n = len(tableau)
    for i in range(n):
        # Trouver le minimum
        indice_min = i
        for j in range(i + 1, n):
            if tableau[j] < tableau[indice_min]:
                indice_min = j
        # Échanger
        tableau[i], tableau[indice_min] = tableau[indice_min], tableau[i]
    return tableau
4

Classe Point

À faire

Crée une classe Point avec :
• Attributs privés _x et _y
• Getters get_x() et get_y()
• Setters set_x(val) et set_y(val)

📤 Résultat attendu

p = Point(3, 4)
p.get_x() → 3
p.get_y() → 4
0 essai(s)
📤 Sortie

💡 Indice

Structure d'une classe :
1. def __init__(self, x, y): → le constructeur reçoit x et y
2. self._x = x → stocke x dans un attribut privé
3. def get_x(self): → retourne self._x
4. def set_x(self, val): → modifie self._x = val

✅ Solution

class Point:
    def __init__(self, x, y):
        self._x = x
        self._y = y

    def get_x(self):
        return self._x

    def get_y(self):
        return self._y

    def set_x(self, val):
        self._x = val

    def set_y(self, val):
        self._y = val
5

Classe Segment avec longueur

À faire

Crée une classe Segment avec :
• Constructeur qui prend 2 objets Point
• Méthode longueur() qui retourne la distance

Formule : √((x2-x1)² + (y2-y1)²) → utilise import math et math.sqrt()

📤 Résultat attendu

s = Segment(Point(0, 0), Point(3, 4))
s.longueur() → 5.0
0 essai(s)
📤 Sortie

💡 Indice

1. __init__(self, p1, p2) → stocke les 2 points
2. Dans longueur() :
  • Récupère les coordonnées avec self._p1.get_x() etc.
  • Calcule dx = x2 - x1 et dy = y2 - y1
  • Retourne math.sqrt(dx**2 + dy**2)

✅ Solution

class Segment:
    def __init__(self, p1, p2):
        self._p1 = p1
        self._p2 = p2

    def longueur(self):
        dx = self._p2.get_x() - self._p1.get_x()
        dy = self._p2.get_y() - self._p1.get_y()
        return math.sqrt(dx**2 + dy**2)

📋 Mémo Rapide

Tout ce qu'il faut retenir pour le contrôle

📦 Listes
Créer vide tab = []
Ajouter tab.append(x)
Longueur len(tab)
Accéder tab[i]
Vérifier x in tab
🔄 Boucles
Parcourir for x in tab:
Avec indice for i in range(len(tab)):
Range range(debut, fin)
While while condition:
🔧 Fonctions
Définir def nom(params):
Retourner return valeur
⚠️ Return À LA FIN !
⚠️ Pas de print dans calcul
🧮 Math
Carré x ** 2
Racine math.sqrt(x)
Modulo a % b
Division ent. a // b
🏗️ POO - Classes
Classe class Nom:
Constructeur def __init__(self):
Attribut privé self._nom
Getter def get_nom(self):
Setter def set_nom(self, v):
🔀 Tri par sélection
Algorithme :
for i in range(n-1):
    i_min = i
    for j in range(i+1, n):
        if tab[j] < tab[i_min]:
            i_min = j
    tab[i], tab[i_min] = tab[i_min], tab[i]
🎯 Filtrage
Pattern :
def filtrer(tableau, critere):
    resultat = []
    for ligne in tableau:
        if ligne[X] == critere:
            resultat.append(ligne)
    return resultat
⚠️ Règles du prof
❌ INTERDIT sort()
❌ INTERDIT return dans boucle
❌ INTERDIT print dans calcul
✅ OBLIGÉ Commenter code
🎉

Excellent !

Tu as réussi l'exercice !