Retour au blog

Les bases de la programmation Python pour débutants : le guide complet

Variables, conditions, boucles et fonctions : les bases de Python vues au lycée, chacune avec un court programme et ce qu'il affiche, puis quatre exercices corrigés.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

Un programme Python est une suite d'instructions que l'ordinateur exécute dans l'ordre, de haut en bas. Écris prix = 12, puis à la ligne suivante print(prix * 3) : Python mémorise 12 sous le nom prix, puis affiche 36. Tout le reste part de là : des valeurs mémorisées sous des noms, et des instructions qui s'en servent.

On suit ici les notions que le programme de mathématiques de Seconde, appliqué depuis la rentrée 2026, demande en Python : variables, conditions, boucles et fonctions. Recopie chaque exemple dans un éditeur Python, ou sur ta calculatrice si elle a un mode Python.

Variables et affectation

Une variable est un nom qui désigne une valeur gardée dans la mémoire de l'ordinateur. Elle reçoit sa valeur par une affectation, avec le signe =.

age = 16
age = age + 1
print(age)

Ce programme affiche 17. La deuxième ligne choque en maths, car un nombre n'est jamais égal à lui-même plus 1. C'est qu'en Python, = n'est pas une égalité.

Définition : l'affectation variable = expression calcule d'abord la partie droite, puis place le résultat dans la variable de gauche, à la place de l'ancienne valeur. En langage naturel, on la note avec une flèche : age ← age + 1.

Un nom de variable n'a pas d'espace et ne commence pas par un chiffre : note_maths convient, note maths non. Et Age n'est pas age : Python distingue les majuscules.

Les quatre types de valeurs

Chaque valeur a un type, c'est-à-dire une nature, qui décide de ce qu'on peut en faire. Le programme de Seconde en retient quatre.

TypeCe que c'estExemples
int (entier)un nombre entier16, -3
float (flottant)un nombre à virgule, écrit avec un point3.5, -0.25
str (chaîne de caractères)du texte, entre guillemets"Bonjour", "16"
bool (booléen)vrai ou fauxTrue, False

La division / donne toujours un flottant : 6 / 2 vaut 3.0, pas 3. Et "16" n'est pas le nombre 16 mais un texte : "16" + "1" donne "161", car + colle deux textes bout à bout.

Piège classique : input(), qui lit ce que l'utilisateur tape au clavier, renvoie toujours une chaîne de caractères, même pour un nombre. Après age = input("Ton âge ? "), le calcul age + 1 déclenche une erreur TypeError. Convertis dès la saisie : age = int(input("Ton âge ? ")).

Les conditions : if, elif, else

Une instruction conditionnelle n'exécute un bloc que si une condition est vraie. Cette condition est souvent une comparaison : <, >, <=, >=, == (égal) ou != (différent).

note = 13
if note >= 16:
    print("Très bien")
elif note >= 10:
    print("Moyenne atteinte")
else:
    print("Sous la moyenne")

Ce programme affiche Moyenne atteinte. Le mot else veut dire « sinon », et elif « sinon si ». Python teste les conditions dans l'ordre et n'exécute que le bloc de la première qui est vraie : 13 n'atteint pas 16, mais atteint 10.

Remarque le deux-points au bout des lignes if, elif et else, et le décalage des lignes en dessous : c'est l'indentation, en général quatre espaces. Elle dit à Python quelles lignes font partie du bloc, donc toutes les lignes d'un même bloc sont décalées pareil. Même règle pour les boucles et les fonctions.

Piège classique : un seul = affecte une valeur, deux == comparent. Écrire if note = 10: déclenche une SyntaxError ; il faut if note == 10:.

Les boucles for et while

Une boucle répète un bloc d'instructions. Si tu sais d'avance combien de tours il faut, prends la boucle bornée for.

for i in range(4):
    print(i)

Ce programme affiche 0, 1, 2 et 3, un nombre par ligne : range(4) fournit quatre valeurs, en partant de 0. Avec deux nombres, range(1, 5) donne 1, 2, 3 et 4.

Piège classique : la borne de fin de range n'est jamais atteinte. Pour aller de 1 à 10, il faut range(1, 11).

Sinon, prends la boucle non bornée while, « tant que » : elle recommence tant que sa condition est vraie. Ce programme cherche la première puissance de 2 qui dépasse 100.

n = 1
while n < 100:
    n = n * 2
print(n)

Il affiche 128 : n double à chaque tour (2, 4, 8, 16, 32, 64, 128), et à 128, la condition n < 100 devient fausse. Le print, non indenté, ne s'exécute qu'après la boucle. Si rien ne change dans le bloc d'un while, sa condition reste vraie pour toujours : c'est une boucle infinie.

Conseil : devant une boucle, fais au brouillon un tableau de suivi : une colonne par variable, une ligne par tour.

Les fonctions

Une fonction est un morceau de programme qui porte un nom, pour s'en resservir sans le réécrire. Elle reçoit des valeurs, ses paramètres, et renvoie un résultat avec return.

