🐍 Introduction à Python

Cours de technologie collège — Apprendre Python en 3e : syntaxe, variables, boucles et exercices corrigés

10
Notions clés
3e
Niveau
5
Exercices corrigés
Gratuit
📌 Python est un langage de programmation textuel utilisé dans le monde entier — par les scientifiques, les ingénieurs, les développeurs web et les data scientists. Au collège, il est introduit en 3e comme prolongement naturel de Scratch : au lieu d'assembler des blocs visuels, on écrit des instructions en texte. Les concepts sont les mêmes (variables, conditions, boucles), seule la forme change. Ce cours couvre tout ce qu'il faut savoir pour le brevet et pour bien démarrer au lycée.

💡 1. Pourquoi Apprendre Python au Collège ?

Python est le langage le plus utilisé pour l'enseignement de la programmation dans le monde. Il est au programme de technologie et de mathématiques en 3e, et sera omniprésent au lycée (SNT en seconde, NSI en première/terminale, maths). Voici ses atouts :

📝
Syntaxe simple et lisible
Le code Python ressemble à de l'anglais simplifié. Pas d'accolades ni de points-virgules — l'indentation (décalage) suffit pour structurer le code.

🆓
Gratuit et multiplateforme
Python fonctionne sur Windows, Mac et Linux. On peut même coder en ligne sans rien installer (sur des sites comme Trinket ou Replit).

🔄
Mêmes concepts que Scratch
Variables, conditions, boucles, fonctions… tout ce que vous avez appris en Scratch se retrouve en Python, mais écrit en texte au lieu de blocs colorés.

🚀
Utilisé partout dans le monde réel
Intelligence artificielle, jeux vidéo, sites web, sciences, finance… Python est le langage le plus demandé dans de nombreux domaines professionnels.

🖥️ 2. Premier Programme en Python

Le programme le plus simple en Python affiche un texte à l'écran avec la fonction print() :

print("Bonjour le monde !")
Bonjour le monde !

C'est tout. Une seule ligne. Pas besoin de blocs, de fichiers complexes ou de configuration. Voici les règles fondamentales de Python :

RègleExplicationExemple
Une instruction par ligneChaque ligne de code = une instruction. On ne met pas de point-virgule à la fin.print("Salut")
L'indentation est obligatoireLes blocs de code (après if, for, while) sont marqués par un décalage de 4 espaces vers la droite. C'est ce qui remplace les accolades des autres langages.Voir section conditions
Les deux-points :Les lignes qui commencent un bloc (if, for, while, def) se terminent par :if x > 5:
Python est sensible à la casseprintPrintPRINT. Seul print (en minuscules) fonctionne.Print("Salut") → erreur ❌
Les commentairesOn écrit un commentaire (note ignorée par Python) avec #. Utile pour expliquer le code.# Ceci est un commentaire
⚠️ L'erreur n°1 des débutants — Oublier les deux-points : à la fin d'une ligne if, for, while ou def. Python affichera SyntaxError. Prenez l'habitude : dès que vous écrivez un de ces mots-clés, ajoutez le : immédiatement.

📦 3. Variables et Types de Données

Une variable est un nom qui stocke une valeur en mémoire. En Python, on crée une variable simplement en lui donnant un nom et une valeur avec le signe = :

age = 14                    # un entier (int)
taille = 1.65               # un nombre à virgule (float)
prenom = "Alice"            # une chaîne de caractères (str)
est_eleve = True            # un booléen (bool)

Les 4 types de base

TypeNom PythonDescriptionExemples
EntierintNombre entier positif ou négatif, sans virgule42, -7, 0
FlottantfloatNombre à virgule (la virgule est un point en Python)3.14, -0.5, 100.0
ChaînestrTexte, entouré de guillemets simples '...' ou doubles "...""Bonjour", '3ème B'
BooléenboolVrai ou faux. Seulement deux valeurs possibles.True, False
💡 Règles pour nommer une variable — Le nom peut contenir des lettres, des chiffres et des underscores (_), mais il ne doit pas commencer par un chiffre. Il ne doit pas contenir d'espaces ni de caractères spéciaux. Les mots réservés de Python (if, for, while, print…) sont interdits comme noms de variable. Exemples valides : score, mon_age, resultat2. Exemples invalides : 2eme ❌, mon age ❌, for ❌.

