Première NSIPythonThonnyCodes copiables

Pack de révision Python

Fiches compactes, exemples exercices et algorithmes classiques à copier dans Thonny.

Commencer
Utilisation : clique sur Copier, colle le code dans Thonny, puis exécute avec F5. La coloration syntaxique sert à mieux lire le code dans cette page.

Pack de révision Python — Première NSI

Mode d’emploi du pack

Ce pack contient deux versions :

  1. Notebook Capytale : à ouvrir dans Capytale pour exécuter les cellules une par une.
  2. Page web Thonny : à ouvrir dans un navigateur. Chaque bloc de code peut être copié puis exécuté dans Thonny.

Compétences travaillées : variables, types, expressions, entrées/sorties, conditions, boucles, fonctions, listes, tuples, dictionnaires, chaînes de caractères, tests, débogage, dichotomie, algorithme glouton, tri par insertion et tri par sélection.


Fiche 1 — Variables, types et affectation

Ce qu’il faut savoir

Une variable est un nom associé à une valeur.

Python
age = 16
prenom = "Alice"
moyenne = 14.5
admis = True

Types courants :

TypeExempleRôle
int16entier
float14.5nombre décimal
str"NSI"chaîne de caractères
boolTrue ou Falsebooléen
list[12, 15, 9]collection modifiable
tuple(3, 5)collection non modifiable
dict{ "Alice": 15 }association clé-valeur

Points importants :

Python
"16"   # chaîne de caractères
16     # entier

Ces deux valeurs ne sont pas du même type.

Méthodes utiles

Python
x = int("16")       # conversion en entier
y = float("14.5")  # conversion en flottant
s = str(2026)       # conversion en chaîne

Exercices

Exercice 1

Compléter le programme pour afficher une phrase de présentation.

Python
prenom = input("Prénom : ")
age = int(input("Âge : "))
annee = 2026 - age
print("Bonjour", prenom, "tu es né(e) vers", annee)

Exercice 2

Écrire un programme qui demande une température en degrés Celsius et affiche son équivalent en Fahrenheit.

Python
c = float(input("Température en °C : "))
f = 1.8 * c + 32
print(c, "°C correspondent à", f, "°F")

Fiche 2 — Conditions

Ce qu’il faut savoir

Une condition permet d’exécuter du code seulement si une expression est vraie.

Python
age = int(input("Âge : "))

if age >= 18:
    print("Majeur")
else:
    print("Mineur")

Opérateurs de comparaison :

OpérateurSignification
==égal à
!=différent de
<strictement inférieur
<=inférieur ou égal
>strictement supérieur
>=supérieur ou égal

Opérateurs logiques :

Python
and   # et
or    # ou
not   # non

Exemple important : pair ou impair

Python
n = int(input("Nombre : "))

if n % 2 == 0:
    print("Pair")
else:
    print("Impair")

Exercices

Exercice 3 — Mention

Écrire une fonction qui renvoie la mention correspondant à une moyenne.

Python
def mention(moyenne):
    if moyenne < 10:
        return "Refusé"
    elif moyenne < 12:
        return "Admis"
    elif moyenne < 14:
        return "Mention assez bien"
    elif moyenne < 16:
        return "Mention bien"
    else:
        return "Mention très bien"

print(mention(15.2))

Exercice 4 — Année bissextile

Python
def est_bissextile(annee):
    return (annee % 400 == 0) or (annee % 4 == 0 and annee % 100 != 0)

print(est_bissextile(2024))
print(est_bissextile(1900))
print(est_bissextile(2000))

Fiche 3 — Boucles for et while

Boucle for

On utilise une boucle for quand on connaît le nombre de répétitions ou quand on parcourt une collection.

Python
for i in range(5):
    print(i)

Affiche : 0, 1, 2, 3, 4.

Python
for i in range(1, 6):
    print(i)

Affiche : 1, 2, 3, 4, 5.

Boucle while

On utilise while quand on répète tant qu’une condition est vraie.

Python
mot_de_passe = ""

while mot_de_passe != "NSI":
    mot_de_passe = input("Mot de passe : ")

print("Accès autorisé")

Exercices

Exercice 5 — Table de multiplication