def aire_rectangle(longueur, largeur):
    return longueur * largeur

print(aire_rectangle(5, 3))

Ce programme affiche 15. La ligne def donne le nom de la fonction et ses paramètres entre parenthèses. La dernière ligne appelle la fonction : longueur prend la valeur 5, largeur la valeur 3, et return renvoie 15 là où on l'a appelée.

Piège classique : print affiche une valeur, return la renvoie au programme pour qu'il s'en serve. Sans return, une fonction renvoie None, une valeur vide : avec un print à la place du return, le calcul 2 * aire_rectangle(5, 3) déclencherait une TypeError.

Python fournit aussi des fonctions toutes prêtes. Après from random import randint, l'appel randint(1, 6) renvoie un entier au hasard entre 1 et 6, bornes comprises cette fois : de quoi simuler un dé.

Lire un message d'erreur

Quand Python bute sur une ligne, il s'arrête et affiche un message en anglais. Lis-le : il donne le numéro de la ligne fautive, et sa dernière ligne commence par le type d'erreur.

ErreurCe qu'elle veut direCause fréquente
SyntaxErrorligne mal écritedeux-points oublié, parenthèse non fermée, = au lieu de ==
IndentationErrordécalage incorrectbloc non indenté, ou décalé de travers
NameErrornom inconnufaute de frappe, ou variable utilisée avant d'être créée
TypeErrortypes incompatiblestexte additionné à un nombre, souvent après un input()

Exemple tiré du tutoriel officiel de Python : '2' + 2 provoque TypeError: can only concatenate str (not "int") to str, c'est-à-dire « on ne colle à un texte qu'un autre texte ».

Exercices corrigés

Cherche chacun sur ta feuille avant d'ouvrir la correction.

Exercice 1 : Sans ordinateur, dis ce qu'affiche ce programme.

a = 5
b = a + 2
a = b * 3
b = b - a
print(a, b)

Correction :

On suit les variables ligne par ligne, avec leurs valeurs du moment. Ligne 1 : a vaut 5. Ligne 2 : b vaut 5 + 2 = 7. Ligne 3 : a vaut 7 × 3 = 21, et l'ancien 5 est perdu. Ligne 4 : b vaut 7 − 21 = −14.

Le programme affiche 21 -14.

Exercice 2 : Qu'affiche ce programme ? Change ensuite une seule ligne pour qu'il affiche la somme 1 + 2 + … + 10, et donne cette somme.

s = 0
for i in range(1, 5):
    s = s + i
print(s)

Correction :

La boucle parcourt range(1, 5), soit 1, 2, 3 et 4, sans le 5. Donc s vaut 0 + 1 + 2 + 3 + 4 = 10, et le programme affiche 10. Répondre 15, c'est tomber dans le piège de la borne de fin.

Pour aller jusqu'à 10, la deuxième ligne devient for i in range(1, 11):, et le programme affiche 55.

Exercice 3 : Léa a 50 € de côté et en ajoute 15 chaque semaine. Écris un programme qui affiche le nombre de semaines nécessaires pour qu'elle ait au moins 200 €, puis donne ce nombre.

Correction :

On ne connaît pas d'avance le nombre de tours : c'est un travail pour while.

argent = 50
semaines = 0
while argent < 200:
    argent = argent + 15
    semaines = semaines + 1
print(semaines)

Après 9 semaines, Léa a 50 + 9 × 15 = 185 €, moins de 200 €. Après 10 semaines, elle a 50 + 10 × 15 = 200 € : la condition argent < 200 devient fausse et la boucle s'arrête. Le programme affiche 10 : il faut 10 semaines. Avec argent <= 200, la boucle ferait un tour de trop et afficherait 11.

Exercice 4 : En Python, a % b donne le reste de la division entière de a par b : 17 % 3 vaut 2. Écris une fonction est_multiple(a, b) qui renvoie True si l'entier a est un multiple de l'entier b, non nul, et False sinon. Que renvoient est_multiple(21, 7) et est_multiple(20, 6) ?

Correction :

Le nombre a est un multiple de b quand la division de a par b tombe juste, donc quand le reste est nul.

def est_multiple(a, b):
    if a % b == 0:
        return True
    else:
        return False

Comme 21 = 3 × 7 + 0, le reste vaut 0 : est_multiple(21, 7) renvoie True. Comme 20 = 3 × 6 + 2, le reste vaut 2 : est_multiple(20, 6) renvoie False.

À retenir

À retenir :

  • x = expression calcule la partie droite, puis place le résultat dans x.
  • Quatre types : int, float, str, bool. input() renvoie toujours un str.
  • Un = affecte, deux == comparent.
  • Deux-points en bout de ligne, puis bloc indenté, pour if, for, while et def.
  • for quand le nombre de tours est connu, while sinon ; range(n) va de 0 à n − 1.
  • return renvoie un résultat réutilisable, print ne fait que l'afficher.
  • Un message d'erreur se lit par sa dernière ligne.

Sources

Tu peux partager cette page librement, en citant ORBITECH AI Academy avec son lien.