Najah.
Mon plan de révision⚡ Défi flash

Informatique · Classes prépa (CPGE) — 2ème année — TSI

Révision et approfondissement du langage Python

Le cours expliqué simplement, les questions que tous les élèves se posent et des exercices type examen national. Programme marocain, gratuit.

📘 Fiche de cours

L'essentiel du cours

1. Types de données et Structures de base

  • Types simples : int, float, bool, str.
  • Structures de données :
    • Listes (list) : Ordonnées, mutables. Accès par indice $L[i]$.
    • Tuples (tuple) : Ordonnés, immutables. Utilisés pour des données fixes.
    • Dictionnaires (dict) : Collections non ordonnées de paires clé: valeur. Accès rapide par clé.

2. Structures de contrôle

  • Conditionnelles : if, elif, else.
  • Boucles :
    • for i in range(n) : Itération déterminée.
    • while condition : Itération conditionnelle.

3. Fonctions et Portée

  • Définition : def nom_fonction(paramètres):.
  • Variables locales : Définies dans la fonction, invisibles ailleurs.
  • Variables globales : Définies hors des fonctions. Utiliser global pour les modifier (à éviter).

4. Récursivité

Une fonction est récursive si elle s'appelle elle-même. Elle nécessite :

  1. Un cas de base (condition d'arrêt).
  2. Un appel récursif vers un cas plus simple.

5. Compréhension de listes

Syntaxe concise : [expression for element in sequence if condition].

Méthodes à maîtriser

  • Slicing : L[début:fin:pas] pour extraire des sous-listes.
  • Méthodes de listes : append(), extend(), pop(), insert(), sort().
  • Gestion des fichiers : with open('file.txt', 'r') as f:.
  • Passage d'arguments : Par position ou par mot-clé.

Exemples corrigés

  • Calcul de la moyenne d'une liste :
def moyenne(L):
    if not L: return 0
    return sum(L) / len(L)
  • Inversion d'une chaîne par slicing : s[::-1].

Erreurs fréquentes

  • IndexError : Accéder à un indice $i \ge len(L)$.
  • TypeError : Confondre les types (ex: additionner str et int).
  • RecursionError : Oublier le cas de base dans une fonction récursive.
  • Effet de bord : Modifier une liste passée en argument sans le vouloir.

🌉 Jisr : les mots du chapitre FR ⇄ AR

Tu as appris les sciences en arabe ? Touche un mot pour voir sa traduction et une explication en darija.

La question que tu n'oses pas poser en classe ? Pose-la à UstadZéro jugement, même en darija, même à minuit. Il t'explique pas à pas et corrige ta démarche. Gratuit.

Défi flash : 4 questions

Sans compte

🎯 Révision et approfondissement du langage Python

1/4

Quelle est la valeur de L[-1] pour la liste L = [10, 20, 30, 40] ?

❓ Questions fréquentes

Chno l-farq bin list o tuple f Python?

La différence principale réside dans la mutabilité :

  1. Liste [ ] : Elle est mutable, ce qui signifie qu'on peut modifier, ajouter ou supprimer ses éléments après sa création (ex: L.append(5)).
  2. Tuple ( ) : Il est immutable. Une fois créé, on ne peut plus changer son contenu. Il est plus rapide et protège les données contre les modifications accidentelles.

💡 À retenir : Utilisez une liste pour des collections de données homogènes qui évoluent, et un tuple pour des constantes ou des structures fixes.

Kifach n-dir slicing bach nakhod ghir l-3anassir li f l-indiciat l-zawjiya (pairs)?

Pour extraire les éléments aux indices pairs d'une liste L, on utilise le slicing avec un pas de 2 :

  1. La syntaxe est L[début:fin:pas].
  2. En laissant début et fin vides, on parcourt toute la liste.
  3. Le code est : L[::2].

💡 À retenir : Le troisième paramètre du slicing définit le "pas" de progression.

Chno hiya la récursivité o foqach n-7bsoha?

La récursivité est une technique où une fonction s'appelle elle-même pour résoudre un problème. Pour qu'elle ne tourne pas à l'infini, elle doit impérativement avoir :

  1. Un cas de base : Une condition simple où la fonction renvoie une valeur sans s'appeler (ex: $n=0$).
  2. Une progression : Chaque appel doit rapprocher l'argument du cas de base.

💡 À retenir : Sans cas de base, Python génère une erreur RecursionError: maximum recursion depth exceeded.

Quelle est la différence entre == et is ?
  1. == compare les valeurs des objets (le contenu).
  2. is compare l'identité des objets (l'adresse mémoire). Exemple : L1 = [1, 2] et L2 = [1, 2]. Ici L1 == L2 est True, mais L1 is L2 est False car ce sont deux objets différents en mémoire.

💡 À retenir : Utilisez == pour vérifier l'égalité des données.

Comment fonctionne la compréhension de liste ?

C'est une syntaxe compacte pour créer une liste à partir d'un itérable. Structure : [ <expression> for <item> in <iterable> if <condition> ]. Exemple : [x**2 for x in range(10) if x % 2 == 0] crée la liste des carrés des nombres pairs inférieurs à 10.