Python
n = int(input("Table de : "))

for i in range(1, 11):
    print(n, "x", i, "=", n * i)

Exercice 6 — Somme des entiers de 1 à n

Python
n = int(input("n : "))
somme = 0

for i in range(1, n + 1):
    somme = somme + i

print("Somme =", somme)

Fiche 4 — Fonctions

Ce qu’il faut savoir

Une fonction permet de réutiliser du code.

Python
def carre(n):
    return n * n

print(carre(5))

Vocabulaire :

Exercices

Python
def est_pair(n):
    return n % 2 == 0

def maximum(a, b):
    if a > b:
        return a
    return b

def prix_ttc(prix_ht, taux):
    return prix_ht * (1 + taux / 100)

print(est_pair(8))
print(maximum(12, 7))
print(prix_ttc(100, 20))

Fiche 5 — Listes

Ce qu’il faut savoir

Une liste est une collection ordonnée et modifiable.

Python
notes = [12, 15, 9, 17]

Accès aux éléments :

Python
print(notes[0])   # premier élément
print(notes[-1])  # dernier élément

Méthodes utiles :

Python
notes.append(14)   # ajoute 14 à la fin
notes.remove(9)    # supprime la première valeur 9
len(notes)         # longueur
sum(notes)         # somme
min(notes)         # minimum
max(notes)         # maximum

Parcourir une liste

Python
for note in notes:
    print(note)

Exercices

Exercice 7 — Moyenne d’une liste

Python
def moyenne(notes):
    if len(notes) == 0:
        return None
    return sum(notes) / len(notes)

print(moyenne([12, 15, 9, 17]))

Exercice 8 — Filtrer les notes

Python
def notes_superieures(notes, seuil):
    resultat = []
    for note in notes:
        if note >= seuil:
            resultat.append(note)
    return resultat

print(notes_superieures([8, 12, 15, 9, 17], 10))

Fiche 6 — Tuples

Ce qu’il faut savoir

Un tuple est une collection ordonnée non modifiable.

Python
point = (3, 5)

On peut accéder aux éléments :

Python
x = point[0]
y = point[1]

On peut aussi faire du déballage :

Python
x, y = point

Différence essentielle :

Python
liste = [3, 5]
liste[0] = 10       # autorisé

tuple_point = (3, 5)
# tuple_point[0] = 10   # interdit

Utilisations fréquentes

Les tuples servent souvent à représenter :

Exercices

Exercice 9 — Coordonnées

Python
def milieu(a, b):
    x1, y1 = a
    x2, y2 = b
    return ((x1 + x2) / 2, (y1 + y2) / 2)

print(milieu((0, 0), (4, 6)))

Exercice 10 — Minimum et maximum

Python
def min_max(valeurs):
    return (min(valeurs), max(valeurs))

print(min_max([12, 5, 18, 9]))

Fiche 7 — Dictionnaires

Ce qu’il faut savoir

Un dictionnaire associe des clés à des valeurs.

Python
notes = {
    "Alice": 15,
    "Mehdi": 12,
    "Lina": 17
}

Accès à une valeur :

Python
print(notes["Alice"])

Ajouter ou modifier :

Python
notes["Noah"] = 10
notes["Mehdi"] = 14

Parcourir un dictionnaire :

Python
for nom in notes:
    print(nom, notes[nom])

Ou bien :

Python
for nom, note in notes.items():
    print(nom, note)

Méthodes utiles :

Python
notes.keys()      # les clés
notes.values()    # les valeurs
notes.items()     # les couples clé-valeur

Exercices

Exercice 11 — Carnet de notes

Python
notes = {
    "Alice": 15,
    "Mehdi": 12,
    "Lina": 17,
    "Noah": 9
}

notes["Sofia"] = 14
notes["Noah"] = 10

for nom, note in notes.items():
    print(nom, ":", note)

Exercice 12 — Moyenne d’une classe

Python
def moyenne_classe(notes):
    if len(notes) == 0:
        return None
    return sum(notes.values()) / len(notes)

notes = {"Alice": 15, "Mehdi": 12, "Lina": 17, "Noah": 10}
print(moyenne_classe(notes))

