Consolidation Python : algorithmes et structures de données
Consolidation Python : structures de données (listes, dictionnaires), boucles (for, while), conditions (if/elif/else), fonctions (def), récursivité. Complexité : évaluer le nombre d'opérations. Algorithmes classiques : recherche (séquentielle, dichotomique), tri (séquentiel, fusion). Récursivité : une fonction qui s'appelle elle-même, avec un cas de base. Bonnes pratiques : modularité, lisibilité, noms explicites, documentation. Le débogage s'effectue par tests et affichages. La consolidation Python prépare à des applications dans tous les domaines (suites, intégrales, probabilités).
📝 Examen de trimestre (barème : 20 pts, grille : 16-20 = TB, 12-15 = B, 8-11 = passable, <8 = insuffisant)
- Liste de 0 à 9 en compréhension. (1 pt)
- Recherche dichotomique : écrire. (3 pts)
- Tri par sélection : écrire. (2 pts)
- Factorielle récursive. (2 pts)
- Fibonacci récursif. (2 pts)
- Recherche séquentielle. (1 pt)
- Démontre que la dichotomie est en O(log n). (2 pts)
- Tri fusion : principe. (2 pts)
- Liste des carrés pairs de 0 à 20. (2 pts)
- Dictionnaire : comptage d'occurrences. (2 pts)
- Complexité du tri par sélection. (1 pt)
- Fonction récursive : cas de base. (1 pt)
- Vérifier qu'une liste est triée. (1 pt)
Corrigé et barème :
- [x for x in range(10)] (1 pt).
- while g≤d, m=(g+d)//2, comparaison, division (3 pts).
- Pour chaque i, échanger avec le min (2 pts).
- def f(n): return 1 if n≤1 else n·f(n−1) (2 pts).
- def fib(n): return n if n<2 else fib(n−1)+fib(n−2) (2 pts).
- for x in L: if x==val: return True (1 pt).
- Division par 2 à chaque étape (2 pts).
- Diviser, trier récursivement, fusionner (2 pts).
- [x² for x in range(21) if x²%2==0] (2 pts).
- D={}; for x in L: D[x]=D.get(x, 0)+1 (2 pts).
- O(n²) (1 pt).
- Condition d'arrêt (1 pt).
- all(L[i]≤L[i+1] for i in range(len(L)−1)) (1 pt).
📝 Corrigés détaillés des exercices
Corrigé de l'exercice 1
Question : Liste de 0 à 9 en compréhension ?
Méthode : Compréhension.
Étapes détaillées :
- Compréhension.
- Choisis la méthode, la formule ou le théorème approprié.
- Effectue les calculs en détaillant chaque étape.
- Vérifie et conclus.
Réponse finale : [x for x in range(10)]
Corrigé de l'exercice 2
Question : Factorielle récursive ?
Méthode : Récursivité.
Étapes détaillées :
- Récursivité.
- Choisis la méthode, la formule ou le théorème approprié.
- Effectue les calculs en détaillant chaque étape.
- Vérifie et conclus.
Réponse finale : def f(n): return 1 if n≤1 else n·f(n−1)
Corrigé de l'exercice 3
Question : Fibonacci récursif ?
Méthode : Récursivité.
Étapes détaillées :
- Récursivité.
- Choisis la méthode, la formule ou le théorème approprié.
- Effectue les calculs en détaillant chaque étape.
- Vérifie et conclus.
Réponse finale : def fib(n): return n if n<2 else fib(n−1)+fib(n−2)
Corrigé de l'exercice 4
Question : Recherche séquentielle ?
Méthode : Boucle.
Étapes détaillées :
- Boucle.
- Choisis la méthode, la formule ou le théorème approprié.
- Effectue les calculs en détaillant chaque étape.
- Vérifie et conclus.
Réponse finale : for x in L: if x==val: return True
Corrigé de l'exercice 5
Question : Complexité de la dichotomie ?
Méthode : Division par 2.
Étapes détaillées :
- Division par 2.
- Choisis la méthode, la formule ou le théorème approprié.
- Effectue les calculs en détaillant chaque étape.
- Vérifie et conclus.
Réponse finale : O(log n)
Corrigé de l'exercice 6
Question : Complexité du tri par sélection ?
Méthode : Double boucle.
Étapes détaillées :
- Double boucle.
- Choisis la méthode, la formule ou le théorème approprié.
- Effectue les calculs en détaillant chaque étape.
- Vérifie et conclus.
Réponse finale : O(n²)
Corrigé de l'exercice 7
Question : Cas de base d'une fonction récursive ?
Méthode : Récursivité.
Étapes détaillées :
- Identifie l'algorithme demandé et les structures à utiliser (boucle, condition, fonction…).
- Écris le code Python en respectant la syntaxe (indentation, types, opérateurs).
- Teste mentalement avec un exemple simple.
- Vérifie la complexité et les cas limites.
Réponse finale : Condition d'arrêt
Corrigé de l'exercice 8
Question : Vérifier qu'une liste est triée ?
Méthode : Comparaisons.
Étapes détaillées :
- Identifie l'algorithme demandé et les structures à utiliser (boucle, condition, fonction…).
- Écris le code Python en respectant la syntaxe (indentation, types, opérateurs).
- Teste mentalement avec un exemple simple.
- Vérifie la complexité et les cas limites.
Réponse finale : all(L[i]≤L[i+1] for i in range(len(L)−1))