Afficher avec print()

La fonction print() affiche du texte ou des valeurs à l'écran. On peut combiner texte et variables de plusieurs façons :

# Méthode 1 : virgules (ajoute un espace automatiquement)
prenom = "Alice"
age = 14
print("Bonjour", prenom, "tu as", age, "ans")

# Méthode 2 : f-string (la plus moderne et pratique)
print(f"Bonjour , tu as  ans")
Bonjour Alice tu as 14 ans
Bonjour Alice, tu as 14 ans

Saisir avec input()

La fonction input() affiche un message et attend que l'utilisateur tape quelque chose au clavier. Elle retourne toujours une chaîne de caractères (du texte).

prenom = input("Comment tu t'appelles ? ")
print(f"Salut  !")
⚠️ Piège fondamentalinput() retourne toujours du texte (type str), même si l'utilisateur tape un nombre. Pour faire des calculs avec la réponse, il faut convertir avec int() ou float() :
# ❌ ERREUR COURANTE :
age = input("Ton âge ? ")    # age est un texte "14", pas un nombre
print(age + 1)                # TypeError ! On ne peut pas additionner texte + nombre

# ✅ CORRECT :
age = int(input("Ton âge ? "))  # int() convertit le texte en entier
print(age + 1)                  # Fonctionne ! Affiche 15

🔢 5. Les Opérateurs

Opérateurs mathématiques

OpérateurNomExempleRésultat
+Addition7 + 310
-Soustraction7 - 34
*Multiplication7 * 321
/Division (résultat décimal)7 / 32.333...
//Division entière (quotient)7 // 32
%Modulo (reste de la division)7 % 31
**Puissance2 ** 38
💡 Le modulo % au brevet — L'opérateur modulo donne le reste de la division euclidienne. Il est très utilisé pour tester si un nombre est pair (n % 2 == 0), divisible par 3 (n % 3 == 0), etc. Exemple : 17 % 5 donne 2 car 17 = 5 × 3 + 2.

Opérateurs de comparaison

OpérateurSignificationExempleRésultat
==Égal à5 == 5True
!=Différent de5 != 3True
<Strictement inférieur3 < 5True
>Strictement supérieur3 > 5False
<=Inférieur ou égal5 <= 5True
>=Supérieur ou égal3 >= 5False
⚠️ Ne pas confondre = et === (un seul égal) affecte une valeur à une variable : x = 5 signifie « x prend la valeur 5 ». == (deux égaux) compare deux valeurs : x == 5 signifie « est-ce que x est égal à 5 ? ». C'est le piège le plus classique au brevet et en contrôle.

Opérateurs logiques

OpérateurSignificationExempleRésultat
andET (les deux conditions doivent être vraies)5 > 3 and 2 < 4True
orOU (au moins une condition doit être vraie)5 > 3 or 2 > 4True
notNON (inverse la condition)not (5 > 3)False

🔀 6. Les Conditions — if / elif / else

Les conditions permettent au programme de prendre des décisions. La structure est :

if condition:
    # instructions exécutées si la condition est VRAIE
elif autre_condition:
    # instructions exécutées si la 2e condition est VRAIE
else:
    # instructions exécutées si AUCUNE condition n'est vraie

Exemple complet

note = int(input("Ta note sur 20 ? "))

if note >= 16:
    print("Très bien !")
elif note >= 12:
    print("Bien !")
elif note >= 10:
    print("Assez bien.")
else:
    print("Il faut réviser...")

Python teste les conditions dans l'ordre, de haut en bas. Dès qu'une condition est vraie, il exécute le bloc correspondant et ignore les suivantes. Si aucune condition n'est vraie, il exécute le bloc else.

💡 Indentation = bloc — En Python, c'est le décalage de 4 espaces qui délimite les blocs. Toutes les lignes indentées sous un if font partie du bloc de ce if. La première ligne non indentée marque la fin du bloc. Pas de fin si, pas d'accolades : seulement l'indentation.