Fiche 8 — Chaînes de caractères

Ce qu’il faut savoir

Une chaîne est une suite de caractères.

Python
mot = "python"

Accès :

Python
mot[0]    # 'p'
mot[-1]   # 'n'

Parcours :

Python
for lettre in mot:
    print(lettre)

Tranches :

Python
mot[1:4]    # 'yth'
mot[::-1]   # inverse la chaîne

Exercices

Exercice 13 — Compter les voyelles

Python
def compter_voyelles(mot):
    voyelles = "aeiouyAEIOUY"
    compteur = 0
    for lettre in mot:
        if lettre in voyelles:
            compteur += 1
    return compteur

print(compter_voyelles("python"))

Exercice 14 — Palindrome

Python
def est_palindrome(mot):
    mot = mot.lower()
    return mot == mot[::-1]

print(est_palindrome("radar"))
print(est_palindrome("python"))

Fiche 9 — Algorithme de dichotomie

Idée générale

La dichotomie consiste à chercher une valeur dans une liste triée en coupant la zone de recherche en deux à chaque étape.

Condition indispensable : la liste doit être triée.

Exemple

On cherche 7 dans :

Python
[1, 3, 5, 7, 9, 11, 13]

On regarde l’élément du milieu. Si la valeur cherchée est plus petite, on continue à gauche ; si elle est plus grande, on continue à droite.

Code à connaître

Python
def recherche_dichotomique(tab, valeur):
    gauche = 0
    droite = len(tab) - 1

    while gauche <= droite:
        milieu = (gauche + droite) // 2

        if tab[milieu] == valeur:
            return milieu
        elif tab[milieu] < valeur:
            gauche = milieu + 1
        else:
            droite = milieu - 1

    return -1

nombres = [1, 3, 5, 7, 9, 11, 13]
print(recherche_dichotomique(nombres, 7))
print(recherche_dichotomique(nombres, 8))

À retenir

Exercice 15

Modifier la fonction pour afficher les valeurs de gauche, droite et milieu à chaque tour de boucle.


Fiche 10 — Algorithme glouton

Idée générale

Un algorithme glouton construit une solution étape par étape en faisant à chaque fois le choix qui semble le meilleur immédiatement.

Attention : un choix localement optimal ne donne pas toujours une solution globalement optimale.

Exemple classique : rendu de monnaie

On veut rendre une somme avec le moins de pièces possible.

Pour le système européen, on peut prendre d’abord les plus grosses pièces.

Code à connaître

Python
def rendu_monnaie(somme):
    pieces = [200, 100, 50, 20, 10, 5, 2, 1]
    resultat = []

    for piece in pieces:
        while somme >= piece:
            resultat.append(piece)
            somme -= piece

    return resultat

print(rendu_monnaie(287))

Résultat possible :

Python
[200, 50, 20, 10, 5, 2]

Cela correspond à 2,87 € avec des centimes.

Variante avec dictionnaire

Python
def rendu_monnaie_detail(somme):
    pieces = [200, 100, 50, 20, 10, 5, 2, 1]
    resultat = {}

    for piece in pieces:
        nb = somme // piece
        if nb > 0:
            resultat[piece] = nb
            somme = somme % piece

    return resultat

print(rendu_monnaie_detail(287))

Exercice 16

Écrire une fonction qui calcule le nombre total de pièces utilisées dans le rendu de monnaie.


Fiche 11 — Tri par insertion

Idée générale

Le tri par insertion trie la liste comme on trie des cartes dans sa main.

On parcourt la liste de gauche à droite. À chaque étape, on insère l’élément courant à sa bonne place dans la partie déjà triée.

Code à connaître

Python
def tri_insertion(tab):
    for i in range(1, len(tab)):
        valeur = tab[i]
        j = i - 1

        while j >= 0 and tab[j] > valeur:
            tab[j + 1] = tab[j]
            j -= 1

        tab[j + 1] = valeur

    return tab

nombres = [8, 3, 5, 1, 9, 2]
print(tri_insertion(nombres))

À retenir

Exercice 17

Ajouter un print(tab) dans la boucle pour observer l’évolution de la liste.


Fiche 12 — Tri par sélection

