La programmation et les algorithmes
Une version article du chapitre pour comprendre l'essentiel rapidement, vérifier si le niveau correspond, puis basculer vers Wilo pour la pratique guidée et le suivi.
Lecture
5 chapitres
Un parcours éditorialisé et navigable.
Pratique
12 questions
Quiz et cartes mémoire à ouvrir après la lecture.
Objectif
Première générale
Format rapide pour vérifier si le chapitre correspond.
Chapitre 1
Fondamentaux de l'Algorithmique
Qu'est-ce qu'un algorithme ?
Un algorithme est une séquence finie et non ambiguë d'instructions et d'opérations permettant de résoudre un problème ou d'obtenir un résultat donné. Imagine une recette de cuisine : elle contient des étapes précises pour arriver à un plat. Un algorithme, c'est pareil, mais pour un ordinateur.
Key Concepts:
- Définition d'un algorithme : Une suite d'étapes claires pour atteindre un but.
- Séquence d'instructions : Les étapes sont ordonnées et doivent être suivies dans un ordre précis.
- Résolution de problèmes : Le but principal est de trouver une solution à une question posée.
- Exemples concrets :
- Recette de cuisine : Mélanger, cuire, assaisonner...
- Instructions de montage de meubles : Étape 1, Étape 2...
- Calcul de la moyenne de notes : Additionner toutes les notes, diviser par le nombre de notes.
Un bon algorithme doit toujours :
- Être fini : il doit se terminer après un nombre fini d'étapes.
- Être non ambigu : chaque instruction doit être claire et interprétable d'une seule manière.
- Être efficace : il doit résoudre le problème avec le moins de ressources possible (temps, mémoire).
Représentation d'un algorithme
Pour concevoir et communiquer un algorithme, il existe différentes manières de le représenter. Le choix dépend souvent de la complexité de l'algorithme et du public visé.
Key Concepts:
- Langage naturel : Décrire l'algorithme avec des phrases courantes. C'est simple à comprendre pour un humain, mais souvent trop ambigu pour un ordinateur.
- Exemple : "Demander l'âge de la personne. Si l'âge est supérieur ou égal à 18, afficher "Majeur". Sinon, afficher "Mineur"."
- Pseudo-code : Une description de l'algorithme qui ressemble à un langage de programmation mais sans respecter une syntaxe stricte. C'est un bon compromis entre le langage naturel et le code. Il utilise des mots-clés comme
DEBUT,FIN,LIRE,ECRIRE,SI,ALORS,SINON,TANT QUE. C'est la méthode la plus courante en algorithmique.- Exemple :
DEBUT Algorithme MajeurOuMineur LIRE age SI age >= 18 ALORS ECRIRE "Majeur" SINON ECRIRE "Mineur" FIN SI FIN Algorithme
- Exemple :
- Organigrammes (flowcharts) : Des diagrammes graphiques utilisant des symboles standardisés pour représenter les étapes et le flux de contrôle de l'algorithme. Très visuels, ils sont utiles pour les algorithmes plus complexes.
- Symboles courants :
- Ovale : Début/Fin
- Parallélogramme : Entrée/Sortie de données
- Rectangle : Traitement/Opération
- Losange : Décision (condition)
- Flèche : Sens du flux
- Symboles courants :
- Importance de la clarté : Quelle que soit la représentation choisie, l'objectif est de rendre l'algorithme compréhensible par quiconque le lira, et de s'assurer qu'il ne contient aucune ambiguïté.
Variables et types de données
Pour qu'un algorithme puisse manipuler des informations, il a besoin de les stocker temporairement. C'est le rôle des variables.
Key Concepts:
- Définition d'une variable : Une variable est un emplacement nommé en mémoire qui peut stocker une valeur. Cette valeur peut changer (varier) pendant l'exécution de l'algorithme. C'est comme une boîte étiquetée où l'on peut ranger différentes choses.
- Exemple :
age,nom,prixTotal.
- Exemple :
- Types de données : Pour chaque variable, il est important de savoir quel type de données elle va contenir. Cela permet à l'ordinateur de savoir comment interpréter et manipuler cette donnée.
- Entier (Integer) : Nombres entiers (positifs, négatifs ou zéro). Ex: 5, -10, 0, 1000.
- Flottant (Float) : Nombres décimaux, avec une partie fractionnaire. Ex: 3.14, -0.5, 99.99.
- Chaîne de caractères (String) : Séquence de caractères (lettres, chiffres, symboles). Utilisé pour le texte. Ex: "Bonjour", "Python", "123".
- Booléen (Boolean) : Représente une valeur de vérité. Peut être
VRAI(True) ouFAUX(False). Souvent utilisé pour les conditions.
- Déclaration et affectation :
- Déclaration : Créer la variable et lui donner un nom. Dans certains langages, il faut aussi spécifier son type.
- Affectation : Attribuer une valeur à la variable. On utilise souvent le symbole
←ou=en pseudo-code. - Exemple en pseudo-code :
DEBUT DECLARE age : ENTIER // Déclaration de la variable 'age' de type ENTIER age ← 25 // Affectation de la valeur 25 à la variable 'age' DECLARE nom : CHAINE nom ← "Alice" DECLARE estMajeur : BOOLEEN estMajeur ← VRAI FIN
- Portée des variables : C'est l'endroit du programme où une variable est "visible" et peut être utilisée. Nous y reviendrons plus tard avec les fonctions, mais sache que toutes les variables ne sont pas accessibles partout.
Opérateurs et expressions
Les opérateurs sont des symboles qui nous permettent de manipuler des valeurs et des variables pour créer de nouvelles valeurs ou prendre des décisions. Une expression est une combinaison de variables, de valeurs et d'opérateurs qui, une fois évaluée, produit une nouvelle valeur.
Key Concepts:
-
Opérateurs arithmétiques : Pour les calculs mathématiques.
+: Addition (Ex:5 + 3donne8)-: Soustraction (Ex:10 - 4donne6)*: Multiplication (Ex:2 * 6donne12)/: Division (Ex:15 / 3donne5)%: Modulo (reste de la division entière) (Ex:10 % 3donne1)^ou**: Puissance (Ex:2^3ou2**3donne8)
-
Opérateurs de comparaison : Pour comparer des valeurs. Ils renvoient toujours un booléen (
VRAIouFAUX).=ou<mark>: Égal à (Ex:5 </mark> 5donneVRAI,5 == 3donneFAUX)!=ou<>: Différent de (Ex:5 != 3donneVRAI)<: Inférieur à (Ex:5 < 8donneVRAI)>: Supérieur à (Ex:10 > 7donneVRAI)<=: Inférieur ou égal à (Ex:5 <= 5donneVRAI)>=: Supérieur ou égal à (Ex:10 >= 12donneFAUX)
-
Opérateurs logiques : Pour combiner des expressions booléennes.
ET(AND) : VRAI si toutes les conditions sont VRAIES.- Ex:
(age > 18) ET (genre <mark> "homme")
- Ex:
OU(OR) : VRAI si au moins une des conditions est VRAIE.- Ex:
(jour </mark> "samedi") OU (jour <mark> "dimanche")
- Ex:
NON(NOT) : Inverse la valeur de vérité.- Ex:
NON (estConnecte)
- Ex:
-
Priorité des opérateurs : Comme en mathématiques, certains opérateurs sont évalués avant d'autres.
- Parenthèses
() - Puissances
**ou^ - Multiplication
*, Division/, Modulo% - Addition
+, Soustraction- - Opérateurs de comparaison
</mark>,!=,<,>,<=,>= - Opérateurs logiques
NON,ET,OU(dans cet ordre)
Exemple :
5 + 3 * 2donne11(3 * 2 est évalué en premier), alors que(5 + 3) * 2donne16. - Parenthèses
Chapitre 2
Structures de Contrôle Fondamentales
Séquence d'instructions
La structure la plus simple est la séquence. C'est le comportement par défaut d'un algorithme : les instructions sont exécutées l'une après l'autre, dans l'ordre où elles sont écrites.
Key Concepts:
- Exécution linéaire : Les instructions sont traitées de haut en bas, une par une.
- Ordre des opérations : L'ordre est crucial. Changer l'ordre peut changer le résultat ou provoquer des erreurs.
- Exemple :
Le programme affichera toujours "Bonjour" puis "Comment ça va ?".DEBUT AFFICHER "Bonjour" AFFICHER "Comment ça va ?" FIN
- Exemple :
- Blocs d'instructions : Une séquence peut être vue comme un bloc d'instructions. Parfois, ces blocs sont regroupés, par exemple, à l'intérieur d'une condition ou d'une boucle.
Structures conditionnelles (Si...Alors...Sinon)
Les structures conditionnelles permettent à un algorithme de prendre des décisions. C'est ce qui rend un programme "intelligent" : il peut réagir différemment en fonction de certaines conditions.
Key Concepts:
-
Tests logiques : L'algorithme évalue une expression booléenne (une condition). Si la condition est
VRAIE, un bloc d'instructions est exécuté. Si elle estFAUSSE, un autre bloc (ou aucun) peut être exécuté. -
Branchement conditionnel : Le programme "choisit" un chemin parmi plusieurs possibles.
-
Syntaxe générale en pseudo-code :
SI (condition) ALORS // Instructions à exécuter si la condition est VRAIE SINON // Instructions à exécuter si la condition est FAUSSE FIN SILe bloc
SINONest optionnel. Si tu n'as rien à faire quand la condition est fausse, tu peux l'omettre. -
Conditions imbriquées : Il est possible de placer une structure conditionnelle à l'intérieur d'une autre.
- Exemple :
SI (age >= 18) ALORS SI (aPermisConduire == VRAI) ALORS ECRIRE "Vous pouvez louer une voiture." SINON ECRIRE "Vous êtes majeur mais n'avez pas le permis." FIN SI SINON ECRIRE "Vous êtes mineur." FIN SI
- Exemple :
-
Opérateurs booléens : Pour des conditions plus complexes, on utilise les opérateurs
ET,OU,NONvus précédemment.- Exemple :
SI (age >= 18 ET aPermisConduire == VRAI) ALORS ...
- Exemple :
Structures répétitives (Boucles)
Les boucles permettent d'exécuter un bloc d'instructions plusieurs fois. C'est l'un des concepts les plus puissants en programmation car il permet d'automatiser des tâches répétitives sans écrire le même code encore et encore.
Key Concepts:
-
Boucle Tant que (While) : Répète un bloc d'instructions tant qu'une condition est VRAIE. La condition est testée avant chaque itération. Si la condition est fausse dès le début, le bloc ne sera jamais exécuté.
TANT QUE (condition) FAIRE // Instructions à répéter FIN TANT QUE- Exemple : Compter jusqu'à 5
Attention : si la condition ne devient jamais fausse, la boucle ne s'arrêtera jamais ! C'est une boucle infinie.DEBUT compteur ← 1 TANT QUE (compteur <= 5) FAIRE ECRIRE compteur compteur ← compteur + 1 // Très important : modifier la condition pour qu'elle devienne fausse à un moment donné ! FIN TANT QUE FIN
- Exemple : Compter jusqu'à 5
-
Boucle Pour (For) : Répète un bloc d'instructions un nombre de fois déterminé à l'avance ou pour chaque élément d'une collection.
POUR (variable DE debut À fin AVEC PAS increment) FAIRE // Instructions à répéter FIN POUR- Exemple : Compter jusqu'à 5
DEBUT POUR i DE 1 À 5 FAIRE ECRIRE i FIN POUR FIN - En Python, la boucle
forest souvent utilisée pour parcourir des collections (listes, chaînes de caractères, etc.).
- Exemple : Compter jusqu'à 5
-
Condition d'arrêt : C'est la condition qui, lorsqu'elle devient fausse (pour
TANT QUE) ou que le parcours est terminé (pourPOUR), met fin à la boucle. -
Itération : Chaque exécution du bloc d'instructions à l'intérieur d'une boucle est appelée une itération.
Gestion des entrées/sorties
Pour qu'un programme soit utile, il doit pouvoir interagir avec l'utilisateur ou avec l'environnement. C'est le rôle des fonctions d'entrée/sortie.
Key Concepts:
- Fonctions d'entrée (lire) : Permettent au programme de recevoir des données de l'extérieur, généralement via le clavier de l'utilisateur.
- Exemple en pseudo-code :
LIRE nomUtilisateur - L'algorithme met en pause son exécution et attend que l'utilisateur tape quelque chose et valide (souvent avec la touche Entrée). La valeur tapée est ensuite stockée dans la variable spécifiée.
- Exemple en pseudo-code :
- Fonctions de sortie (écrire, afficher) : Permettent au programme d'afficher des informations à l'utilisateur, généralement sur l'écran.
- Exemple en pseudo-code :
ECRIRE "Bienvenue, " + nomUtilisateur - Ces fonctions affichent du texte, des valeurs de variables ou le résultat d'expressions.
- Exemple en pseudo-code :
- Interaction utilisateur : L'ensemble des opérations d'entrée et de sortie constitue l'interaction entre le programme et son utilisateur. Un bon programme doit être clair dans ce qu'il demande et ce qu'il affiche.
- Affichage de résultats : La sortie est essentielle pour présenter les résultats des calculs ou des traitements effectués par l'algorithme.
Chapitre 3
Introduction à la Programmation Python
Environnement de développement
Pour écrire et exécuter du code Python, tu as besoin de quelques outils.
Key Concepts:
- Interpréteur Python : C'est le programme qui lit ton code Python et l'exécute instruction par instruction. Sans lui, ton ordinateur ne comprendrait pas ce que tu as écrit. Python est un langage interprété, pas compilé.
- Éditeurs de code (IDLE, VS Code) :
- IDLE : C'est l'environnement de développement intégré (IDE) qui est souvent livré avec Python. Il est simple et suffisant pour commencer. Il propose un shell Python (où tu peux taper des commandes Python et voir les résultats immédiatement) et un éditeur de texte pour écrire et sauvegarder tes scripts.
- VS Code (Visual Studio Code) : Un éditeur de code très populaire et puissant, développé par Microsoft. Il est gratuit, open-source, et très extensible grâce à des extensions. C'est un excellent choix pour des projets plus importants.
- D'autres options existent comme PyCharm, Sublime Text, etc.
- Exécution d'un script :
- Écris ton code Python dans un fichier texte et sauvegarde-le avec l'extension
.py(ex:mon_programme.py). - Ouvre un terminal ou une invite de commande.
- Navigue jusqu'au dossier où tu as enregistré ton fichier.
- Tape
python mon_programme.pyet appuie sur Entrée. L'interpréteur Python exécutera ton code.
- Écris ton code Python dans un fichier texte et sauvegarde-le avec l'extension
- Syntaxe de base : La syntaxe est l'ensemble des règles qui régissent la manière dont tu dois écrire ton code. Python est connu pour sa syntaxe propre et l'utilisation de l'indentation (les espaces au début des lignes) pour définir les blocs de code, là où d'autres langages utilisent des accolades.
Variables et types en Python
En Python, tu n'as pas besoin de déclarer explicitement le type d'une variable. L'interpréteur Python devine le type en fonction de la valeur que tu lui donnes. C'est ce qu'on appelle le typage dynamique.
Key Concepts:
- Déclaration implicite : Tu crées une variable simplement en lui affectant une valeur.
age = 20 # age est un entier (int) nom = "Sophie" # nom est une chaîne de caractères (str) taille = 1.75 # taille est un nombre flottant (float) est_etudiant = True # est_etudiant est un booléen (bool) - Types numériques (int, float) :
int(integer) : Pour les nombres entiers. Ex:10,-5.float(floating-point number) : Pour les nombres décimaux. Ex:3.14,0.001.
- Chaînes de caractères (str) : Pour le texte. Elles sont délimitées par des guillemets simples (
') ou doubles (").- Ex:
'Bonjour',"Python c'est cool".
- Ex:
- Booléens (bool) : Pour les valeurs de vérité.
True(Vrai) ouFalse(Faux). Note la majuscule !
Python est sensible à la casse : Age n'est pas la même variable que age.
Opérateurs et expressions en Python
Les opérateurs en Python sont très similaires à ceux que nous avons vus en pseudo-code.
Key Concepts:
- Opérateurs arithmétiques :
+,-,*,/(division flottante)//: Division entière (le quotient, sans la partie décimale). Ex:10 // 3donne3.%: Modulo (reste de la division entière). Ex:10 % 3donne1.**: Puissance. Ex:2 ** 3donne8.
- Opérateurs de comparaison :
==(égal à),!=(différent de)<,>,<=,>=- Ces opérateurs renvoient
TrueouFalse.
- Opérateurs logiques (and, or, not) :
and(ET) :Truesi les deux opérandes sontTrue.or(OU) :Truesi au moins un des opérandes estTrue.not(NON) : Inverse la valeur de vérité de l'opérande.
- Priorité des opérateurs : La même logique s'applique qu'en mathématiques et en pseudo-code. Les parenthèses
()peuvent être utilisées pour forcer un ordre d'évaluation.- Ex:
resultat = 5 + 3 * 2(resultat sera 11) - Ex:
resultat = (5 + 3) * 2(resultat sera 16)
- Ex:
Instructions conditionnelles en Python
Les conditions en Python utilisent les mots-clés if, elif (else if), et else. L'indentation est cruciale pour définir les blocs de code.
Key Concepts:
- Instruction
if:
Notez leage = 20 if age >= 18: print("Vous êtes majeur."):après la condition et l'indentation (généralement 4 espaces) pour le bloc d'instructions. if,else:temperature = 15 if temperature > 25: print("Il fait chaud.") else: print("Il fait frais.")if,elif,else: Pour gérer plusieurs conditions mutuellement exclusives.note = 12 if note >= 16: print("Très bien") elif note >= 12: # Si la première condition était fausse (note < 16) print("Bien") elif note >= 10: # Si les deux premières étaient fausses (note < 12) print("Passable") else: # Si toutes les conditions précédentes étaient fausses (note < 10) print("Insuffisant")- Indentation : C'est la règle d'or en Python. Les instructions qui font partie d'un bloc (
if,else,elif, boucles, fonctions) doivent être indentées au même niveau. Une erreur d'indentation (IndentationError) arrêtera l'exécution de ton programme.
Boucles en Python
Python propose des boucles while et for pour la répétition d'instructions.
Key Concepts:
- Boucle
while: Répète un bloc de code tant qu'une condition estTrue.
N'oublie pas de modifier la variable de la condition à l'intérieur de la boucle pour éviter une boucle infinie !compteur = 1 while compteur <= 5: print(compteur) compteur = compteur + 1 # ou compteur += 1 print("Fin de la boucle while.") - Boucle
for(avecrange, listes) :- Avec
range():range(n)génère une séquence de nombres de 0 àn-1.range(a, b)génère deaàb-1.range(a, b, step)génère deaàb-1avec un pas.# Répète 5 fois (i prend les valeurs 0, 1, 2, 3, 4) for i in range(5): print(f"Itération {i}") # f-string pour affichage formaté, très pratique # Compte de 1 à 5 (i prend les valeurs 1, 2, 3, 4, 5) for i in range(1, 6): print(i) # Compte de 0 à 10 par pas de 2 (0, 2, 4, 6, 8, 10) for i in range(0, 11, 2): print(i) - Itération sur des séquences : La boucle
forest très efficace pour parcourir les éléments d'une liste, d'une chaîne de caractères, etc.fruits = ["pomme", "banane", "cerise"] for fruit in fruits: print(f"J'aime la {fruit}.") phrase = "Python" for lettre in phrase: print(lettre)
- Avec
- Instructions
breaketcontinue:break: Permet de sortir immédiatement de la boucle en cours, même si la condition de la boucle est toujours vraie.for i in range(10): if i <mark> 5: break # Arrête la boucle quand i atteint 5 print(i) # Affichera 0, 1, 2, 3, 4continue: Permet de passer à l'itération suivante de la boucle, en ignorant les instructions restantes du bloc pour l'itération actuelle.for i in range(5): if i </mark> 2: continue # Passe l'itération où i est 2 print(i) # Affichera 0, 1, 3, 4
Chapitre 4
Fonctions et Modularité
Définition et appel de fonctions
Une fonction est un bloc de code nommé qui effectue une tâche spécifique.
Key Concepts:
- Rôle d'une fonction :
- Réutilisabilité du code : Évite de copier-coller le même code plusieurs fois. Tu écris la logique une seule fois et tu l'appelles quand tu en as besoin.
- Modularité : Découpe un gros problème en petits sous-problèmes gérables. Chaque fonction s'occupe d'une petite tâche.
- Lisibilité : Rend le code plus facile à lire et à comprendre.
- Définition (
def) : En Python, on utilise le mot-clédefpour définir une fonction.
Comme pour les conditions et les boucles, l'indentation est utilisée pour définir le corps de la fonction.def saluer(): # saluer est le nom de la fonction print("Bonjour !") print("Bienvenue dans mon programme.") - Appel de fonction : Pour exécuter le code d'une fonction, il faut l'appeler par son nom, suivi de parenthèses.
saluer() # Ceci exécute les instructions à l'intérieur de la fonction saluer saluer() # On peut l'appeler plusieurs fois
Paramètres et valeurs de retour
Les fonctions peuvent échanger des informations avec le reste du programme.
Key Concepts:
- Arguments et paramètres :
- Les paramètres sont les variables listées entre les parenthèses lors de la définition de la fonction. Ce sont des "placeholders" pour les données que la fonction attend.
- Les arguments sont les valeurs que tu passes à la fonction lorsque tu l'appelles. Ces valeurs sont affectées aux paramètres.
Une fonction peut prendre plusieurs paramètres, séparés par des virgules.def afficher_salutation(nom): # 'nom' est un paramètre print(f"Bonjour, {nom} !") afficher_salutation("Alice") # "Alice" est un argument afficher_salutation("Bob") # "Bob" est un autre argumentdef additionner(a, b): somme = a + b print(f"La somme de {a} et {b} est {somme}") additionner(5, 3) # a=5, b=3 - Valeur de retour (
return) : Une fonction peut calculer un résultat et le renvoyer au programme qui l'a appelée. On utilise le mot-cléreturn.
Quanddef calculer_carre(nombre): carre = nombre * nombre return carre # La fonction renvoie la valeur de 'carre' resultat = calculer_carre(7) # 'resultat' vaudra 49 print(f"Le carré est : {resultat}") print(f"Le carré de 10 est : {calculer_carre(10)}") # On peut utiliser la valeur directementreturnest exécuté, la fonction s'arrête immédiatement et renvoie la valeur spécifiée. - Fonctions sans retour : Toutes les fonctions ne renvoient pas explicitement une valeur. Si une fonction n'a pas d'instruction
return, elle renvoie implicitementNone(qui représente l'absence de valeur). - Passage par valeur/référence (simplifié) : En Python, les arguments sont passés "par référence d'objet". Pour les types immuables (nombres, chaînes, tuples), cela se comporte comme un passage par valeur : modifier le paramètre à l'intérieur de la fonction ne modifie pas l'argument d'origine. Pour les types mutables (listes, dictionnaires), cela se comporte comme un passage par référence : modifier l'objet via le paramètre à l'intérieur de la fonction modifie l'objet original. C'est un concept plus avancé, mais bon à savoir.
Portée des variables (locale et globale)
La portée (scope) d'une variable détermine où elle peut être accédée et modifiée dans ton programme.
Key Concepts:
- Variables locales : Une variable définie à l'intérieur d'une fonction est une variable locale. Elle n'est accessible que depuis l'intérieur de cette fonction. Elle est créée lorsque la fonction est appelée et détruite lorsque la fonction se termine.
def ma_fonction(): x = 10 # x est une variable locale à ma_fonction print(x) ma_fonction() # Affiche 10 # print(x) # Erreur : NameError, x n'est pas défini en dehors de la fonction - Variables globales : Une variable définie en dehors de toute fonction (au niveau principal du script) est une variable globale. Elle peut être lue depuis n'importe où dans le script, y compris à l'intérieur des fonctions.
Attention : pour modifier une variable globale depuis l'intérieur d'une fonction, il faut utiliser le mot-cléy = 20 # y est une variable globale def autre_fonction(): print(y) # Peut accéder à y autre_fonction() # Affiche 20 print(y) # Affiche 20global. C'est une pratique à utiliser avec parcimonie pour éviter de rendre le code difficile à suivre.compteur_global = 0 def incrementer(): global compteur_global # Indique que nous voulons modifier la variable globale compteur_global += 1 incrementer() incrementer() print(compteur_global) # Affiche 2 - Impact sur le comportement : Comprendre la portée est essentiel pour éviter des erreurs et pour écrire du code prévisible. Les variables locales sont préférables car elles évitent les effets de bord inattendus.
- Bonnes pratiques : Privilégie l'utilisation de paramètres pour passer des données aux fonctions et de
returnpour renvoyer des résultats, plutôt que de manipuler des variables globales. Cela rend les fonctions plus indépendantes et plus faciles à tester.
Modularité et bibliothèques
La modularité consiste à diviser un programme en fichiers plus petits et plus gérables, appelés modules.
Key Concepts:
- Découpage en modules : Plutôt que de tout mettre dans un seul fichier, on regroupe les fonctions liées dans des fichiers
.pyséparés. Chaque fichier.pyest un module.- Ex:
calculs.pypourrait contenir des fonctions d'addition, soustraction, etc. - Ex:
affichage.pypourrait contenir des fonctions pour afficher des messages formatés.
- Ex:
- Importation de modules : Pour utiliser les fonctions ou variables définies dans un autre module, tu dois l'importer.
# Dans ton fichier principal (ex: main.py) # Imaginons que 'calculs.py' contient une fonction 'additionner(a, b)' import calculs # Importe tout le module resultat = calculs.additionner(10, 5) print(resultat) from calculs import additionner # Importe seulement une fonction spécifique resultat2 = additionner(20, 2) print(resultat2) - Utilisation de bibliothèques standards (math, random) : Python est fourni avec une vaste bibliothèque standard de modules qui offrent de nombreuses fonctionnalités prêtes à l'emploi.
math: Fonctions mathématiques (racine carrée, trigonométrie, etc.).import math print(math.sqrt(25)) # Affiche 5.0 print(math.pi) # Affiche la valeur de pirandom: Génération de nombres aléatoires.import random print(random.randint(1, 10)) # Génère un entier aléatoire entre 1 et 10 inclus
- Organisation du code : La modularité est essentielle pour les projets de grande envergure. Elle facilite la maintenance, le débogage et le travail en équipe.
Chapitre 5
Structures de Données Simples
Listes (tableaux dynamiques)
Une liste est une collection ordonnée et modifiable d'éléments. C'est l'une des structures de données les plus utilisées en Python.
Key Concepts:
- Définition d'une liste : Une liste est créée en plaçant tous les éléments (séparés par des virgules) entre crochets
[]. Une liste peut contenir des éléments de différents types.ma_liste = [1, 2, 3, "quatre", True, 5.0] fruits = ["pomme", "banane", "cerise"] nombres = [10, 20, 30, 40] - Accès aux éléments (indices) : Chaque élément d'une liste a un indice (un numéro de position) qui commence à 0 pour le premier élément.
Tu peux aussi accéder à des sous-parties de la liste (tranches ou "slices") :print(fruits[0]) # Affiche "pomme" print(fruits[2]) # Affiche "cerise" print(fruits[-1]) # Accès au dernier élément : "cerise"print(nombres[1:3]) # Affiche [20, 30] (du 2ème élément jusqu'à l'élément avant l'indice 3) print(nombres[:2]) # Affiche [10, 20] (du début jusqu'à l'élément avant l'indice 2) print(nombres[2:]) # Affiche [30, 40] (de l'indice 2 jusqu'à la fin) - Opérations (ajout, suppression, modification) : Les listes sont mutables, ce qui signifie que tu peux les modifier après leur création.
- Modification :
fruits[1] = "orange" # Remplace "banane" par "orange" print(fruits) # Affiche ["pomme", "orange", "cerise"] - Ajout :
append(): Ajoute un élément à la fin de la liste.fruits.append("mangue") # Ajoute "mangue" à la fininsert(indice, element): Insère un élément à un indice spécifique.fruits.insert(1, "kiwi") # Insère "kiwi" à l'indice 1
- Suppression :
del liste[indice]: Supprime l'élément à un indice donné.del fruits[0] # Supprime "pomme"remove(element): Supprime la première occurrence d'une valeur spécifique.fruits.remove("orange") # Supprime "orange"pop(indice): Supprime l'élément à un indice et le renvoie (utile si tu veux récupérer l'élément supprimé). Si aucun indice n'est spécifié, supprime et renvoie le dernier élément.dernier_fruit = fruits.pop()
- Modification :
- Parcours de liste : Tu peux parcourir tous les éléments d'une liste avec une boucle
for.for fruit in fruits: print(fruit) # Si tu as besoin de l'indice et de l'élément : for index, fruit in enumerate(fruits): print(f"L'élément à l'indice {index} est {fruit}")
Tuples (séquences immuables)
Un tuple est une collection ordonnée et immuable d'éléments. Une fois créé, un tuple ne peut plus être modifié.
Key Concepts:
- Définition d'un tuple : Créé en plaçant les éléments (séparés par des virgules) entre parenthèses
().
Un tuple d'un seul élément doit avoir une virgule :mon_tuple = (1, 2, "trois", False) coordonnees = (10.5, 20.3)(42,). - Différences avec les listes :
- Mutabilité : La différence principale. Les listes sont modifiables, les tuples ne le sont pas.
- Syntaxe : Crochets
[]pour les listes, parenthèses()pour les tuples.
- Cas d'utilisation :
- Quand tu as besoin d'une collection d'éléments qui ne doit pas changer (par exemple, des coordonnées géographiques, des dates).
- Pour retourner plusieurs valeurs d'une fonction (Python les renvoie sous forme de tuple).
- Quand tu veux utiliser la collection comme une clé dans un dictionnaire (les listes ne peuvent pas être des clés car elles sont mutables).
- Immuabilité : Tu ne peux pas ajouter, supprimer ou modifier des éléments d'un tuple. Tenter de le faire entraînera une erreur.
Tu peux cependant accéder aux éléments d'un tuple de la même manière qu'une liste (par indice ou tranche).# coordonnees[0] = 15.0 # Erreur : TypeError: 'tuple' object does not support item assignment
Chaînes de caractères (strings)
Une chaîne de caractères (str) est une séquence ordonnée de caractères. Comme les tuples, les chaînes sont immuables en Python.
Key Concepts:
- Définition d'une chaîne : Délimitée par des guillemets simples (
'), doubles (") ou triples ('''ou""") pour les chaînes multilignes.message = "Bonjour le monde !" prenom = 'Alice' citation = """Ceci est une citation sur plusieurs lignes.""" - Opérations (concaténation, découpage) :
- Concaténation (
+) : Joindre deux chaînes.salutation = "Salut" + " " + prenom # "Salut Alice" - Répétition (
*) : Répéter une chaîne plusieurs fois.etoiles = "*" * 5 # "*****" - Découpage (slicing) : Similaire aux listes et tuples, pour extraire une sous-chaîne.
print(message[0]) # 'B' print(message[0:7]) # 'Bonjour' print(message[8:]) # 'le monde !'
- Concaténation (
- Méthodes de chaînes : Les chaînes ont de nombreuses méthodes intégrées pour les manipuler.
len(chaine): Renvoie la longueur de la chaîne.chaine.upper(): Renvoie la chaîne en majuscules.chaine.lower(): Renvoie la chaîne en minuscules.chaine.strip(): Supprime les espaces blancs au début et à la fin.chaine.replace(old, new): Remplace toutes les occurrences d'une sous-chaîne par une autre.chaine.split(separateur): Divise la chaîne en une liste de sous-chaînes en utilisant un séparateur.separateur.join(liste_de_chaines): Joint les éléments d'une liste en une seule chaîne.
- Immuabilité des chaînes : Tu ne peux pas modifier un caractère individuel dans une chaîne.
Pour "modifier" une chaîne, tu dois en créer une nouvelle à partir de l'ancienne.# message[0] = 'b' # Erreur : TypeError: 'str' object does not support item assignmentnouveau_message = "b" + message[1:] # Crée "bonjour le monde !"
Dictionnaires (tableaux associatifs)
Un dictionnaire est une collection non ordonnée et modifiable d'éléments, stockés sous forme de paires clé-valeur. C'est comme un annuaire téléphonique où chaque nom (clé) est associé à un numéro (valeur).
Key Concepts:
- Définition d'un dictionnaire : Créé en plaçant les paires clé-valeur (séparées par
:) entre accolades{}. Les clés doivent être uniques et immuables (nombres, chaînes, tuples). Les valeurs peuvent être de n'importe quel type.personne = { "nom": "Dupont", "prenom": "Jean", "age": 30, "ville": "Paris" } notes = {"Maths": 15, "Physique": 12, "Anglais": 18} - Accès et modification :
- Accès : Utilise la clé entre crochets pour accéder à la valeur associée.
Si la clé n'existe pas, cela provoque une erreur (print(personne["nom"]) # Affiche "Dupont" print(notes["Physique"]) # Affiche 12KeyError). Tu peux utiliserdictionnaire.get(cle, valeur_par_defaut)pour éviter l'erreur et obtenir une valeur par défaut si la clé est absente.print(personne.get("profession", "Non spécifié")) # Affiche "Non spécifié" - Modification :
personne["age"] = 31 # Modifie la valeur associée à la clé "age" print(personne) - Ajout : Si la clé n'existe pas, elle est ajoutée avec sa valeur.
personne["profession"] = "Ingénieur" print(personne) - Suppression :
del dictionnaire[cle]: Supprime la paire clé-valeur.del personne["ville"]dictionnaire.pop(cle): Supprime la paire clé-valeur et renvoie la valeur.age_supprime = personne.pop("age")
- Accès : Utilise la clé entre crochets pour accéder à la valeur associée.
- Cas d'utilisation :
- Quand tu as besoin de stocker des données qui ont une relation clé-valeur (par exemple, les propriétés d'un objet, un registre de mots).
- Pour une recherche rapide de valeurs (les dictionnaires sont très efficaces pour cela).
- Représenter des données structurées, comme des objets JSON.
Après la lecture
Passe à la pratique avec deux blocs bien visibles
Une fois le cours lu, ouvre soit le quiz pour vérifier la compréhension, soit les flashcards pour mémoriser les idées importantes. Les deux s'ouvrent dans une fenêtre dédiée.
Suite naturelle
Tu veux aller plus loin que l'article ?
Retrouve le même chapitre dans Wilo avec la suite des questions, la répétition espacée, les corrigés complets et une progression suivie dans le temps.