Aller au contenu

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

★☆☆Environ 4 min

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
  1. On sépare les éléments par les virgules : "a", "b", "c" et 3. Cela fait quatre éléments, de types différents, ce qui est permis pour un tuple 3.

  2. Donc len(t) vaut 4.

  3. Les indices vont de 0 à 3 : t[0] vaut "a", t[1] vaut "b", t[2] vaut "c".

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

★☆☆Environ 6 min

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
  1. Âge 8 : 8 < 12 est vrai, on renvoie 5.

  2. Âge 30 : 30 < 12 est faux, puis 30 < 65 est vrai, on renvoie 10.

  3. Âge 70 : les deux premières conditions sont fausses, on passe au else et on renvoie 7.

  4. Âge 11 : 11 < 12 est vrai, on renvoie 5.

  5. Âge 64 : 64 < 12 est faux, 64 < 65 est vrai, on renvoie 10.

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

★☆☆Environ 6 min

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
  1. range(1, 6) donne les valeurs 1, 2, 3, 4, 5 : la boucle fait donc cinq tours.

  2. Avant la boucle, s vaut 0.

  3. Tour i = 1 : s = 0 + 1 = 1. Tour i = 2 : s = 1 + 4 = 5.

  4. Tour i = 3 : s = 5 + 9 = 14. Tour i = 4 : s = 14 + 16 = 30.

  5. Tour i = 5 : s = 30 + 25 = 55.

  6. À la sortie de la boucle, s vaut 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 ?

★★☆Environ 8 min

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
  1. Au départ : n = 100, compteur = 0. La condition 100 > 10 est vraie, on entre dans la boucle.

  2. Tour 1 : n = 100 // 2 = 50, compteur = 1. Test : 50 > 10 vrai.

  3. Tour 2 : n = 25, compteur = 2. Test : 25 > 10 vrai.

  4. Tour 3 : n = 25 // 2 = 12, compteur = 3. Test : 12 > 10 vrai.

  5. Tour 4 : n = 12 // 2 = 6, compteur = 4. Test : 6 > 10 faux, la boucle s'arrête.

  6. Donc compteur vaut 4 et n vaut 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

★★☆Environ 6 min

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
  1. Python évalue d'abord l'appel intérieur f(3).

  2. Pour x = 3, la fonction renvoie 2 * 3 + 1 = 7.

  3. Le second appel devient f(7).

  4. Pour x = 7, la fonction renvoie 2 * 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

★★☆Environ 8 min

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
  1. La boucle parcourt les entiers de 1 à 30 inclus, car 31 est exclu.

  2. Multiples de 3 entre 1 et 30 : 3, 6, ..., 30, soit 10 nombres.

  3. Multiples de 5 entre 1 et 30 : 5, 10, ..., 30, soit 6 nombres.

  4. Multiples des deux, donc de 15 : 15 et 30, soit 2 nombres, comptés deux fois dans la somme précédente.

  5. Le test or est vrai si l'une au moins des conditions est vraie, donc c = 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

★★★Environ 10 min

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
  1. len(t) vaut 5, donc i prend les valeurs 0, 1, 2, 3, 4.

  2. La condition i % 2 == 1 est vraie pour i = 1 et i = 3 seulement, ce sont les indices impairs.

  3. Pour i = 1 : t[1] vaut 7, donc on ajoute 7 * 1 = 7. Alors s = 7.

  4. Pour i = 3 : t[3] vaut 9, donc on ajoute 9 * 3 = 27. Alors s = 34.

  5. Les autres tours ne modifient pas s. À la fin, s vaut 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

★★★Environ 12 min

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
  1. Départ : n = 6, etapes = 0. Comme 6 est différent de 1, on entre dans la boucle.

  2. 6 est pair : n = 3, etapes = 1.

  3. 3 est impair : n = 3 * 3 + 1 = 10, etapes = 2.

  4. 10 est pair : n = 5, etapes = 3. 5 est impair : n = 16, etapes = 4.

  5. 16 est pair : n = 8, etapes = 5. Puis n = 4, etapes = 6. Puis n = 2, etapes = 7.

  6. 2 est pair : n = 1, etapes = 8. La condition n != 1 est fausse, la boucle s'arrête.

  7. La liste des valeurs de n est 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

  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