Idée générale

Le tri par sélection cherche le plus petit élément restant et le place au début de la zone non triée.

Code à connaître

Python
def tri_selection(tab):
    for i in range(len(tab)):
        indice_min = i

        for j in range(i + 1, len(tab)):
            if tab[j] < tab[indice_min]:
                indice_min = j

        tab[i], tab[indice_min] = tab[indice_min], tab[i]

    return tab

nombres = [8, 3, 5, 1, 9, 2]
print(tri_selection(nombres))

À retenir

Exercice 18

Modifier le tri par sélection pour trier une liste dans l’ordre décroissant.


Fiche 13 — Débogage et tests

Erreurs fréquentes

Oublier les deux-points

Python
if age >= 18:
    print("Majeur")

Mauvaise indentation

Python
for i in range(5):
    print(i)

Confondre = et ==

Python
x = 5      # affectation
x == 5     # comparaison

Oublier de convertir input

Python
age = int(input("Âge : "))

Tester une fonction

Python
def carre(n):
    return n * n

assert carre(3) == 9
assert carre(0) == 0
assert carre(-4) == 16
print("Tests réussis")

Mini-projet final — Gestionnaire de classe

Objectif

Créer un programme complet qui gère les notes d’une classe avec un dictionnaire.

Chaque élève est associé à une liste de notes.

Exemple :

Python
classe = {
    "Alice": [15, 12, 17],
    "Mehdi": [10, 14],
    "Lina": [18, 16, 19]
}

Fonctionnalités attendues

Le programme doit proposer un menu :

TEXT
1. Ajouter un élève
2. Ajouter une note à un élève
3. Afficher tous les élèves
4. Afficher la moyenne d’un élève
5. Afficher la moyenne de la classe
6. Afficher le meilleur élève
7. Quitter

Correction possible

Python
def moyenne_liste(notes):
    if len(notes) == 0:
        return None
    return sum(notes) / len(notes)


def ajouter_eleve(classe):
    nom = input("Nom de l'élève : ")
    if nom in classe:
        print("Cet élève existe déjà.")
    else:
        classe[nom] = []
        print("Élève ajouté.")


def ajouter_note(classe):
    nom = input("Nom de l'élève : ")
    if nom not in classe:
        print("Élève inconnu.")
    else:
        note = float(input("Note : "))
        if 0 <= note <= 20:
            classe[nom].append(note)
            print("Note ajoutée.")
        else:
            print("La note doit être comprise entre 0 et 20.")


def afficher_eleves(classe):
    if len(classe) == 0:
        print("Aucun élève.")
    else:
        for nom, notes in classe.items():
            print(nom, ":", notes)


def moyenne_eleve(classe):
    nom = input("Nom de l'élève : ")
    if nom not in classe:
        print("Élève inconnu.")
    else:
        moyenne = moyenne_liste(classe[nom])
        if moyenne is None:
            print("Aucune note pour cet élève.")
        else:
            print("Moyenne de", nom, ":", moyenne)


def moyenne_classe(classe):
    toutes_les_notes = []
    for notes in classe.values():
        toutes_les_notes.extend(notes)
    return moyenne_liste(toutes_les_notes)


def meilleur_eleve(classe):
    meilleur_nom = None
    meilleure_moyenne = None

    for nom, notes in classe.items():
        moy = moyenne_liste(notes)
        if moy is not None:
            if meilleure_moyenne is None or moy > meilleure_moyenne:
                meilleure_moyenne = moy
                meilleur_nom = nom

    return meilleur_nom, meilleure_moyenne


classe = {}
continuer = True

while continuer:
    print("\nMenu")
    print("1. Ajouter un élève")
    print("2. Ajouter une note à un élève")
    print("3. Afficher tous les élèves")
    print("4. Afficher la moyenne d’un élève")
    print("5. Afficher la moyenne de la classe")
    print("6. Afficher le meilleur élève")
    print("7. Quitter")

    choix = input("Choix : ")

    if choix == "1":
        ajouter_eleve(classe)
    elif choix == "2":
        ajouter_note(classe)
    elif choix == "3":
        afficher_eleves(classe)
    elif choix == "4":
        moyenne_eleve(classe)
    elif choix == "5":
        moy = moyenne_classe(classe)
        if moy is None:
            print("Aucune note dans la classe.")
        else:
            print("Moyenne de la classe :", moy)
    elif choix == "6":
        nom, moy = meilleur_eleve(classe)
        if nom is None:
            print("Impossible : aucune note.")
        else:
            print("Meilleur élève :", nom, "avec", moy)
    elif choix == "7":
        continuer = False
    else:
        print("Choix invalide.")

