Numérique et sciences informatiques (spécialité) · Première
Constructions élémentaires en Python : exercices de NSI Première
Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur
L'essentiel
- Un algorithme enchaîne un nombre fini de consignes simples, exécutées dans un ordre fixé 4.
- Les constructions de base sont les conditionnelles, les boucles bornées, les boucles non bornées et les appels de fonction 1.
- Pour suivre un programme à la main, note la valeur de chaque variable à chaque tour dans un tableau.
- Un tuple se repère par des indices ; avec un seul élément, la virgule est obligatoire 3.
Comment utiliser ces exercices
Ces exercices s'entraînent à lire un programme Python et à prévoir ce qu'il calcule, sans l'exécuter. C'est exactement ce que demande l'écrit de NSI : on te donne un code, tu dois en déduire le résultat, ou le compléter. Les exercices sont rangés par difficulté croissante : le niveau 1 revoit une seule construction, le niveau 2 en combine deux, le niveau 3 demande de suivre plusieurs variables en même temps.
Cherche d'abord seul, sur papier, avant d'ouvrir les indices. Ensuite seulement, lis la correction et compare ta démarche, pas uniquement ton résultat. Si tu as un ordinateur, vérifie ta réponse en exécutant le code : une différence entre ta prévision et la machine révèle presque toujours une erreur de lecture que tu peux corriger.
Les exercices
Exercice 1 Compter les éléments d'un tuple
On définit en Python :
t = "a", "b", "c", 3
Combien d'éléments contient t, c'est-à-dire que vaut len(t) ? Dis aussi quelle est la valeur de t[3].
Indice 1
Un tuple est une suite ordonnée d'éléments, qui peuvent être de types différents 3.
Indice 2
Les indices commencent à 0.
Voir la correction pas à pas
On sépare les éléments par les virgules :
"a","b","c"et3. Cela fait quatre éléments, de types différents, ce qui est permis pour un tuple 3.Donc
len(t)vaut 4.Les indices vont de 0 à 3 :
t[0]vaut"a",t[1]vaut"b",t[2]vaut"c".L'indice 3 désigne donc le dernier élément :
t[3]vaut l'entier 3.
Un tuple de quatre éléments a des indices de 0 à 3. L'indice du dernier élément est toujours len(t) - 1. Écrire t[4] provoquerait une erreur d'indice.
Exercice 2 Tarif d'entrée avec une conditionnelle
Une médiathèque applique ce tarif :
def tarif(age):
if age < 12:
return 5
elif age < 65:
return 10
else:
return 7
Un groupe est composé de personnes âgées de 8, 30, 70, 11 et 64 ans. Quel est le total payé, en euros, par le groupe ?
Indice 1
Traite chaque âge séparément en cherchant la première condition vraie.
Indice 2
Pour 64, demande-toi si 64 < 12 puis si 64 < 65.
Voir la correction pas à pas
Âge 8 :
8 < 12est vrai, on renvoie 5.Âge 30 :
30 < 12est faux, puis30 < 65est vrai, on renvoie 10.Âge 70 : les deux premières conditions sont fausses, on passe au
elseet on renvoie 7.Âge 11 :
11 < 12est vrai, on renvoie 5.Âge 64 :
64 < 12est faux,64 < 65est vrai, on renvoie 10.Total : 5 + 10 + 7 + 5 + 10 = 37.
Une seule branche est exécutée à chaque appel. L'ordre des tests compte : si on avait écrit age < 65 en premier, les enfants de moins de 12 ans auraient payé 10 euros.
Exercice 3 Somme de carrés avec une boucle bornée
Que vaut s à la fin de ce programme ?
s = 0
for i in range(1, 6):
s = s + i * i
Indice 1
Liste d'abord les valeurs prises par i.
Indice 2
N'oublie pas que 6 est exclu de range(1, 6).
Voir la correction pas à pas
range(1, 6)donne les valeurs 1, 2, 3, 4, 5 : la boucle fait donc cinq tours.Avant la boucle,
svaut 0.Tour
i = 1:s = 0 + 1 = 1. Touri = 2:s = 1 + 4 = 5.Tour
i = 3:s = 5 + 9 = 14. Touri = 4:s = 14 + 16 = 30.Tour
i = 5:s = 30 + 25 = 55.À la sortie de la boucle,
svaut 55.
Le nombre de tours d'une boucle for est connu avant d'entrer dans la boucle : c'est ce qui la rend bornée. La variable s joue le rôle d'accumulateur.
Exercice 4 Combien de tours pour une boucle while ?
On exécute :
n = 100
compteur = 0
while n > 10:
n = n // 2
compteur = compteur + 1
Quelle est la valeur finale de compteur ? Quelle est alors celle de n ?
Indice 1
Fais un tableau avec les colonnes n et compteur.
Indice 2
La condition n > 10 est testée avant chaque tour.
Voir la correction pas à pas
Au départ :
n = 100,compteur = 0. La condition100 > 10est vraie, on entre dans la boucle.Tour 1 :
n = 100 // 2 = 50,compteur = 1. Test :50 > 10vrai.Tour 2 :
n = 25,compteur = 2. Test :25 > 10vrai.Tour 3 :
n = 25 // 2 = 12,compteur = 3. Test :12 > 10vrai.Tour 4 :
n = 12 // 2 = 6,compteur = 4. Test :6 > 10faux, la boucle s'arrête.Donc
compteurvaut 4 etnvaut 6.
Ici, on ne pouvait pas deviner le nombre de tours sans calculer : c'est le propre d'une boucle non bornée. Le quotient entier // arrondit vers le bas (25 // 2 donne 12), ce qui explique que n ne soit pas exactement divisé par 2 à chaque tour.
Exercice 5 Composer deux appels de fonction
On définit :
def f(x):
return 2 * x + 1
Quelle est la valeur de f(f(3)) ?
Indice 1
Évalue d'abord l'appel le plus intérieur.
Indice 2
Le résultat de f(3) devient l'argument du second appel.
Voir la correction pas à pas
Python évalue d'abord l'appel intérieur
f(3).Pour
x = 3, la fonction renvoie2 * 3 + 1 = 7.Le second appel devient
f(7).Pour
x = 7, la fonction renvoie2 * 7 + 1 = 15.
Un appel de fonction est une expression : sa valeur de retour peut servir d'argument à un autre appel. Attention, f(f(3)) n'est pas f(3) * 2 : il faut bien réappliquer toute la fonction.
Exercice 6 Boucle et conditionnelle imbriquées
Combien de fois la variable c est-elle augmentée dans ce programme ?
c = 0
for i in range(1, 31):
if i % 3 == 0 or i % 5 == 0:
c = c + 1
Indique la valeur finale de c.
Indice 1
Compte séparément les multiples de 3 et les multiples de 5 entre 1 et 30.
Indice 2
Certains nombres sont multiples des deux : ne les compte qu'une fois.
Voir la correction pas à pas
La boucle parcourt les entiers de 1 à 30 inclus, car 31 est exclu.
Multiples de 3 entre 1 et 30 : 3, 6, ..., 30, soit 10 nombres.
Multiples de 5 entre 1 et 30 : 5, 10, ..., 30, soit 6 nombres.
Multiples des deux, donc de 15 : 15 et 30, soit 2 nombres, comptés deux fois dans la somme précédente.
Le test
orest vrai si l'une au moins des conditions est vraie, doncc = 10 + 6 - 2 = 14.
Le mot-clé or correspond à une réunion : un nombre vérifiant les deux conditions n'incrémente c qu'une fois, car l'instruction c = c + 1 n'est exécutée qu'une fois par tour.
Exercice 7 Parcourir un tuple par ses indices
On considère le programme suivant :
t = (4, 7, 1, 9, 3)
s = 0
for i in range(len(t)):
if i % 2 == 1:
s = s + t[i] * i
Quelle est la valeur de s à la fin ?
Indice 1
Détermine d'abord les valeurs de i pour lesquelles la condition est vraie.
Indice 2
Pour chacune, calcule t[i] * i, pas seulement t[i].
Voir la correction pas à pas
len(t)vaut 5, donciprend les valeurs 0, 1, 2, 3, 4.La condition
i % 2 == 1est vraie pouri = 1eti = 3seulement, ce sont les indices impairs.Pour
i = 1:t[1]vaut 7, donc on ajoute7 * 1 = 7. Alorss = 7.Pour
i = 3:t[3]vaut 9, donc on ajoute9 * 3 = 27. Alorss = 34.Les autres tours ne modifient pas
s. À la fin,svaut 34.
Les éléments d'un tuple sont repérés par leur indice 3, et c'est l'indice, non la valeur, qui est testé ici. Ne confonds pas la position d'un élément avec l'élément lui-même.
Exercice 8 Suite de Syracuse à partir de 6
On exécute :
n = 6
etapes = 0
while n != 1:
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
etapes = etapes + 1
Que vaut etapes à la fin ? Écris aussi la liste des valeurs successives de n.
Indice 1
Une seule des deux branches du if est exécutée à chaque tour.
Indice 2
Le test d'arrêt porte sur n != 1 : la boucle s'arrête quand n atteint 1.
Indice 3
Compte les tours, pas les valeurs : la valeur de départ ne compte pas comme un tour.
Voir la correction pas à pas
Départ :
n = 6,etapes = 0. Comme 6 est différent de 1, on entre dans la boucle.6 est pair :
n = 3,etapes = 1.3 est impair :
n = 3 * 3 + 1 = 10,etapes = 2.10 est pair :
n = 5,etapes = 3. 5 est impair :n = 16,etapes = 4.16 est pair :
n = 8,etapes = 5. Puisn = 4,etapes = 6. Puisn = 2,etapes = 7.2 est pair :
n = 1,etapes = 8. La conditionn != 1est fausse, la boucle s'arrête.La liste des valeurs de
nest 6, 3, 10, 5, 16, 8, 4, 2, 1, soit 9 valeurs mais 8 tours.
Pour une boucle while, rien ne garantit a priori qu'elle se termine : ici, on le constate sur 6, mais le programme ne le prouve pas pour tout entier de départ. Distinguer le nombre de valeurs et le nombre de tours évite l'erreur d'une unité, très fréquente.
Les questions qu'on se pose
Comment savoir si je dois utiliser un for ou un while ?
Pose-toi la question : le nombre de tours est-il connu avant d'entrer dans la boucle ? Si oui (parcourir les indices d'un tuple, répéter 10 fois), choisis une boucle bornée for. Si l'arrêt dépend d'un état qui évolue pendant l'exécution (une valeur qui devient inférieure à un seuil, un test qui réussit), choisis une boucle non bornée while 1. Avec un while, vérifie toujours que le corps de la boucle modifie bien une variable de la condition, sinon la boucle ne s'arrête jamais.
Pourquoi mon tuple à un élément ne fonctionne-t-il pas ?
Parce qu'il manque la virgule. Un tuple à un élément s'écrit t = "a", avec une virgule finale, alors que le tuple vide s'écrit t = () avec des parenthèses seules 3. Sans la virgule, Python ne crée pas un tuple mais simplement la valeur elle-même. Pour vérifier, affiche type(t) et regarde si le résultat est bien tuple.
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.