Bases de la programmation avec Python
1. Qu'est-ce que la programmation ?
Section intitulée « 1. Qu'est-ce que la programmation ? »Programmer, c'est écrire une suite d'instructions dans un langage compris par l'ordinateur pour lui faire accomplir une tâche. En SNT, le langage utilisé est Python, créé en 1991 par Guido van Rossum. Python est très répandu dans l'enseignement, la science des données, le développement web et l'intelligence artificielle.
1.1. Les environnements de travail
Section intitulée « 1.1. Les environnements de travail »Pour écrire et exécuter du Python, plusieurs outils existent :
| Outil | Description | Idéal pour |
|---|---|---|
| Console Python (interpréteur) | On tape une instruction, Python l'exécute immédiatement | Tester rapidement une idée |
Fichier .py (script) | On écrit un programme complet puis on l'exécute d'un bloc | Écrire de vrais programmes |
| Thonny | Éditeur simple avec débogueur intégré | Débuter en Python |
| EduPython | Suite pédagogique (éditeur + modules scientifiques) | Maths et sciences |
| Basthon (en ligne) | Python dans le navigateur, rien à installer | Travailler sans installation |
| VS Code | Éditeur professionnel avec extensions Python | Aller plus loin |
# Mon tout premier programme Pythonprint("Bonjour, bienvenue en SNT !")1.2. Console interactive vs script
Section intitulée « 1.2. Console interactive vs script »>>> 2 + 35>>> print("Bonjour")Bonjour>>> "SNT".lower()'snt'La console exécute chaque ligne immédiatement et affiche le résultat. Le symbole >>> s'appelle le prompt : c'est Python qui attend votre instruction.
nom = input("Comment t'appelles-tu ? ")print(f"Bonjour {nom} !")print("Bienvenue en cours de SNT.")Un script est un fichier texte contenant plusieurs instructions. On l'exécute d'un bloc avec le bouton « Exécuter » de l'éditeur ou via le terminal : python mon_programme.py.
1.3. Les commentaires
Section intitulée « 1.3. Les commentaires »Les commentaires sont des textes ignorés par Python, destinés aux humains qui lisent le code :
# Ceci est un commentaire sur une ligne entièreage = 16 # Ceci est un commentaire en fin de ligne
# Les commentaires servent à :# - expliquer POURQUOI on fait quelque chose# - rendre le code plus lisible# - désactiver temporairement une ligne de code2. Variables et affectations
Section intitulée « 2. Variables et affectations »2.1. Qu'est-ce qu'une variable ?
Section intitulée « 2.1. Qu'est-ce qu'une variable ? »Une variable est un espace en mémoire dans lequel on stocke une valeur. On lui donne un nom pour pouvoir la retrouver et l'utiliser plus tard. On peut la voir comme une étiquette collée sur une boîte contenant une valeur.
prenom = "Alice"age = 16taille = 1.68est_eleve = TrueL'opération = s'appelle l'affectation : elle associe une valeur (à droite) à un nom de variable (à gauche).
2.2. Les types de données de base
Section intitulée « 2.2. Les types de données de base »Chaque valeur en Python a un type qui détermine ce qu'on peut en faire :
| Type | Description | Exemples | Remarques |
|---|---|---|---|
int | Nombre entier | 42, -7, 0 | Pas de limite de taille en Python ! |
float | Nombre à virgule | 3.14, -0.5, 1.0 | Attention : on utilise le point, pas la virgule |
str | Chaîne de caractères (texte) | "Bonjour", 'Python' | Délimitée par des guillemets simples ' ou doubles " |
bool | Booléen (vrai ou faux) | True, False | Toujours avec une majuscule ! |
On peut connaître le type d'une variable avec la fonction type() :
x = 42print(type(x)) # <class 'int'>
y = 3.14print(type(y)) # <class 'float'>
nom = "Alice"print(type(nom)) # <class 'str'>
vrai = Trueprint(type(vrai)) # <class 'bool'>2.3. Nommer ses variables
Section intitulée « 2.3. Nommer ses variables »Règles obligatoires (sinon Python refuse) :
- Le nom commence par une lettre ou un underscore
_ - Il ne contient que des lettres, chiffres et underscores (pas d'espaces, pas de tirets, pas d'accents)
- Il ne doit pas être un mot réservé de Python
# ✅ Noms validesage = 16nom_eleve = "Alice"_compteur = 0note2 = 15.5
# ❌ Noms invalides2nd_note = 12 # SyntaxError : commence par un chiffrenom-eleve = "Bob" # SyntaxError : le tiret est interditmon age = 16 # SyntaxError : les espaces sont interditsfor = 5 # SyntaxError : for est un mot réservéLes 35 mots réservés de Python
Ces mots ont une signification spéciale et ne peuvent pas être utilisés comme noms de variables :
False, None, True, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield
Conventions (pas obligatoires, mais fortement recommandées) :
- Utiliser le snake_case : mots en minuscules séparés par des underscores
- Choisir des noms explicites qui décrivent le contenu
# ❌ Mauvais noms (fonctionnent mais incompréhensibles)a = 16b = "Alice"x = 15.5
# ✅ Bons noms (on comprend immédiatement)age_eleve = 16prenom = "Alice"note_maths = 15.52.4. L'affectation en détail
Section intitulée « 2.4. L'affectation en détail »Affectation simple
Section intitulée « Affectation simple »x = 10 # x reçoit la valeur 10x = x + 5 # x reçoit la valeur de x + 5, soit 15Affectation augmentée (raccourcis)
Section intitulée « Affectation augmentée (raccourcis) »Python propose des raccourcis pour modifier une variable :
x = 10x += 3 # Équivalent à : x = x + 3 → x vaut 13x -= 2 # Équivalent à : x = x - 2 → x vaut 11x *= 4 # Équivalent à : x = x * 4 → x vaut 44x //= 5 # Équivalent à : x = x // 5 → x vaut 8x %= 3 # Équivalent à : x = x % 3 → x vaut 2x **= 4 # Équivalent à : x = x ** 4 → x vaut 16Affectation multiple
Section intitulée « Affectation multiple »On peut affecter plusieurs variables en une seule ligne :
# Variante 1 : plusieurs valeurs sur une lignex, y, z = 1, 2, 3
# Variante 2 : même valeur pour toutesa = b = c = 0
# Astuce : échanger deux variables (très pratique !)x, y = 10, 20x, y = y, x # Maintenant x = 20 et y = 102.5. Conversions de types
Section intitulée « 2.5. Conversions de types »On a souvent besoin de convertir une valeur d'un type à un autre :
# str → intage = int("16") # 16
# str → floattaille = float("1.68") # 1.68
# int → strtexte = str(42) # "42"
# float → int (tronque la partie décimale, ne l'arrondit PAS)n = int(3.7) # 3 (pas 4 !)n = int(-3.7) # -3 (pas -4 !)
# int → floatx = float(5) # 5.0
# Vers booléenbool(0) # False (0 est « faux »)bool(42) # True (tout nombre non nul est « vrai »)bool("") # False (chaîne vide est « fausse »)bool("hello") # True (chaîne non vide est « vraie »)2.6. Opérations sur les nombres
Section intitulée « 2.6. Opérations sur les nombres »| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
+ | Addition | 7 + 3 | 10 |
- | Soustraction | 7 - 3 | 4 |
* | Multiplication | 7 * 3 | 21 |
/ | Division (toujours un float) | 7 / 2 | 3.5 |
// | Division entière (partie entière) | 7 // 2 | 3 |
% | Modulo (reste de la division) | 7 % 3 | 1 |
** | Puissance | 2 ** 10 | 1024 |
Priorité des opérations
Section intitulée « Priorité des opérations »Python respecte les mêmes règles de priorité qu'en mathématiques :
**(puissance) - priorité la plus haute*,/,//,%(multiplication, divisions, modulo)+,-(addition, soustraction) - priorité la plus basse
2 + 3 * 4 # 14 (pas 20 ! La multiplication est prioritaire)(2 + 3) * 4 # 20 (les parenthèses changent l'ordre)2 ** 3 ** 2 # 512 (= 2 ** 9, car ** s'évalue de droite à gauche)2.7. Opérations sur les chaînes de caractères
Section intitulée « 2.7. Opérations sur les chaînes de caractères »prenom = "Alice"nom = "Martin"
# Concaténation (assemblage de chaînes)nom_complet = prenom + " " + nomprint(nom_complet) # Alice Martin
# Répétitionligne = "-" * 30print(ligne) # ------------------------------
# Longueurprint(len(prenom)) # 5
# Accès à un caractère (l'index commence à 0 !)print(prenom[0]) # A (premier caractère)print(prenom[1]) # l (deuxième caractère)print(prenom[-1]) # e (dernier caractère)print(prenom[-2]) # c (avant-dernier)Quelques méthodes utiles sur les chaînes
Section intitulée « Quelques méthodes utiles sur les chaînes »texte = "Bonjour le Monde"
texte.upper() # "BONJOUR LE MONDE" (tout en majuscules)texte.lower() # "bonjour le monde" (tout en minuscules)texte.capitalize() # "Bonjour le monde" (1re lettre en majuscule)texte.replace("Monde", "Python") # "Bonjour le Python"texte.count("o") # 3 (nombre d'occurrences de "o")texte.startswith("Bon") # Truetexte.endswith("de") # True
" espaces ".strip() # "espaces" (supprime les espaces autour)"a,b,c".split(",") # ["a", "b", "c"] (découpe en liste)Guillemets simples, doubles et triples
Section intitulée « Guillemets simples, doubles et triples »# Trois façons d'écrire une chaîne - elles sont équivalentes :message1 = 'Bonjour'message2 = "Bonjour"
# Utile quand la chaîne contient des guillemets :phrase1 = "L'élève travaille" # Guillemets doubles autour d'une apostrophephrase2 = 'Il a dit "bonjour"' # Guillemets simples autour de guillemets doubles
# Triples guillemets : pour les textes sur plusieurs lignespoeme = """Roses are red,Violets are blue,Python is great,And so are you."""
# Caractères spéciaux avec l'antislash \print("Première ligne\nDeuxième ligne") # \n = saut de ligneprint("Colonne1\tColonne2") # \t = tabulationprint("Il a dit : \"Bonjour\"") # \" = guillemet dans la chaîne3. Entrées et sorties
Section intitulée « 3. Entrées et sorties »3.1. Afficher avec print()
Section intitulée « 3.1. Afficher avec print() »La fonction print() est très flexible. Voici toutes les façons de l'utiliser :
nom = "Alice"age = 16print("Bonjour", nom, "tu as", age, "ans")# Bonjour Alice tu as 16 ansLes éléments sont automatiquement séparés par un espace et suivis d'un saut de ligne.
nom = "Alice"age = 16print(f"Bonjour {nom}, tu as {age} ans")# Bonjour Alice, tu as 16 ans
# On peut mettre des expressions dans les accoladesprint(f"Dans 10 ans, tu auras {age + 10} ans")print(f"Note : {15.6789:.2f}") # Note : 15.68 (2 décimales)nom = "Alice"age = 16print("Bonjour " + nom + ", tu as " + str(age) + " ans")# Plus lourd, il faut convertir les nombres en strnom = "Alice"age = 16print("Bonjour {}, tu as {} ans".format(nom, age))# Méthode plus ancienne, les f-strings sont préféréesParamètres utiles de print() :
# sep : changer le séparateur (par défaut : espace)print("Alice", "Bob", "Charlie", sep=", ")# Alice, Bob, Charlie
print("2026", "07", "06", sep="-")# 2026-07-06
# end : changer ce qui est ajouté à la fin (par défaut : saut de ligne)print("Chargement", end="...")print("Terminé !")# Chargement...Terminé !
# Afficher sans saut de ligne dans une bouclefor i in range(5): print(i, end=" ")# 0 1 2 3 43.2. Lire une saisie avec input()
Section intitulée « 3.2. Lire une saisie avec input() »La fonction input() affiche un message et attend que l'utilisateur tape quelque chose. Elle renvoie toujours une chaîne de caractères (str) :
prenom = input("Comment t'appelles-tu ? ")print(f"Bonjour {prenom} !")4. Séquences d'instructions
Section intitulée « 4. Séquences d'instructions »Un programme Python est une séquence (suite ordonnée) d'instructions exécutées les unes après les autres, de haut en bas :
# Étape 1 : lire les donnéeslongueur = float(input("Longueur du rectangle : "))largeur = float(input("Largeur du rectangle : "))
# Étape 2 : calculeraire = longueur * largeurperimetre = 2 * (longueur + largeur)
# Étape 3 : afficher les résultatsprint(f"Aire : {aire}")print(f"Périmètre : {perimetre}")5. Instructions conditionnelles
Section intitulée « 5. Instructions conditionnelles »Les instructions conditionnelles permettent au programme de prendre des décisions : exécuter un bloc de code seulement si une condition est vraie.
5.1. Le if simple
Section intitulée « 5.1. Le if simple »age = int(input("Quel âge as-tu ? "))
if age >= 18: print("Tu es majeur(e).") print("Tu peux passer le permis.")Structure :
if condition: instruction(s) à exécuter si la condition est vraie5.2. Le if / else
Section intitulée « 5.2. Le if / else »Pour exécuter un bloc si la condition est vraie, et un autre bloc si elle est fausse :
age = int(input("Quel âge as-tu ? "))
if age >= 18: print("Tu es majeur(e).")else: print("Tu es mineur(e).")5.3. Le if / elif / else
Section intitulée « 5.3. Le if / elif / else »Pour tester plusieurs conditions enchaînées :
note = float(input("Ta note sur 20 : "))
if note >= 16: print("Très bien !")elif note >= 14: print("Bien !")elif note >= 12: print("Assez bien.")elif note >= 10: print("Tu as la moyenne.")else: print("Il faut réviser...")elif est la contraction de « else if ». Python teste les conditions dans l'ordre : dès qu'une condition est vraie, il exécute le bloc correspondant et ignore tous les suivants.
5.4. Conditions imbriquées
Section intitulée « 5.4. Conditions imbriquées »On peut mettre un if à l'intérieur d'un autre if :
age = int(input("Ton âge : "))a_carte = input("As-tu une carte de réduction ? (oui/non) : ")
if age < 18: if a_carte == "oui": print("Tarif jeune avec réduction : 5 €") else: print("Tarif jeune : 8 €")else: if a_carte == "oui": print("Tarif adulte avec réduction : 10 €") else: print("Tarif plein : 15 €")5.5. Les opérateurs de comparaison
Section intitulée « 5.5. Les opérateurs de comparaison »| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
== | Égal à | 5 == 5 | True |
!= | Différent de | 5 != 3 | True |
< | Strictement inférieur | 3 < 5 | True |
> | Strictement supérieur | 5 > 3 | True |
<= | Inférieur ou égal | 5 <= 5 | True |
>= | Supérieur ou égal | 5 >= 6 | False |
5.6. Les opérateurs logiques
Section intitulée « 5.6. Les opérateurs logiques »On peut combiner plusieurs conditions avec and, or et not :
| Opérateur | Signification | Exemple |
|---|---|---|
and | ET logique (les deux conditions doivent être vraies) | age >= 12 and age <= 17 |
or | OU logique (au moins une condition doit être vraie) | jour == "samedi" or jour == "dimanche" |
not | NON logique (inverse la condition) | not inscrit |
# AND : les deux conditions doivent être vraiesage = 16a_carte = Trueif age >= 12 and a_carte: print("Tarif réduit.")
# OR : au moins une condition doit être vraietemperature = 35if temperature < 0 or temperature > 40: print("Température extrême !")
# NOT : inverse vrai et fauxinscrit = Falseif not inscrit: print("Veuillez vous inscrire.")Table de vérité :
a | b | a and b | a or b | not a |
|---|---|---|---|---|
True | True | True | True | False |
True | False | False | True | False |
False | True | False | True | True |
False | False | False | False | True |
5.7. L'expression conditionnelle (en une ligne)
Section intitulée « 5.7. L'expression conditionnelle (en une ligne) »Pour les cas simples, Python permet d'écrire un if/else en une seule ligne :
age = 20
# Forme classiqueif age >= 18: statut = "majeur"else: statut = "mineur"
# Forme condensée (expression conditionnelle)statut = "majeur" if age >= 18 else "mineur"
# Utile dans un printprint("Accès autorisé" if age >= 18 else "Accès refusé")6. Les boucles
Section intitulée « 6. Les boucles »Les boucles permettent de répéter un bloc d'instructions plusieurs fois, ce qui évite de dupliquer du code.
6.1. La boucle for (boucle bornée)
Section intitulée « 6.1. La boucle for (boucle bornée) »La boucle for répète un bloc de code un nombre déterminé de fois :
# Afficher les nombres de 0 à 4for i in range(5): print(i)# Affiche : 0, 1, 2, 3, 4Les variantes de range()
Section intitulée « Les variantes de range() »| Appel | Valeurs générées | Nombre de valeurs |
|---|---|---|
range(5) | 0, 1, 2, 3, 4 | 5 |
range(1, 6) | 1, 2, 3, 4, 5 | 5 |
range(0, 10, 2) | 0, 2, 4, 6, 8 | 5 |
range(10, 0, -1) | 10, 9, 8, ..., 1 | 10 |
range(5, 0, -2) | 5, 3, 1 | 3 |
range(3, 3) | (rien) | 0 |
Parcourir une chaîne de caractères
Section intitulée « Parcourir une chaîne de caractères »# Deux façons de parcourir les caractères d'un mot :
# Méthode 1 : directement (plus simple et plus « pythonique »)mot = "Python"for lettre in mot: print(lettre)
# Méthode 2 : par indice (utile quand on a besoin de la position)mot = "Python"for i in range(len(mot)): print(f"Caractère n°{i} : {mot[i]}")Parcourir une liste
Section intitulée « Parcourir une liste »fruits = ["pomme", "banane", "cerise"]
# Méthode 1 : parcourir les élémentsfor fruit in fruits: print(fruit)
# Méthode 2 : parcourir avec l'indice (enumerate)for i, fruit in enumerate(fruits): print(f"{i} : {fruit}")# 0 : pomme# 1 : banane# 2 : ceriseLe patron « accumulateur »
Section intitulée « Le patron « accumulateur » »C'est un schéma de programmation très courant : on initialise une variable, puis on la modifie à chaque tour de boucle :
# Somme des entiers de 1 à 100somme = 0for i in range(1, 101): somme = somme + i # ou somme += iprint(f"La somme vaut {somme}") # 5050
# Compter les voyelles d'un motmot = "programmation"compteur = 0for lettre in mot: if lettre in "aeiouy": compteur += 1print(f"Nombre de voyelles : {compteur}") # 5
# Construire une chaîne lettre par lettreresultat = ""for i in range(1, 6): resultat += str(i) + " "print(resultat) # "1 2 3 4 5 "6.2. La boucle while (boucle non bornée)
Section intitulée « 6.2. La boucle while (boucle non bornée) »La boucle while répète un bloc tant qu'une condition est vraie. On l'utilise quand on ne connaît pas à l'avance le nombre de répétitions :
# Deviner un nombresecret = 42proposition = int(input("Devinez le nombre : "))
while proposition != secret: if proposition < secret: print("C'est plus !") else: print("C'est moins !") proposition = int(input("Nouvel essai : "))
print("Bravo, c'est bien 42 !")Valider une saisie utilisateur :
# Méthode 1 : saisie avant la bouclenote = float(input("Note entre 0 et 20 : "))while note < 0 or note > 20: print("Erreur ! La note doit être entre 0 et 20.") note = float(input("Note entre 0 et 20 : "))
# Méthode 2 : avec un « drapeau » (flag)valide = Falsewhile not valide: note = float(input("Note entre 0 et 20 : ")) if 0 <= note <= 20: valide = True else: print("Erreur ! La note doit être entre 0 et 20.")6.3. break et continue
Section intitulée « 6.3. break et continue »Ces deux instructions modifient le comportement normal d'une boucle :
break: sort immédiatement de la bouclecontinue: saute au tour suivant de la boucle
# break : arrêter la boucle quand on trouve ce qu'on cherchefor i in range(1, 100): if i * i > 50: print(f"Le plus petit entier dont le carré dépasse 50 est {i}") break# Affiche : Le plus petit entier dont le carré dépasse 50 est 8
# continue : sauter certains toursfor i in range(1, 11): if i % 3 == 0: continue # On saute les multiples de 3 print(i)# Affiche : 1, 2, 4, 5, 7, 8, 106.4. Boucles imbriquées
Section intitulée « 6.4. Boucles imbriquées »On peut mettre une boucle à l'intérieur d'une autre :
# Table de multiplicationfor i in range(1, 6): for j in range(1, 6): print(f"{i} × {j} = {i * j:2d}", end=" ") print() # Saut de ligne après chaque ligne du tableau
# Triangle d'étoilesn = 5for i in range(1, n + 1): print("*" * i)# *# **# ***# ****# *****6.5. for ou while ? Comment choisir
Section intitulée « 6.5. for ou while ? Comment choisir »| Situation | Boucle à utiliser | Exemple |
|---|---|---|
| On connaît le nombre de répétitions | for | Afficher 10 fois « Bonjour » |
| On répète jusqu'à une condition | while | Attendre un mot de passe correct |
| On parcourt une collection | for | Parcourir les lettres d'un mot |
| On attend une saisie correcte | while | Redemander jusqu'à obtenir un nombre valide |
| On cherche un seuil | while | Trouver n tel que la somme dépasse 1000 |
7. Les fonctions
Section intitulée « 7. Les fonctions »7.1. Qu'est-ce qu'une fonction ?
Section intitulée « 7.1. Qu'est-ce qu'une fonction ? »Une fonction est un bloc de code réutilisable auquel on donne un nom. Elle permet de :
- Décomposer un programme en sous-tâches claires
- Éviter la répétition de code (principe DRY : Don't Repeat Yourself)
- Rendre le programme lisible et facile à maintenir
Vous avez déjà utilisé des fonctions prédéfinies : print(), input(), len(), range(), type(), int(), float(), str()...
7.2. Définir et appeler une fonction
Section intitulée « 7.2. Définir et appeler une fonction »# DÉFINIR la fonction (la créer)def dire_bonjour(): print("Bonjour !") print("Bienvenue en cours de SNT.")
# APPELER la fonction (l'exécuter)dire_bonjour()# Bonjour !# Bienvenue en cours de SNT.
# On peut l'appeler autant de fois qu'on veutdire_bonjour()dire_bonjour()7.3. Fonctions avec paramètres
Section intitulée « 7.3. Fonctions avec paramètres »Les paramètres sont des valeurs que l'on passe à la fonction lors de l'appel :
def saluer(prenom): print(f"Bonjour {prenom} !")
saluer("Alice") # Bonjour Alice !saluer("Bob") # Bonjour Bob !Plusieurs paramètres :
def aire_rectangle(longueur, largeur): return longueur * largeur
print(aire_rectangle(5, 3)) # 15print(aire_rectangle(10, 7)) # 70Paramètres par défaut
Section intitulée « Paramètres par défaut »On peut donner une valeur par défaut à un paramètre. Si l'argument n'est pas fourni lors de l'appel, la valeur par défaut est utilisée :
def saluer(prenom, formule="Bonjour"): print(f"{formule} {prenom} !")
saluer("Alice") # Bonjour Alice !saluer("Alice", "Salut") # Salut Alice !saluer("Alice", "Bonsoir") # Bonsoir Alice !Arguments nommés
Section intitulée « Arguments nommés »On peut préciser le nom des paramètres lors de l'appel, ce qui permet de changer l'ordre :
def presentation(prenom, age, classe): print(f"{prenom}, {age} ans, en {classe}")
# Appel classique (par position)presentation("Alice", 16, "2nde B")
# Appel avec arguments nommés (par nom)presentation(classe="2nde B", prenom="Alice", age=16)
# On peut mélanger (les positionnels d'abord)presentation("Alice", classe="2nde B", age=16)7.4. return : renvoyer un résultat
Section intitulée « 7.4. return : renvoyer un résultat »Le mot-clé return permet à la fonction de renvoyer une valeur au programme qui l'a appelée :
def calculer_aire(longueur, largeur): return longueur * largeur
# On récupère le résultat dans une variablea = calculer_aire(5, 3)print(f"Aire : {a}") # Aire : 15
# On peut utiliser directement le résultatif calculer_aire(10, 7) > 50: print("Grand rectangle !")Renvoyer plusieurs valeurs
Section intitulée « Renvoyer plusieurs valeurs »Python permet de renvoyer plusieurs valeurs avec un seul return :
def min_max(a, b, c): minimum = min(a, b, c) maximum = max(a, b, c) return minimum, maximum
petit, grand = min_max(7, 2, 9)print(f"Min : {petit}, Max : {grand}") # Min : 2, Max : 97.5. Portée des variables (local vs global)
Section intitulée « 7.5. Portée des variables (local vs global) »Les variables créées à l'intérieur d'une fonction sont locales : elles n'existent que pendant l'exécution de la fonction.
def ma_fonction(): x = 10 # Variable locale print(x)
ma_fonction() # Affiche 10print(x) # ❌ NameError: name 'x' is not definedx = 100 # Variable globale
def ma_fonction(): print(x) # On peut LIRE une variable globale
ma_fonction() # Affiche 1007.6. Exemples complets de fonctions
Section intitulée « 7.6. Exemples complets de fonctions »Fonction qui teste si un nombre est pair :
# Plusieurs façons d'écrire la même fonction :
# Version 1 : avec if/elsedef est_pair(n): if n % 2 == 0: return True else: return False
# Version 2 : simplifiée (le test est déjà un booléen !)def est_pair(n): return n % 2 == 0
# Les deux versions donnent le même résultatprint(est_pair(4)) # Trueprint(est_pair(7)) # FalseFonction avec une boucle :
def table_multiplication(n): for i in range(1, 11): print(f"{n} × {i} = {n * i}")
table_multiplication(7)Fonction avec un conditionnel :
def mention(note): if note >= 16: return "Très bien" elif note >= 14: return "Bien" elif note >= 12: return "Assez bien" elif note >= 10: return "Admis" else: return "Non admis"
print(mention(15.5)) # Bien8. Les listes (introduction)
Section intitulée « 8. Les listes (introduction) »Les listes sont des collections ordonnées de valeurs. Elles sont indispensables en programmation et apparaissent dans de nombreux exercices.
8.1. Créer et manipuler une liste
Section intitulée « 8.1. Créer et manipuler une liste »# Créer une listenotes = [15, 12, 18, 9, 14]prenoms = ["Alice", "Bob", "Charlie"]vide = []
# Accéder à un élément (les indices commencent à 0)print(notes[0]) # 15 (premier élément)print(notes[2]) # 18 (troisième élément)print(notes[-1]) # 14 (dernier élément)
# Modifier un élémentnotes[1] = 16 # notes vaut maintenant [15, 16, 18, 9, 14]
# Longueur de la listeprint(len(notes)) # 58.2. Ajouter et supprimer des éléments
Section intitulée « 8.2. Ajouter et supprimer des éléments »fruits = ["pomme", "banane"]
# Ajouter à la finfruits.append("cerise") # ["pomme", "banane", "cerise"]
# Insérer à une position donnéefruits.insert(1, "orange") # ["pomme", "orange", "banane", "cerise"]
# Supprimer par valeurfruits.remove("banane") # ["pomme", "orange", "cerise"]
# Supprimer par indicedel fruits[0] # ["orange", "cerise"]
# Supprimer et récupérer le dernier élémentdernier = fruits.pop() # dernier = "cerise", fruits = ["orange"]8.3. Parcourir une liste
Section intitulée « 8.3. Parcourir une liste »notes = [15, 12, 18, 9, 14]
# Calculer la moyennetotal = 0for note in notes: total += notemoyenne = total / len(notes)print(f"Moyenne : {moyenne}")
# Variante avec sum() (fonction intégrée)moyenne = sum(notes) / len(notes)8.4. Quelques fonctions et méthodes utiles
Section intitulée « 8.4. Quelques fonctions et méthodes utiles »nombres = [3, 1, 4, 1, 5, 9, 2, 6]
len(nombres) # 8 (nombre d'éléments)min(nombres) # 1 (plus petit élément)max(nombres) # 9 (plus grand élément)sum(nombres) # 31 (somme de tous les éléments)sorted(nombres) # [1, 1, 2, 3, 4, 5, 6, 9] (nouvelle liste triée)nombres.sort() # trie la liste en place (modifie nombres)nombres.count(1) # 2 (nombre d'occurrences de 1)3 in nombres # True (teste si 3 est dans la liste)9. Les erreurs en Python - Guide complet
Section intitulée « 9. Les erreurs en Python - Guide complet »Apprendre à lire et comprendre les messages d'erreur est une compétence essentielle. Python affiche toujours un message qui indique :
- Où l'erreur s'est produite (numéro de ligne)
- Quel type d'erreur c'est
- Un message explicatif
9.1. Lire un message d'erreur (traceback)
Section intitulée « 9.1. Lire un message d'erreur (traceback) »Traceback (most recent call last): File "mon_programme.py", line 3, in <module> print(age + " ans") ~~~~^~~~~~~~TypeError: unsupported operand type(s) for +: 'int' and 'str'- Ligne 1 : début du traceback (remontée de l'erreur)
- Ligne 2 : fichier et numéro de ligne concernés
- Ligne 3 : la ligne de code fautive
- Ligne 4 : une flèche pointant vers l'endroit exact de l'erreur
- Ligne 5 : le type d'erreur et son explication
9.2. Les erreurs de syntaxe - SyntaxError
Section intitulée « 9.2. Les erreurs de syntaxe - SyntaxError »Python ne peut même pas démarrer l'exécution du programme car le code est mal écrit :
# ❌ Oubli du deux-pointsif age >= 18 print("Majeur")# SyntaxError: expected ':'
# ❌ Oubli d'une parenthèse fermanteprint("Bonjour"# SyntaxError: '(' was never closed
# ❌ Oubli d'un guillemet fermantnom = "Alice# SyntaxError: unterminated string literal
# ❌ Utilisation d'un mot réservé comme variableclass = "2nde B"# SyntaxError: invalid syntax
# ❌ Oubli du = dans une affectationif age = 18:# SyntaxError: invalid syntax. Maybe you meant '==' or ':='?9.3. Les erreurs d'indentation - IndentationError
Section intitulée « 9.3. Les erreurs d'indentation - IndentationError »# ❌ Bloc non indentéif True:print("Bonjour")# IndentationError: expected an indented block after 'if' statement
# ❌ Indentation inattenduex = 5 y = 10# IndentationError: unexpected indent
# ❌ Mélange tabulations et espaces (très sournois !)if True: print("tab") # tabulé print("espaces") # 4 espaces# IndentationError: unindent does not match any outer indentation level9.4. Les erreurs de nom - NameError
Section intitulée « 9.4. Les erreurs de nom - NameError »La variable ou la fonction n'existe pas dans le contexte actuel :
# ❌ Variable pas encore définieprint(resultat)# NameError: name 'resultat' is not defined
# ❌ Faute de frappeage_eleve = 16print(age_elve) # 'elve' au lieu de 'eleve'# NameError: name 'age_elve' is not defined
# ❌ Oubli des guillemets autour d'un texteprint(Bonjour)# NameError: name 'Bonjour' is not defined
# ❌ Variable locale utilisée hors de la fonctiondef ma_fonction(): resultat = 42ma_fonction()print(resultat)# NameError: name 'resultat' is not defined9.5. Les erreurs de type - TypeError
Section intitulée « 9.5. Les erreurs de type - TypeError »On essaie de faire une opération incompatible avec le type des données :
# ❌ Additionner un nombre et une chaîneprint(5 + "3")# TypeError: unsupported operand type(s) for +: 'int' and 'str'
# ❌ Concaténer un nombre à une chaîneprint("J'ai " + 16 + " ans")# TypeError: can only concatenate str (not "int") to str
# ❌ Multiplier deux chaînesprint("abc" * "def")# TypeError: can't multiply sequence by non-int of type 'str'
# ❌ Appeler quelque chose qui n'est pas une fonctionx = 5x()# TypeError: 'int' object is not callable
# ❌ Utiliser len() sur un nombrelen(42)# TypeError: object of type 'int' has no len()9.6. Les erreurs de valeur - ValueError
Section intitulée « 9.6. Les erreurs de valeur - ValueError »La valeur n'est pas adaptée, même si le type est correct :
# ❌ Convertir un texte en nombreint("abc")# ValueError: invalid literal for int() with base 10: 'abc'
# ❌ Convertir un décimal en int directementint("3.14")# ValueError: invalid literal for int() with base 10: '3.14'
# ❌ Chercher un élément absent d'une liste[1, 2, 3].index(5)# ValueError: 5 is not in list9.7. Les erreurs d'indice - IndexError
Section intitulée « 9.7. Les erreurs d'indice - IndexError »On accède à un indice qui n'existe pas :
notes = [15, 12, 18]
notes[3]# IndexError: list index out of range# Les indices valides sont 0, 1, 2 (ou -1, -2, -3)
notes[10]# IndexError: list index out of range
# ❌ Erreur classique avec rangefor i in range(len(notes) + 1): # range va jusqu'à 3, mais l'indice 3 n'existe pas print(notes[i])# IndexError: list index out of range9.8. La division par zéro - ZeroDivisionError
Section intitulée « 9.8. La division par zéro - ZeroDivisionError »print(10 / 0)# ZeroDivisionError: division by zero
print(10 // 0)# ZeroDivisionError: integer division or modulo by zero
print(10 % 0)# ZeroDivisionError: integer division or modulo by zero9.9. Tableau récapitulatif des erreurs
Section intitulée « 9.9. Tableau récapitulatif des erreurs »| Erreur | Cause courante | Comment corriger |
|---|---|---|
SyntaxError | Oubli de :, parenthèse, guillemet | Relire la ligne indiquée, vérifier la ponctuation |
IndentationError | Mauvaise indentation ou mélange tab/espaces | Aligner les blocs à 4 espaces |
NameError | Variable inexistante, faute de frappe, oubli de "" | Vérifier le nom, l'ordre des instructions |
TypeError | Opération entre types incompatibles | Convertir avec int(), float(), str() |
ValueError | Conversion impossible (int("abc")) | Vérifier la valeur avant de convertir |
IndexError | Indice hors limites d'une liste | Vérifier len() et les bornes de range() |
ZeroDivisionError | Division par zéro | Tester if diviseur != 0 avant de diviser |
10. Plusieurs façons de faire la même chose
Section intitulée « 10. Plusieurs façons de faire la même chose »En programmation, il existe souvent plusieurs approches pour résoudre un même problème. Voici les plus courantes.
10.1. Construire une chaîne de caractères
Section intitulée « 10.1. Construire une chaîne de caractères »nom = "Alice"age = 16
# Méthode 1 : concaténation avec +message = "Je m'appelle " + nom + " et j'ai " + str(age) + " ans."
# Méthode 2 : virgules dans print()print("Je m'appelle", nom, "et j'ai", age, "ans.")
# Méthode 3 : f-string (recommandée ✅)message = f"Je m'appelle {nom} et j'ai {age} ans."
# Méthode 4 : .format()message = "Je m'appelle {} et j'ai {} ans.".format(nom, age)10.2. Tester si un élément est dans une collection
Section intitulée « 10.2. Tester si un élément est dans une collection »voyelles = "aeiouy"lettre = "e"
# Méthode 1 : avec in (recommandée ✅)if lettre in voyelles: print("C'est une voyelle")
# Méthode 2 : avec une boucleest_voyelle = Falsefor v in voyelles: if lettre == v: est_voyelle = Trueif est_voyelle: print("C'est une voyelle")
# Méthode 3 : avec or (fastidieux mais explicite)if lettre == "a" or lettre == "e" or lettre == "i": print("C'est une voyelle")10.3. Calculer une somme
Section intitulée « 10.3. Calculer une somme »nombres = [3, 7, 2, 9, 4]
# Méthode 1 : boucle for avec accumulateurtotal = 0for n in nombres: total += n
# Méthode 2 : fonction intégrée sum() (recommandée ✅)total = sum(nombres)
# Méthode 3 : boucle whiletotal = 0i = 0while i < len(nombres): total += nombres[i] i += 110.4. Créer une liste de nombres
Section intitulée « 10.4. Créer une liste de nombres »# Méthode 1 : boucle for avec appendcarres = []for i in range(1, 6): carres.append(i ** 2)# [1, 4, 9, 16, 25]
# Méthode 2 : compréhension de liste (plus avancé, très « pythonique »)carres = [i ** 2 for i in range(1, 6)]# [1, 4, 9, 16, 25]
# Méthode 3 : avec list() et range()nombres = list(range(1, 11))# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]10.5. Échanger deux variables
Section intitulée « 10.5. Échanger deux variables »a, b = 10, 20
# Méthode 1 : variable temporaire (classique, universelle)temp = aa = bb = temp
# Méthode 2 : affectation multiple Python (recommandée ✅)a, b = b, a
# Méthode 3 : arithmétique (sans variable supplémentaire, pour les curieux)a = a + b # a = 30b = a - b # b = 10a = a - b # a = 2010.6. Lire une entrée utilisateur et la valider
Section intitulée « 10.6. Lire une entrée utilisateur et la valider »# Méthode 1 : saisie + boucle whilenote = float(input("Note (0-20) : "))while not (0 <= note <= 20): note = float(input("Invalide. Note (0-20) : "))
# Méthode 2 : while True + breakwhile True: note = float(input("Note (0-20) : ")) if 0 <= note <= 20: break print("Invalide, recommencez.")
# Méthode 3 : avec une fonctiondef saisir_note(): while True: note = float(input("Note (0-20) : ")) if 0 <= note <= 20: return note print("Invalide, recommencez.")
note = saisir_note()11. Bonnes pratiques et conseils
Section intitulée « 11. Bonnes pratiques et conseils »12. Tableau récapitulatif complet
Section intitulée « 12. Tableau récapitulatif complet »| Notion | Syntaxe | Ce qu'il faut retenir |
|---|---|---|
| Variable | x = 42 | Espace mémoire nommé qui stocke une valeur |
| Affectation | x = valeur | Le = stocke la valeur de droite dans la variable |
| Affectation augmentée | x += 3 | Raccourci pour x = x + 3 |
| Types | int, float, str, bool | Entier, décimal, texte, booléen |
| Conversion | int(), float(), str() | Change le type d'une valeur |
| Séquence | - | Les instructions s'exécutent de haut en bas |
if / elif / else | if cond: | Exécute un bloc selon qu'une condition est vraie ou fausse |
| Comparaison | ==, !=, <, >, <=, >= | Renvoie True ou False |
| Logique | and, or, not | Combine des conditions |
for | for i in range(n): | Boucle bornée, nombre de répétitions connu |
while | while cond: | Boucle non bornée, répète tant que la condition est vraie |
break | break | Sort immédiatement de la boucle |
continue | continue | Passe directement au tour suivant |
| Fonction | def nom(params): | Bloc de code réutilisable |
return | return valeur | Renvoie un résultat depuis une fonction |
| Liste | [1, 2, 3] | Collection ordonnée et modifiable de valeurs |
input() | input("message") | Lit une saisie (renvoie toujours un str) |
print() | print(valeurs) | Affiche des valeurs à l'écran |
| f-string | f"texte {var}" | Insère des variables dans du texte |
© 2026 Corentin Dupont - LyCode
Créé avec Astro Starlight