Pack de révision Python — Première NSI
Mode d’emploi du pack
Ce pack contient deux versions :
- Notebook Capytale : à ouvrir dans Capytale pour exécuter les cellules une par une.
- 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.
age = 16
prenom = "Alice"
moyenne = 14.5
admis = True
Types courants :
| Type | Exemple | Rôle |
|---|---|---|
int | 16 | entier |
float | 14.5 | nombre décimal |
str | "NSI" | chaîne de caractères |
bool | True ou False | booléen |
list | [12, 15, 9] | collection modifiable |
tuple | (3, 5) | collection non modifiable |
dict | { "Alice": 15 } | association clé-valeur |
Points importants :
"16" # chaîne de caractères
16 # entier
Ces deux valeurs ne sont pas du même type.
Méthodes utiles
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.
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.
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.
age = int(input("Âge : "))
if age >= 18:
print("Majeur")
else:
print("Mineur")
Opérateurs de comparaison :
| Opérateur | Signification |
|---|---|
== | égal à |
!= | différent de |
< | strictement inférieur |
<= | inférieur ou égal |
> | strictement supérieur |
>= | supérieur ou égal |
Opérateurs logiques :
and # et
or # ou
not # non
Exemple important : pair ou impair
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.
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
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.
for i in range(5):
print(i)
Affiche : 0, 1, 2, 3, 4.
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.
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
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
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.
def carre(n):
return n * n
print(carre(5))
Vocabulaire :
nest un paramètre ;5est un argument ;returnrenvoie un résultat.
Exercices
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.
notes = [12, 15, 9, 17]
Accès aux éléments :
print(notes[0]) # premier élément
print(notes[-1]) # dernier élément
Méthodes utiles :
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
for note in notes:
print(note)
Exercices
Exercice 7 — Moyenne d’une liste
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
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.
point = (3, 5)
On peut accéder aux éléments :
x = point[0]
y = point[1]
On peut aussi faire du déballage :
x, y = point
Différence essentielle :
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 :
- des coordonnées
(x, y); - un couple
(minimum, maximum); - une valeur composée qui ne doit pas être modifiée.
Exercices
Exercice 9 — Coordonnées
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
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.
notes = {
"Alice": 15,
"Mehdi": 12,
"Lina": 17
}
Accès à une valeur :
print(notes["Alice"])
Ajouter ou modifier :
notes["Noah"] = 10
notes["Mehdi"] = 14
Parcourir un dictionnaire :
for nom in notes:
print(nom, notes[nom])
Ou bien :
for nom, note in notes.items():
print(nom, note)
Méthodes utiles :
notes.keys() # les clés
notes.values() # les valeurs
notes.items() # les couples clé-valeur
Exercices
Exercice 11 — Carnet de notes
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
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.
mot = "python"
Accès :
mot[0] # 'p'
mot[-1] # 'n'
Parcours :
for lettre in mot:
print(lettre)
Tranches :
mot[1:4] # 'yth'
mot[::-1] # inverse la chaîne
Exercices
Exercice 13 — Compter les voyelles
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
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 :
[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
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
- La liste doit être triée.
- La recherche est très rapide.
- À chaque étape, on élimine environ la moitié des possibilités.
- Si la valeur est trouvée, on renvoie son indice.
- Sinon, on renvoie souvent
-1.
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
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 :
[200, 50, 20, 10, 5, 2]
Cela correspond à 2,87 € avec des centimes.
Variante avec dictionnaire
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
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
- La partie gauche de la liste est progressivement triée.
- On décale les éléments plus grands vers la droite.
- L’algorithme trie la liste en place.
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
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
- On sélectionne le minimum de la partie non triée.
- On l’échange avec l’élément en position
i. - Après chaque tour, un nouvel élément est définitivement placé.
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
if age >= 18:
print("Majeur")
Mauvaise indentation
for i in range(5):
print(i)
Confondre = et ==
x = 5 # affectation
x == 5 # comparaison
Oublier de convertir input
age = int(input("Âge : "))
Tester une fonction
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 :
classe = {
"Alice": [15, 12, 17],
"Mehdi": [10, 14],
"Lina": [18, 16, 19]
}
Fonctionnalités attendues
Le programme doit proposer un menu :
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
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
- Aller sur le site officiel de Thonny.
- Télécharger l’installateur Windows correspondant à l’ordinateur.
- Lancer le fichier téléchargé.
- Suivre les étapes d’installation.
- Ouvrir Thonny depuis le menu Démarrer.
Sous macOS
- Aller sur le site officiel de Thonny.
- Télécharger la version adaptée au Mac : Intel ou Apple Silicon.
- Ouvrir le fichier
.pkg. - Suivre les étapes d’installation.
- Ouvrir Thonny depuis le dossier Applications.
Sous Linux
Méthode officielle possible :
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 :
- la zone d’édition, où l’on écrit le programme ;
- la console, où apparaissent les résultats ;
- le bouton vert pour exécuter le programme ;
- le menu
Fichierpour enregistrer ; - le menu
Outilspour gérer Python et les bibliothèques.
3. Créer et exécuter un programme
- Ouvrir Thonny.
- Écrire le programme dans la zone principale.
- Enregistrer le fichier avec un nom qui se termine par
.py, par exemplerevision.py. - Cliquer sur le bouton vert ou appuyer sur
F5. - Lire le résultat dans la console.
Exemple :
print("Bonjour NSI")
4. Utiliser la console
La console permet de tester rapidement des instructions :
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 :
- Ouvrir Thonny.
- Aller dans
OutilspuisManage packages...ouGérer les paquets.... - Chercher le nom de la bibliothèque, par exemple
matplotlib. - Cliquer sur
Install. - Attendre la fin de l’installation.
- Tester avec :
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 :
pip install matplotlib
Selon l’installation, il peut être nécessaire d’utiliser :
python -m pip install matplotlib
ou :
python3 -m pip install matplotlib
7. Conseils aux élèves
- Toujours enregistrer le fichier avant d’exécuter.
- Lire les messages d’erreur : ils donnent souvent le numéro de ligne.
- Tester les fonctions avec plusieurs exemples.
- Ne pas nommer un fichier comme une bibliothèque, par exemple éviter
random.pyoumath.py. - Indenter avec 4 espaces.
- Écrire des petits programmes, les tester, puis les améliorer.
Banque d’exercices rapides
Variables
- Demander deux nombres et afficher leur somme.
- Demander un âge et afficher l’âge dans 10 ans.
- Convertir des secondes en minutes et secondes.
Conditions
- Tester si un nombre est positif, négatif ou nul.
- Tester si une note est valide entre 0 et 20.
- Déterminer le plus grand de trois nombres.
Boucles
- Afficher les nombres de 1 à 100.
- Afficher les nombres pairs de 0 à 50.
- Calculer le produit des entiers de 1 à n.
Listes
- Compter le nombre de notes supérieures à 10.
- Trouver l’indice de la meilleure note.
- Créer une nouvelle liste avec les notes multipliées par 2.
Tuples
- Échanger deux variables avec un tuple.
- Représenter des points par des tuples.
- Calculer la distance entre deux points.
Dictionnaires
- Compter les occurrences des lettres dans un mot.
- Associer des capitales à des pays.
- Trouver l’élève qui a la meilleure note.
Algorithmes
- Tester une recherche dichotomique sur une liste triée.
- Comparer le tri par insertion et le tri par sélection.
- Adapter le rendu de monnaie avec une autre liste de pièces.