Aller au contenu

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 :

  1. l'algorithme et le langage, pour fixer le cadre ;
  2. les instructions exécutées l'une après l'autre ;
  3. les conditionnelles ;
  4. les boucles bornées ;
  5. les boucles non bornées ;
  6. les appels de fonction ;
  7. les types construits (tuples, listes, dictionnaires) ;
  8. 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

Les briques d'un programmeCarte mentale centrée sur les constructions élémentaires, avec quatre branches : conditionnelles, boucles bornées, boucles non bornées et appels de fonction, plus une branche sur les données.ifelifelseConditionnellesforrangenb de tours connuBoucles bornéeswhileconditionrisque infiniBoucles non bornéesdefparamètresreturnAppels de fonctiontuplelistdictTypes construitsConstructions

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
Les briques d'un programme · Les constructions du programme et les données qu'elles manipulent.

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 [0 ; 10][0\,;\,10].

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 à n−1n-1 (donc nn valeurs) ;
  • range(a, b) donne les entiers de aa à b−1b-1 ;
  • range(a, b, p) avance avec un pas de pp.
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 1+2+3+4+5=151+2+3+4+5=15.

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.

Tuple, liste, dictionnaire
TypeRepérage des élémentsModifiableExemple
tupleindice entiernont = "a", "b", 3
listindice entier (à partir de 0)ouiL = [12, 15, 9]
dictcléouid = {"Lina": 16}
Tuple, liste, dictionnaire · Comparaison des trois types construits.

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.

Écrire un programme pas à pasQuatre étapes : reformuler, choisir les constructions, écrire le squelette, tester sur un petit exemple.1ReformulerDire en français ce qu'il faut obtenir2ChoisirTest, boucle, fonction, structure de données3ÉcrireInitialisations, boucle, valeur renvoyée4TesterSuivre la trace sur un petit exemple
  1. ReformulerDire en français ce qu'il faut obtenir
  2. ChoisirTest, boucle, fonction, structure de données
  3. ÉcrireInitialisations, boucle, valeur renvoyée
  4. TesterSuivre la trace sur un petit exemple
Écrire un programme pas à pas · Démarche pour construire un programme.

Erreurs fréquentes et bonnes pratiques

Exercices corrigés

Exercice 1 Somme d'entiers consécutifs

★☆☆Environ 5 min

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
  1. range(1, 11) donne les entiers de 1 à 10 : la borne 11 est exclue.

  2. La boucle est bornée : elle fait 10 tours, et total accumule la valeur de i à chaque tour.

  3. On calcule 1+2+⋯+101+2+\dots+10. En associant 1 et 10, 2 et 9, etc., on forme 5 paires de somme 11, soit 5×11=555\times11=55.

  4. À la fin, total vaut 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 ?

★★☆Environ 8 min

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
  1. Avant le premier tour, n vaut 1 et compteur vaut 0. La condition n < 1000 est vraie.

  2. Après chaque tour, n est doublé : après kk tours, n vaut 2k2^k.

  3. On cherche le premier kk tel que 2k≥10002^k \ge 1000. Comme 29=5122^9=512 (encore inférieur à 1000) et 210=10242^{10}=1024 (supérieur), on a k=10k=10.

  4. À ce moment la condition est fausse, la boucle s'arrête, et compteur vaut 10 (avec n é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

★★★Environ 10 min

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
  1. range(1, 30) donne les entiers de 1 à 29. Le test est vrai pour les multiples de 3 ou de 5.

  2. Multiples de 3 entre 1 et 29 : 3, 6, 9, 12, 15, 18, 21, 24, 27, soit 9 nombres.

  3. 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.

  4. Au total : 9+4=139 + 4 = 13. La variable compte vaut 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.

  1. Quelle construction répète un bloc d'instructions un nombre de fois connu avant le début de la répétition ?

  2. Que vaut x après ce programme ?

    x = 4
    x = x * 2
    x = x - 3
    

  3. Combien de fois le bloc de cette boucle est-il exécuté ?

    for i in range(3, 8):
        print(i)
    

  4. Une boucle while dont la condition ne devient jamais fausse ne s'arrête jamais.

  5. Quelle écriture crée un tuple à un seul élément, d'après Éduscol ?

  6. Comment repère-t-on un élément d'un dictionnaire ?

  7. Que renvoie f(3) ?

    def f(n):
        if n > 2:
            return "grand"
        return "petit"
    

  8. Quelles constructions font partie de celles que le programme de NSI met en évidence (plusieurs réponses possibles) ?

    Plusieurs réponses possibles.

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

  1. 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.
  2. Programmes et ressources en NSI - voie générale (Éduscol), Éduscol. Consulté le 6 novembre 2026.
  3. Langages et programmation - Constructions élémentaires : Types construits en Python, Éduscol. Consulté le 6 novembre 2026.
  4. Algorithmique et programmation (fiches pédagogiques), Éduscol. Consulté le 6 novembre 2026.
  5. Construction à la règle et au compas, Wikipédia. Consulté le 6 novembre 2026.
  6. 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.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page