💡 À retenir : Elle remplace avantageusement une boucle for et un append() pour la lisibilité.

Qu'est-ce qu'un dictionnaire et comment accéder à une valeur ?

Un dictionnaire est une collection de paires clé: valeur. Contrairement aux listes, l'accès se fait par la clé et non par l'indice. Exemple : d = {"nom": "Ahmed", "age": 20}. Pour obtenir l'âge : d["age"].

💡 À retenir : Les clés doivent être uniques et de type immutable (str, int, tuple).

Quelle est la différence entre L.append(x) et L.extend(x) ?
  1. append(x) ajoute l'objet x tel quel à la fin de la liste. Si x est une liste, on aura une liste dans une liste.
  2. extend(x) prend chaque élément de l'itérable x et les ajoute un par un à la fin.

💡 À retenir : append augmente la taille de 1, extend augmente la taille de len(x).

Comment gérer les erreurs avec try ... except ?

On place le code "risqué" dans le bloc try. Si une erreur survient, le programme ne s'arrête pas et exécute le bloc except.

try:
    res = 10 / x
except ZeroDivisionError:
    res = 0

💡 À retenir : Cela permet de rendre le programme robuste face aux entrées imprévues.

C'est quoi une variable locale vs globale ?
  1. Locale : Créée à l'intérieur d'une fonction. Elle est détruite dès que la fonction se termine.
  2. Globale : Créée dans le corps principal du script. Elle est accessible partout. Pour modifier une variable globale dans une fonction, il faut utiliser le mot-clé global.

💡 À retenir : Il est recommandé de limiter l'usage des variables globales pour éviter les bugs.

À quoi sert la fonction zip() ?

zip() permet de parcourir plusieurs itérables (listes, tuples) en même temps, en associant leurs éléments par position. Exemple : zip([1, 2], ['a', 'b']) produit (1, 'a') puis (2, 'b').

💡 À retenir : Très utile dans les boucles for x, y in zip(L1, L2):.

Comment lire un fichier texte ligne par ligne ?

La méthode la plus propre est d'utiliser le gestionnaire de contexte with :

with open("data.txt", "r") as f:
    for ligne in f:
        print(ligne.strip())

strip() enlève le caractère de saut de ligne \n.

💡 À retenir : with ferme automatiquement le fichier, même en cas d'erreur.

Quelle est la complexité de l'accès à un élément dans une liste vs un dictionnaire ?
  1. Liste : L'accès par indice $L[i]$ est en $O(1)$. La recherche d'une valeur est en $O(n)$.
  2. Dictionnaire : L'accès par clé est en moyenne en $O(1)$ grâce au hachage.

💡 À retenir : Les dictionnaires sont extrêmement performants pour la recherche de données liées à une clé.

✍️ Exercices type examen national

Exercice 1

Sujet : Traitement de données et Compréhension de listes

On dispose d'une liste de relevés de températures journalières (en degrés Celsius) : T = [12, 15, 22, 18, 25, 30, 28, 14, 10, 35]

  1. En utilisant une compréhension de liste, créer une nouvelle liste T_chaud contenant uniquement les températures strictement supérieures à 20°C.
  2. Écrire une fonction statistiques(L) qui retourne un tuple contenant le minimum, le maximum et la moyenne de la liste L.
  3. On souhaite convertir les températures de T en degrés Fahrenheit en utilisant la formule : $F = C \times \frac{9}{5} + 32$. Écrire le code Python pour générer cette nouvelle liste T_f.
Voir la correction détaillée : inscription gratuite

Exercice 2

Sujet : Manipulation de dictionnaires

On veut gérer le stock d'un magasin d'informatique. Le stock est représenté par un dictionnaire où la clé est le nom du produit et la valeur est la quantité disponible. stock = {"PC": 10, "Clavier": 25, "Souris": 50, "Ecran": 8}

  1. Écrire une fonction ajouter_produit(dico, nom, qte) qui ajoute qte au produit nom. Si le produit n'existe pas, il doit être créé.
  2. Écrire une fonction rupture(dico, seuil) qui renvoie la liste des noms des produits dont la quantité est strictement inférieure au seuil.
  3. Calculer le nombre total d'articles dans le magasin.
Voir la correction détaillée : inscription gratuite

Exercice 3

Sujet : Récursivité et Algorithmique

On considère la suite de Fibonacci définie par : $U_0 = 0$ $U_1 = 1$ $U_n = U_{n-1} + U_{n-2}$ pour tout $n \ge 2$.

  1. Écrire une fonction récursive fibo_rec(n) qui calcule le n-ième terme de cette suite.
  2. Tracer l'arbre d'appels pour fibo_rec(4).
  3. Expliquer pourquoi cette version récursive est inefficace pour de grandes valeurs de $n$ (ex: $n=100$).
  4. Proposer une version itérative fibo_iter(n) plus performante.
Voir la correction détaillée : inscription gratuite

Un prof de Informatique pour aller plus loin

Les cours du soir avec des profs vérifiés arrivent : inscris-toi pour être prévenu(e) en premier.

Être prévenu(e) gratuitement

Autres chapitres de Informatique