🔄 7. La Boucle for (Répéter un nombre connu de fois)

La boucle for permet de répéter un bloc d'instructions un nombre déterminé de fois. Elle utilise la fonction range() :

for i in range(5):
    print(i)
0
1
2
3
4

La variable i prend successivement les valeurs de 0 à 4 (5 valeurs au total). Attention : range(5) va de 0 à 4, pas de 0 à 5.

Les 3 formes de range()

SyntaxeSignificationValeurs produites
range(n)De 0 à n−1 (n valeurs)range(5) → 0, 1, 2, 3, 4
range(a, b)De a à b−1range(2, 7) → 2, 3, 4, 5, 6
range(a, b, pas)De a à b−1 avec un pas donnérange(0, 10, 2) → 0, 2, 4, 6, 8

Exemple : table de multiplication

n = int(input("Quelle table veux-tu ? "))

for i in range(1, 11):
    resultat = n * i
    print(f" ×  = ")
7 × 1 = 7
7 × 2 = 14
7 × 3 = 21
...
7 × 10 = 70

🔁 8. La Boucle while (Répéter tant qu'une condition est vraie)

La boucle while répète un bloc tant qu'une condition reste vraie. Elle s'utilise quand on ne sait pas à l'avance combien de répétitions il faudra.

while condition:
    # instructions répétées tant que condition est True

Exemple : jeu de devinette

import random

mystere = random.randint(1, 50)
essais = 0
reponse = 0

while reponse != mystere:
    reponse = int(input("Devine le nombre (1-50) : "))
    essais = essais + 1
    if reponse > mystere:
        print("Trop grand !")
    elif reponse < mystere:
        print("Trop petit !")

print(f"Bravo ! Trouvé en  essais.")
⚠️ Attention à la boucle infinie — Si la condition du while ne devient jamais fausse, le programme tourne en boucle pour toujours. Vérifiez toujours que quelque chose dans la boucle modifie la condition pour qu'elle finisse par devenir fausse. Si vous êtes bloqué, appuyez sur Ctrl+C pour arrêter le programme.

Quand utiliser for vs while ?

SituationBoucle à utiliserExemple
On connaît le nombre de répétitionsforAfficher la table de 7, tracer un polygone à 6 côtés
On ne sait pas combien de fois il faudra répéterwhileDemander un mot de passe jusqu'à ce qu'il soit correct

🧩 9. Les Fonctions

Une fonction est un bloc de code réutilisable auquel on donne un nom. On la définit avec le mot-clé def, et on l'appelle ensuite par son nom.

# Définition de la fonction
def aire_rectangle(longueur, largeur):
    return longueur * largeur

# Appel de la fonction
resultat = aire_rectangle(5, 3)
print(f"L'aire est  cm²")
L'aire est 15 cm²
TermeExplication
defMot-clé qui signifie « je définis une fonction »
ParamètresLes valeurs que la fonction reçoit entre parenthèses (longueur, largeur)
returnMot-clé qui renvoie le résultat de la fonction. Sans return, la fonction ne renvoie rien.
AppelQuand on écrit aire_rectangle(5, 3), on exécute la fonction avec 5 et 3 comme arguments
💡 print() vs returnprint() affiche une valeur à l'écran mais ne la retourne pas. return renvoie une valeur au programme (on peut la stocker dans une variable). Au brevet, on vous demande souvent la différence : un print dans une fonction affiche mais ne permet pas d'utiliser le résultat ensuite ; un return ne s'affiche pas mais permet de réutiliser la valeur.

🔄 10. Tableau de Correspondance Scratch → Python

Si vous connaissez déjà Scratch, voici comment chaque concept se traduit en Python :

ConceptScratchPython
Afficher du textedire "Bonjour"print("Bonjour")
Créer une variablemettre x à 5x = 5
Modifier une variableajouter 1 à xx = x + 1
Saisie utilisateurdemander "…" et attendreinput("…")
Condition simplesi alors …if condition:
Condition avec sinonsi … alors … sinon …if … : … else:
Boucle fixerépéter 10 foisfor i in range(10):
Boucle conditionnellerépéter jusqu'à (x = 0)while x != 0: ⚠️ logique inversée
Nombre aléatoirenombre aléatoire entre 1 et 6random.randint(1, 6)
Reste de divisionreste de x / 2x % 2
ET logique__ et __and
OU logique__ ou __or
FonctionBlocs personnalisésdef ma_fonction():
⚠️ Piège Scratch → Python — Le bloc Scratch répéter jusqu'à ce que (condition) s'arrête quand la condition devient vraie. La boucle Python while condition: continue tant que la condition est vraie. Il faut donc inverser la condition quand on traduit. Exemple : Scratch répéter jusqu'à (x = 0) → Python while x != 0:

📝 11. Exercices Type Brevet Corrigés

Exercice 1 — Programme de calcul

Énoncé : Écrire un programme Python qui demande un nombre à l'utilisateur, le multiplie par 2, ajoute 7, puis affiche le résultat.

nombre = int(input("Choisis un nombre : "))
resultat = nombre * 2 + 7
print(f"Le résultat est ")

Tests : Pour nombre = 4 → 4 × 2 + 7 = 15. Pour nombre = −3 → (−3) × 2 + 7 = −6 + 7 = 1. Expression générale : 2x + 7.

Exercice 2 — Pair ou impair

Énoncé : Écrire un programme qui demande un nombre et affiche s'il est pair ou impair.

n = int(input("Entre un nombre : "))

if n % 2 == 0:
    print(f" est pair")
else:
    print(f" est impair")

Explication : n % 2 donne le reste de la division de n par 2. Si le reste vaut 0, le nombre est divisible par 2 donc pair. Sinon, il est impair.

Exercice 3 — Somme des entiers de 1 à N

Énoncé : Écrire un programme qui calcule la somme 1 + 2 + 3 + … + N, où N est saisi par l'utilisateur.

n = int(input("Entre N : "))
somme = 0

for i in range(1, n + 1):
    somme = somme + i

print(f"La somme de 1 à  est ")

Trace pour N = 5 : i = 1 → somme = 1 ; i = 2 → somme = 3 ; i = 3 → somme = 6 ; i = 4 → somme = 10 ; i = 5 → somme = 15.

Vérification : La formule mathématique est N × (N + 1) / 2 = 5 × 6 / 2 = 15 ✅

Exercice 4 — Nombre premier (brevet avancé)

Énoncé : Écrire une fonction est_premier(n) qui retourne True si n est premier, False sinon.

def est_premier(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

# Test
print(est_premier(7))    # True
print(est_premier(12))   # False

Explication : On teste si n est divisible par un nombre entre 2 et n−1. Si on trouve un diviseur (n % i == 0), n n'est pas premier. Si aucun diviseur n'est trouvé après la boucle, n est premier.

Exercice 5 — Que fait ce programme ? (lecture de code)

Énoncé : Sans l'exécuter, déterminer ce qu'affiche le programme suivant.

x = 1
for i in range(4):
    x = x * 2
print(x)

Correction :

Initialisation : x = 1. Tour 1 (i=0) : x = 1 × 2 = 2. Tour 2 (i=1) : x = 2 × 2 = 4. Tour 3 (i=2) : x = 4 × 2 = 8. Tour 4 (i=3) : x = 8 × 2 = 16. Le programme affiche 16.

Ce programme calcule 24 = 16 (il multiplie par 2 quatre fois de suite).

⚠️ 12. Les Erreurs Fréquentes en Python

ErreurMessage PythonCauseSolution
Oublier :SyntaxErrorPas de deux-points après if, for, while, defAjouter : à la fin de la ligne
Mauvaise indentationIndentationErrorLes lignes du bloc ne sont pas toutes décalées pareilUtiliser exactement 4 espaces pour chaque niveau
Confondre = et ==Bug silencieux= affecte, == compareUtiliser == dans les if et while
input() sans conversionTypeErrorCalcul avec un texte au lieu d'un nombreUtiliser int(input(…)) ou float(input(…))
range(n) commence à 0Bug logiquerange(5) donne 0,1,2,3,4 et non 1,2,3,4,5Utiliser range(1, n+1) pour aller de 1 à n
Boucle infinieProgramme bloquéLa condition du while ne devient jamais fausseVérifier qu'une variable est modifiée dans la boucle. Ctrl+C pour arrêter.
Nom de variable interditSyntaxErrorUtiliser un mot réservé comme for, if, print comme nom de variableChoisir un autre nom : resultat au lieu de return
Parenthèses manquantesSyntaxErrorprint "salut" au lieu de print("salut")Toujours mettre des parenthèses après print, input, range

❓ Questions Fréquentes

Python est-il au brevet des collèges ?
Python peut apparaître au brevet en mathématiques (exercice de lecture de code ou de programme de calcul) et en technologie (programmation d'un système automatisé). Cependant, Scratch reste plus fréquent que Python au brevet du collège. Python devient central à partir du lycée (SNT en seconde, NSI en première). Au brevet, on vous demande surtout de lire et comprendre un programme Python, rarement d'en écrire un complet de zéro.
Faut-il installer Python pour le collège ?
Pas forcément. Vous pouvez coder Python directement en ligne sur des sites gratuits comme Trinket (trinket.io), Replit (replit.com) ou Google Colab. Si vous préférez l'installer sur votre ordinateur, téléchargez Python gratuitement sur python.org. L'éditeur Thonny est particulièrement recommandé pour les débutants car son interface est simple.
Quelle est la différence entre Python et Scratch ?
Les concepts sont identiques (variables, conditions, boucles, fonctions). La différence est la forme : Scratch utilise des blocs colorés que l'on glisse, Python utilise du texte que l'on tape. Python est plus puissant (on peut tout faire avec), mais plus exigeant en syntaxe (une erreur de frappe = un programme qui ne marche pas). Scratch est pensé pour l'apprentissage visuel, Python pour la programmation réelle.
Pourquoi range(5) donne 0, 1, 2, 3, 4 et pas 1, 2, 3, 4, 5 ?
C'est une convention de l'informatique : les compteurs commencent à 0, pas à 1. range(5) produit 5 valeurs : de 0 à 4. Si vous voulez aller de 1 à 5, utilisez range(1, 6) — le deuxième paramètre est toujours exclu. C'est déroutant au début, mais c'est la même logique dans tous les langages de programmation.
Que signifie l'erreur « IndentationError » ?
Python utilise l'indentation (le décalage vers la droite) pour définir les blocs de code. Si les lignes d'un même bloc ne sont pas décalées de la même manière, ou si vous mélangez des espaces et des tabulations, Python affiche IndentationError. La solution : utilisez toujours 4 espaces pour chaque niveau d'indentation, et ne mélangez jamais espaces et tabulations.
Quelle est la différence entre print() et return ?
print() affiche un texte à l'écran — c'est pour le développeur ou l'utilisateur. return renvoie une valeur au programme — c'est pour que d'autres parties du code puissent utiliser le résultat. Exemple : si une fonction utilise print(resultat), le résultat s'affiche mais on ne peut pas le stocker dans une variable. Si elle utilise return resultat, on peut écrire x = ma_fonction() et x contiendra le résultat.
Comment passer de Scratch à Python facilement ?
Le plus simple est de traduire vos programmes Scratch existants en Python, bloc par bloc. Chaque catégorie de blocs Scratch a un équivalent Python direct (voir le tableau de correspondance ci-dessus). Commencez par les programmes simples (afficher un texte, faire un calcul), puis passez aux conditions et aux boucles. Le site Trinket permet même de convertir certains projets Scratch en Python automatiquement.

📚 Autres cours de technologie

💡 La progression logique — En technologie au collège, on apprend la programmation dans cet ordre : 1. Algorithme et algorigramme (la logique, sur papier) → 2. Scratch (la programmation visuelle) → 3. Python (la programmation textuelle). Maîtriser les deux premières étapes facilite grandement l'apprentissage de Python. Au lycée, Python sera le langage principal en maths, SNT et NSI.