Mode d’emploi simple de Thonny

1. Installer Thonny

Thonny est un environnement de programmation Python adapté aux débutants.

Sous Windows

  1. Aller sur le site officiel de Thonny.
  2. Télécharger l’installateur Windows correspondant à l’ordinateur.
  3. Lancer le fichier téléchargé.
  4. Suivre les étapes d’installation.
  5. Ouvrir Thonny depuis le menu Démarrer.

Sous macOS

  1. Aller sur le site officiel de Thonny.
  2. Télécharger la version adaptée au Mac : Intel ou Apple Silicon.
  3. Ouvrir le fichier .pkg.
  4. Suivre les étapes d’installation.
  5. Ouvrir Thonny depuis le dossier Applications.

Sous Linux

Méthode officielle possible :

BASH
wget -qO- https://thonny.org/installer-for-linux | bash

Autres possibilités selon la distribution : Flatpak, Snap, gestionnaire de paquets, ou installation avec pip.

2. Découvrir l’interface

Dans Thonny, on trouve généralement :

3. Créer et exécuter un programme

  1. Ouvrir Thonny.
  2. Écrire le programme dans la zone principale.
  3. Enregistrer le fichier avec un nom qui se termine par .py, par exemple revision.py.
  4. Cliquer sur le bouton vert ou appuyer sur F5.
  5. Lire le résultat dans la console.

Exemple :

Python
print("Bonjour NSI")

4. Utiliser la console

La console permet de tester rapidement des instructions :

Python
2 + 3
len("python")

Mais pour les exercices complets, il vaut mieux écrire le programme dans un fichier .py.

5. Ajouter une bibliothèque

Méthode simple :

  1. Ouvrir Thonny.
  2. Aller dans Outils puis Manage packages... ou Gérer les paquets....
  3. Chercher le nom de la bibliothèque, par exemple matplotlib.
  4. Cliquer sur Install.
  5. Attendre la fin de l’installation.
  6. Tester avec :
Python
import matplotlib
print("Bibliothèque installée")

6. Installer une bibliothèque avec pip

Si la méthode graphique ne fonctionne pas, on peut utiliser un terminal ou le shell système.

Exemple :

BASH
pip install matplotlib

Selon l’installation, il peut être nécessaire d’utiliser :

BASH
python -m pip install matplotlib

ou :

BASH
python3 -m pip install matplotlib

7. Conseils aux élèves


Banque d’exercices rapides

Variables

  1. Demander deux nombres et afficher leur somme.
  2. Demander un âge et afficher l’âge dans 10 ans.
  3. Convertir des secondes en minutes et secondes.

Conditions

  1. Tester si un nombre est positif, négatif ou nul.
  2. Tester si une note est valide entre 0 et 20.
  3. Déterminer le plus grand de trois nombres.

Boucles

  1. Afficher les nombres de 1 à 100.
  2. Afficher les nombres pairs de 0 à 50.
  3. Calculer le produit des entiers de 1 à n.

Listes

  1. Compter le nombre de notes supérieures à 10.
  2. Trouver l’indice de la meilleure note.
  3. Créer une nouvelle liste avec les notes multipliées par 2.

Tuples

  1. Échanger deux variables avec un tuple.
  2. Représenter des points par des tuples.
  3. Calculer la distance entre deux points.

Dictionnaires

  1. Compter les occurrences des lettres dans un mot.
  2. Associer des capitales à des pays.
  3. Trouver l’élève qui a la meilleure note.

Algorithmes

  1. Tester une recherche dichotomique sur une liste triée.
  2. Comparer le tri par insertion et le tri par sélection.
  3. Adapter le rendu de monnaie avec une autre liste de pièces.