Numérique et sciences informatiques (spécialité) · Première
Constructions élémentaires en Python : cours de NSI Première
Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur
L'essentiel
- Un algorithme est une succession limitée d'opérations simples, exécutées dans un ordre fixé ; un langage (ici Python) le traduit en programme.41
- Le programme de NSI met en évidence un corpus de constructions élémentaires : conditionnelles, boucles bornées, boucles non bornées et appels de fonction.1
- Boucle bornée (
for) : le nombre de tours est connu avant de commencer. Boucle non bornée (while) : on s'arrête quand une condition devient fausse, et il faut la faire évoluer pour ne pas boucler à l'infini. - Pour regrouper plusieurs valeurs : le tuple (suite ordonnée), la liste (repérée par des indices) et le dictionnaire (repéré par des clés).3
- Une fois les constructions maîtrisées, on les combine : un test dans une boucle, une boucle dans une fonction, une liste parcourue par une boucle.
Introduction : de quoi parle-t-on ?
Quand tu écris un programme, tu ne fais jamais rien d'autre que combiner quelques briques de base. Ces briques sont peu nombreuses, mais elles permettent de décrire presque n'importe quel traitement : tester une situation, répéter une action, réutiliser un morceau de code, ranger des données.
Le programme officiel de NSI de Première parle de « constructions élémentaires ». Il demande de mettre en évidence un corpus de constructions élémentaires.1 Ce qui compte, ce sont les briques elles-mêmes et la façon de les utiliser. Ce cours les passe en revue, une par une, avec du code Python que tu peux recopier et tester.
Le plan du cours :
- l'algorithme et le langage, pour fixer le cadre ;
- les instructions exécutées l'une après l'autre ;
- les conditionnelles ;
- les boucles bornées ;
- les boucles non bornées ;
- les appels de fonction ;
- les types construits (tuples, listes, dictionnaires) ;
- la combinaison de toutes ces briques et les erreurs fréquentes.
Algorithme, programme et langage
Deux idées comptent dans cette définition. « Limitée » : l'algorithme doit finir par s'arrêter. « Ordre fixé » : intervertir deux opérations peut changer le résultat. Par exemple, « ajouter 1 puis doubler » et « doubler puis ajouter 1 » ne donnent pas la même valeur à partir de 5 : on obtient 12 dans le premier cas, 11 dans le second.
Un algorithme est une idée abstraite. Pour qu'une machine l'exécute, il faut le traduire dans un langage de programmation. Selon le programme officiel, ce sont les langages qui rendent possible le passage d'un algorithme abstrait à un programme.1 En NSI, le langage retenu est Python, un langage interprété.4
Constructions
- Conditionnelles
- if
- elif
- else
- Boucles bornées
- for
- range
- nb de tours connu
- Boucles non bornées
- while
- condition
- risque infini
- Appels de fonction
- def
- paramètres
- return
- Types construits
- tuple
- list
- dict
Instructions en séquence et affectations
La construction la plus simple est la séquence : les instructions s'exécutent de haut en bas, dans l'ordre où elles sont écrites. L'instruction de base est l'affectation, qui associe un nom à une valeur.
a = 5
a = a + 1
a = a * 2
print(a)
Ce programme affiche 12. Lis-le comme une suite d'actions : a vaut 5 ; a prend l'ancienne valeur plus 1, soit 6 ; a prend l'ancienne valeur multipliée par 2, soit 12.
Les conditionnelles
En Python, on utilise if, elif (« sinon si ») et else (« sinon »). Le bloc concerné est décalé vers la droite (indentation), et la ligne du test se termine par deux-points.
note = 13
if note >= 16:
mention = "très bien"
elif note >= 14:
mention = "bien"
elif note >= 12:
mention = "assez bien"
else:
mention = "aucune"
print(mention)
Le programme teste les conditions dans l'ordre, s'arrête à la première qui est vraie et ignore les autres. Avec note = 13, les deux premiers tests échouent, le troisième réussit : mention vaut "assez bien".
Les conditions s'écrivent avec des comparaisons (<, <=, >, >=, ==, !=) que l'on peut combiner avec and (les deux doivent être vraies), or (au moins une) et not (contraire). Par exemple, 0 <= x and x <= 10 teste si x est dans l'intervalle .
Les boucles bornées
En Python, la boucle bornée s'écrit avec for. La fonction range fournit les valeurs successives que prend la variable de boucle :
range(n)donne les entiers de 0 à (donc valeurs) ;range(a, b)donne les entiers de à ;range(a, b, p)avance avec un pas de .
total = 0
for i in range(1, 6):
total = total + i
print(total)
La variable i prend successivement les valeurs 1, 2, 3, 4, 5, et total vaut 15 à la fin, car .
Une boucle bornée peut aussi parcourir directement les éléments d'une séquence, sans passer par les indices :
fruits = ["pomme", "poire", "kiwi"]
for f in fruits:
print(f)
Le nombre de tours est alors la longueur de la séquence, connue avant le début de la boucle : la boucle est bien bornée.
Les boucles non bornées
En Python, elle s'écrit avec while. La condition est testée avant chaque tour, y compris le premier : si elle est fausse dès le départ, le bloc n'est jamais exécuté.
n = 1
compteur = 0
while n < 100:
n = n * 2
compteur = compteur + 1
print(n, compteur)
Trace d'exécution : n passe par 2, 4, 8, 16, 32, 64, 128. À 128, la condition n < 100 devient fausse et la boucle s'arrête. Le programme affiche 128 7.
Les appels de fonction
On définit une fonction avec def et on renvoie un résultat avec return :
def est_pair(n):
return n % 2 == 0
print(est_pair(10))
print(est_pair(7))
L'appel est_pair(10) renvoie True, l'appel est_pair(7) renvoie False. La définition ne s'exécute pas toute seule : elle ne fait que mémoriser le bloc. C'est l'appel qui le déclenche.
Une fonction sert à ne pas recopier le même code et à lui donner un nom qui explique ce qu'il fait. Elle peut contenir toutes les autres constructions :
def somme_jusqua(n):
total = 0
for i in range(1, n + 1):
total = total + i
return total
print(somme_jusqua(100))
Le programme affiche 5050.
Les types construits : tuples, listes, dictionnaires
Jusqu'ici, chaque variable contenait une seule valeur. Or on a souvent besoin de manipuler plusieurs valeurs à la fois : les notes d'une classe, les coordonnées d'un point. Les ressources d'Éduscol présentent l'objectif ainsi : construire un type de variable capable de contenir plusieurs valeurs.3 On s'inspire pour cela du type str (chaîne de caractères) et de l'usage d'indices pour repérer les éléments, ce qui conduit aux p-uplets (type tuple) et aux listes (type list).3
Éduscol donne ces écritures, qu'il faut retenir :3
t = "a", "b", "c", 3: un tuple à 4 éléments ;t = "a",: un tuple à 1 élément, la virgule est indispensable ;t = (): un tuple à 0 élément, avec des parenthèses et sans virgule.
Pour écrire un p-uplet qui en contient un autre, les parenthèses sont nécessaires.3
La liste (type list) se repère elle aussi par des indices, mais on peut la modifier : ajouter, retirer ou remplacer des éléments. Le premier élément a l'indice 0.
notes = [12, 15, 9]
notes.append(18)
notes[0] = 13
print(notes[0], len(notes))
Le programme affiche 13 4 : la liste vaut [13, 15, 9, 18], le premier élément est 13 et elle a 4 éléments. Un tuple, au contraire, ne se modifie pas après sa création.
Le dictionnaire (type dict) fonctionne autrement. Selon Éduscol, on n'y repère pas un élément par un indice entier mais par une « clé » : le dictionnaire n'est pas pensé comme une suite ordonnée.3
age = {"Lina": 16, "Hugo": 17}
age["Lina"] = 17
print(age["Lina"])
Le programme affiche 17. On accède à une valeur en donnant sa clé, pas sa position.
| Type | Repérage des éléments | Modifiable | Exemple |
|---|---|---|---|
| tuple | indice entier | non | t = "a", "b", 3 |
| list | indice entier (à partir de 0) | oui | L = [12, 15, 9] |
| dict | clé | oui | d = {"Lina": 16} |
Combiner les constructions
La puissance des constructions élémentaires vient de leur imbrication. On peut placer un test dans une boucle, une boucle dans une fonction, un appel de fonction dans une condition. Chaque bloc imbriqué est décalé d'un niveau d'indentation supplémentaire.
- ReformulerDire en français ce qu'il faut obtenir
- ChoisirTest, boucle, fonction, structure de données
- ÉcrireInitialisations, boucle, valeur renvoyée
- TesterSuivre la trace sur un petit exemple
Erreurs fréquentes et bonnes pratiques
Exercices corrigés
Exercice 1 Somme d'entiers consécutifs
On considère le programme suivant.
total = 0
for i in range(1, 11):
total = total + i
Quelle est la valeur de total à la fin du programme ?
Indice 1
Quelles valeurs prend i ? Attention à la borne de droite de range.
Indice 2
Additionne les entiers de 1 à 10.
Voir la correction pas à pas
range(1, 11)donne les entiers de 1 à 10 : la borne 11 est exclue.La boucle est bornée : elle fait 10 tours, et
totalaccumule la valeur deià chaque tour.On calcule . En associant 1 et 10, 2 et 9, etc., on forme 5 paires de somme 11, soit .
À la fin,
totalvaut 55.
Avec une boucle bornée, on repère d'abord les valeurs prises par la variable de boucle, puis on suit l'accumulation. Le piège est la borne exclue de range.
Exercice 2 Combien de tours dans une boucle while ?
n = 1
compteur = 0
while n < 1000:
n = n * 2
compteur = compteur + 1
Quelle est la valeur de compteur à la fin du programme ?
Indice 1
Écris les valeurs successives de n : 1, 2, 4, 8, …
Indice 2
La boucle s'arrête dès que n n'est plus strictement inférieur à 1000.
Voir la correction pas à pas
Avant le premier tour,
nvaut 1 etcompteurvaut 0. La conditionn < 1000est vraie.Après chaque tour,
nest doublé : après tours,nvaut .On cherche le premier tel que . Comme (encore inférieur à 1000) et (supérieur), on a .
À ce moment la condition est fausse, la boucle s'arrête, et
compteurvaut 10 (avecnégal à 1024).
Dans un while, compteur compte le nombre de tours effectués. Le test porte sur la valeur de n avant chaque tour, ce qui explique que n dépasse 1000 à la sortie.
Exercice 3 Compter avec une condition dans une boucle
compte = 0
for n in range(1, 30):
if n % 3 == 0 or n % 5 == 0:
compte = compte + 1
Quelle est la valeur de compte à la fin du programme ?
Indice 1
n va de 1 à 29. Liste séparément les multiples de 3 puis les multiples de 5.
Indice 2
Attention aux nombres qui sont multiples des deux : ils ne sont comptés qu'une fois.
Voir la correction pas à pas
range(1, 30)donne les entiers de 1 à 29. Le test est vrai pour les multiples de 3 ou de 5.Multiples de 3 entre 1 et 29 : 3, 6, 9, 12, 15, 18, 21, 24, 27, soit 9 nombres.
Multiples de 5 entre 1 et 29 : 5, 10, 15, 20, 25. Parmi eux, 15 est déjà compté ; il reste 5, 10, 20, 25, soit 4 nouveaux nombres.
Au total : . La variable
comptevaut 13.
Un or dans une condition compte une seule fois un élément qui vérifie les deux propriétés : le bloc du if est exécuté une fois par tour, pas une fois par propriété vérifiée.
Quiz
8 questions · correction immédiate · ton score reste sur ton appareil.
-
La boucle bornée a un nombre de tours connu d'avance, c'est le rôle de
for. La bouclewhileest tentante, mais elle dépend d'une condition et son nombre de tours n'est pas connu à l'avance. Leifn'exécute son bloc qu'au plus une fois. -
On a 4, puis , puis . Ceux qui trouvent 1 ont lu
x = x * 2comme une égalité mathématique ; c'est une affectation : on remplace la valeur dex. -
iprend les valeurs 3, 4, 5, 6, 7 : soit 5 tours. La borne 8 est exclue, d'où l'erreur « 6 » qui consiste à l'inclure. Le nombre de tours est 8 - 3 = 5. -
C'est vrai : c'est une boucle infinie. Cela contredit l'idée qu'un algorithme comporte un nombre limité d'opérations. Il faut donc toujours vérifier que le bloc fait évoluer la condition.
-
La virgule finale est indispensable pour un tuple à un élément.
t = "a"crée simplement une chaîne de caractères,t = ()un tuple vide ett = ["a"]une liste. -
Un dictionnaire repère ses éléments par des clés, pas par des indices entiers, et il n'est pas considéré comme ordonné. L'indice entier est la façon de faire des listes et des tuples.
-
Pour
n = 3, la conditionn > 2est vraie, donc la fonction renvoie"grand"et s'arrête aussitôt : le secondreturnn'est pas exécuté. Répondre"petit"revient à oublier qu'unreturntermine l'appel. -
Le programme cite les conditionnelles, les boucles bornées et non bornées, et les appels de fonction. La règle et le compas relèvent de la géométrie, pas de la programmation : l'homonymie du mot « constructions » est un piège.
Les questions qu'on se pose
Quelle différence entre une boucle for et une boucle while ?
La boucle for est bornée : le nombre de tours est connu avant de commencer (par exemple range(10) ou la longueur d'une liste). La boucle while est non bornée : elle continue tant qu'une condition est vraie.1 Si tu sais combien de fois répéter, prends for ; si tu répètes jusqu'à atteindre un seuil ou trouver une valeur, prends while.
Pourquoi mon programme ne s'arrête-t-il jamais ?
Le plus souvent, c'est un while dont la condition ne devient jamais fausse : la variable testée n'est pas modifiée dans le bloc, ou elle l'est dans le mauvais sens. Un algorithme ne doit comporter qu'un nombre limité d'opérations.4 Relis la condition et demande-toi quelle ligne la fait évoluer. Dans la console, tu peux interrompre un programme qui boucle avec le raccourci Ctrl+C.
Quelle est la différence entre une liste, un tuple et un dictionnaire ?
Le tuple et la liste sont des suites d'éléments repérés par un indice entier ; le tuple est une suite ordonnée d'éléments de types quelconques.3 La liste se modifie (append, affectation d'un élément), le tuple non. Le dictionnaire repère ses éléments par des clés plutôt que par des indices entiers.3 Choisis une liste pour une série de valeurs de même nature, un tuple pour un petit groupe fixe (coordonnées), un dictionnaire pour associer des noms à des valeurs.
À quoi servent les fonctions, si je peux tout écrire dans le programme principal ?
Une fonction évite de recopier du code, lui donne un nom qui explique son rôle et permet de la tester séparément. L'appel de fonction fait d'ailleurs partie des constructions élémentaires du programme.1 C'est aussi la base des chapitres suivants, comme la spécification et les tests.
Qu'est-ce qui tombe le plus souvent à l'épreuve ?
Les exercices sur ce chapitre demandent souvent de suivre l'exécution d'un programme court (valeurs finales, nombre de tours), de compléter ou corriger une fonction qui parcourt une liste, et de repérer les erreurs de bornes ou d'indentation. Entraîne-toi à écrire des traces d'exécution à la main : c'est la compétence qui rapporte le plus.
Sources
Programme visé : Programme de numérique et sciences informatiques de première générale · Ministère de l'Éducation nationale et de la Jeunesse
- Programme de numérique et sciences informatiques de première générale, Ministère de l'Éducation nationale et de la Jeunesse. Consulté le 6 novembre 2026.
- Programmes et ressources en NSI - voie générale (Éduscol), Éduscol. Consulté le 6 novembre 2026.
- Langages et programmation - Constructions élémentaires : Types construits en Python, Éduscol. Consulté le 6 novembre 2026.
- Algorithmique et programmation (fiches pédagogiques), Éduscol. Consulté le 6 novembre 2026.
- Construction à la règle et au compas, Wikipédia. Consulté le 6 novembre 2026.
- Livre I des Éléments d'Euclide, Wikipédia. Consulté le 6 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.