Chapitre 1 : Découvrir Python - Variables et entrées/sorties¶
Programme officiel (B.O.)¶
B.O. spécial n° 1 du 22 janvier 2019 - SNT Seconde
| Contenus | Capacités attendues |
|---|---|
| Affectations, variables | Écrire et développer des programmes avec des variables. |
| Séquences d'instructions | Comprendre et écrire une suite ordonnée d'instructions. |
Instructions conditionnelles (if, elif, else) |
Programmer des choix dans un algorithme. |
Boucles bornées (for) et non bornées (while) |
Programmer des répétitions. |
| Définitions et appels de fonctions | Décomposer un programme en fonctions réutilisables. |
1. Qu'est-ce que la programmation ?¶
Programmer, c'est écrire une suite d'instructions dans un langage compris par l'ordinateur pour lui faire accomplir une tâche. En SNT, le langage utilisé est Python, créé en 1991 par Guido van Rossum. Python est très répandu dans l'enseignement, la science des données, le développement web et l'intelligence artificielle.
Pourquoi Python ?
Python est choisi au lycée pour sa syntaxe simple et lisible, proche de l'anglais. Il permet de se concentrer sur la logique de programmation plutôt que sur des détails techniques complexes.
1.1. Les environnements de travail¶
Pour écrire et exécuter du Python, plusieurs outils existent :
| Outil | Description | Idéal pour |
|---|---|---|
| Console Python (interpréteur) | On tape une instruction, Python l'exécute immédiatement | Tester rapidement une idée |
Fichier .py (script) |
On écrit un programme complet puis on l'exécute d'un bloc | Écrire de vrais programmes |
| Thonny | Éditeur simple avec débogueur intégré | Débuter en Python |
| EduPython | Suite pédagogique (éditeur + modules scientifiques) | Maths et sciences |
| Basthon (en ligne) | Python dans le navigateur, rien à installer | Travailler sans installation |
| VS Code | Éditeur professionnel avec extensions Python | Aller plus loin |
1.2. Console interactive vs script¶
La console exécute chaque ligne immédiatement et affiche le résultat. Le symbole >>> s'appelle le prompt : c'est Python qui attend votre instruction.
# fichier : mon_programme.py
nom = input("Comment t'appelles-tu ? ")
print(f"Bonjour {nom} !")
print("Bienvenue en cours de SNT.")
Un script est un fichier texte contenant plusieurs instructions. On l'exécute d'un bloc avec le bouton « Exécuter » de l'éditeur ou via le terminal : python mon_programme.py.
Astuce
En console, Python affiche automatiquement le résultat d'une expression. Dans un script, il faut utiliser print() pour voir quelque chose à l'écran.
1.3. Les commentaires¶
Les commentaires sont des textes ignorés par Python, destinés aux humains qui lisent le code :
# Ceci est un commentaire sur une ligne entière
age = 16 # Ceci est un commentaire en fin de ligne
# Les commentaires servent à :
# - expliquer POURQUOI on fait quelque chose
# - rendre le code plus lisible
# - désactiver temporairement une ligne de code
Attention
Python n'a pas de commentaire multi-lignes à proprement parler. On utilise # sur chaque ligne :
2. Variables et affectations¶
2.1. Qu'est-ce qu'une variable ?¶
Une variable est un espace en mémoire dans lequel on stocke une valeur. On lui donne un nom pour pouvoir la retrouver et l'utiliser plus tard. On peut la voir comme une étiquette collée sur une boîte contenant une valeur.
L'opération = s'appelle l'affectation : elle associe une valeur (à droite) à un nom de variable (à gauche).
Le = n'est pas l'égalité mathématique !
En Python, = signifie « stocker la valeur de droite dans la variable de gauche ». L'égalité mathématique s'écrit ==.
2.2. Les types de données de base¶
Chaque valeur en Python a un type qui détermine ce qu'on peut en faire :
| Type | Description | Exemples | Remarques |
|---|---|---|---|
int |
Nombre entier | 42, -7, 0 |
Pas de limite de taille en Python ! |
float |
Nombre à virgule | 3.14, -0.5, 1.0 |
Attention : on utilise le point, pas la virgule |
str |
Chaîne de caractères (texte) | "Bonjour", 'Python' |
Délimitée par des guillemets simples ' ou doubles " |
bool |
Booléen (vrai ou faux) | True, False |
Toujours avec une majuscule ! |
On peut connaître le type d'une variable avec la fonction type() :
x = 42
print(type(x)) # <class 'int'>
y = 3.14
print(type(y)) # <class 'float'>
nom = "Alice"
print(type(nom)) # <class 'str'>
vrai = True
print(type(vrai)) # <class 'bool'>
Piège classique : le point décimal
En Python (et dans tous les langages de programmation), le séparateur décimal est le point ., jamais la virgule ,.
Piège classique : les guillemets autour des chaînes
Un texte doit toujours être entouré de guillemets. Sans guillemets, Python croit que c'est un nom de variable.
2.3. Nommer ses variables¶
Règles obligatoires (sinon Python refuse) :
- Le nom commence par une lettre ou un underscore
_ - Il ne contient que des lettres, chiffres et underscores (pas d'espaces, pas de tirets, pas d'accents)
- Il ne doit pas être un mot réservé de Python
# ✅ Noms valides
age = 16
nom_eleve = "Alice"
_compteur = 0
note2 = 15.5
# ❌ Noms invalides
2nd_note = 12 # SyntaxError : commence par un chiffre
nom-eleve = "Bob" # SyntaxError : le tiret est interdit
mon age = 16 # SyntaxError : les espaces sont interdits
for = 5 # SyntaxError : for est un mot réservé
Les 35 mots réservés de Python
Ces mots ont une signification spéciale et ne peuvent pas être utilisés comme noms de variables :
False, None, True, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield
Conventions (pas obligatoires, mais fortement recommandées) :
- Utiliser le snake_case : mots en minuscules séparés par des underscores
- Choisir des noms explicites qui décrivent le contenu
# ❌ Mauvais noms (fonctionnent mais incompréhensibles)
a = 16
b = "Alice"
x = 15.5
# ✅ Bons noms (on comprend immédiatement)
age_eleve = 16
prenom = "Alice"
note_maths = 15.5
Python distingue majuscules et minuscules
2.4. L'affectation en détail¶
Affectation simple¶
Lire x = x + 5
Cette ligne ne signifie pas « x est égal à x + 5 » (ce qui serait absurde en maths). Elle signifie : « calculer la valeur de x + 5 (soit 15), puis stocker le résultat dans x ». La variable x est mise à jour.
Affectation augmentée (raccourcis)¶
Python propose des raccourcis pour modifier une variable :
x = 10
x += 3 # Équivalent à : x = x + 3 → x vaut 13
x -= 2 # Équivalent à : x = x - 2 → x vaut 11
x *= 4 # Équivalent à : x = x * 4 → x vaut 44
x //= 5 # Équivalent à : x = x // 5 → x vaut 8
x %= 3 # Équivalent à : x = x % 3 → x vaut 2
x **= 4 # Équivalent à : x = x ** 4 → x vaut 16
Affectation multiple¶
On peut affecter plusieurs variables en une seule ligne :
# Variante 1 : plusieurs valeurs sur une ligne
x, y, z = 1, 2, 3
# Variante 2 : même valeur pour toutes
a = b = c = 0
# Astuce : échanger deux variables (très pratique !)
x, y = 10, 20
x, y = y, x # Maintenant x = 20 et y = 10
L'échange sans variable temporaire
Dans la plupart des langages, échanger deux variables nécessite une variable temporaire :
2.5. Conversions de types¶
On a souvent besoin de convertir une valeur d'un type à un autre :
# str → int
age = int("16") # 16
# str → float
taille = float("1.68") # 1.68
# int → str
texte = str(42) # "42"
# float → int (tronque la partie décimale, ne l'arrondit PAS)
n = int(3.7) # 3 (pas 4 !)
n = int(-3.7) # -3 (pas -4 !)
# int → float
x = float(5) # 5.0
# Vers booléen
bool(0) # False (0 est « faux »)
bool(42) # True (tout nombre non nul est « vrai »)
bool("") # False (chaîne vide est « fausse »)
bool("hello") # True (chaîne non vide est « vraie »)
Erreurs fréquentes de conversion
2.6. Opérations sur les nombres¶
| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
+ |
Addition | 7 + 3 |
10 |
- |
Soustraction | 7 - 3 |
4 |
* |
Multiplication | 7 * 3 |
21 |
/ |
Division (toujours un float) |
7 / 2 |
3.5 |
// |
Division entière (partie entière) | 7 // 2 |
3 |
% |
Modulo (reste de la division) | 7 % 3 |
1 |
** |
Puissance | 2 ** 10 |
1024 |
Pièges avec les divisions
# La division / renvoie TOUJOURS un float, même si le résultat est entier
10 / 2 # 5.0 (pas 5 !)
type(10 / 2) # <class 'float'>
# La division entière // tronque vers le bas (pas vers zéro !)
7 // 2 # 3 ✅ comme attendu
-7 // 2 # -4 ⚠️ pas -3 ! (arrondi vers le bas)
# Le modulo suit la même logique
7 % 3 # 1 (car 7 = 3 × 2 + 1)
-7 % 3 # 2 ⚠️ (car -7 = 3 × (-3) + 2)
À quoi sert le modulo % ?
Le modulo est très utile en programmation :
- Tester si un nombre est pair :
n % 2 == 0 - Tester si un nombre est divisible par k :
n % k == 0 - Extraire le dernier chiffre :
n % 10 - Boucler dans un intervalle (horloge, jours…) :
heure % 24
Priorité des opérations¶
Python respecte les mêmes règles de priorité qu'en mathématiques :
**(puissance) - priorité la plus haute*,/,//,%(multiplication, divisions, modulo)+,-(addition, soustraction) - priorité la plus basse
2 + 3 * 4 # 14 (pas 20 ! La multiplication est prioritaire)
(2 + 3) * 4 # 20 (les parenthèses changent l'ordre)
2 ** 3 ** 2 # 512 (= 2 ** 9, car ** s'évalue de droite à gauche)
En cas de doute, utilisez des parenthèses !
2.7. Opérations sur les chaînes de caractères¶
prenom = "Alice"
nom = "Martin"
# Concaténation (assemblage de chaînes)
nom_complet = prenom + " " + nom
print(nom_complet) # Alice Martin
# Répétition
ligne = "-" * 30
print(ligne) # ------------------------------
# Longueur
print(len(prenom)) # 5
# Accès à un caractère (l'index commence à 0 !)
print(prenom[0]) # A (premier caractère)
print(prenom[1]) # l (deuxième caractère)
print(prenom[-1]) # e (dernier caractère)
print(prenom[-2]) # c (avant-dernier)
Erreur fréquente : concaténer un nombre et une chaîne
Quelques méthodes utiles sur les chaînes¶
texte = "Bonjour le Monde"
texte.upper() # "BONJOUR LE MONDE" (tout en majuscules)
texte.lower() # "bonjour le monde" (tout en minuscules)
texte.capitalize() # "Bonjour le monde" (1re lettre en majuscule)
texte.replace("Monde", "Python") # "Bonjour le Python"
texte.count("o") # 3 (nombre d'occurrences de "o")
texte.startswith("Bon") # True
texte.endswith("de") # True
" espaces ".strip() # "espaces" (supprime les espaces autour)
"a,b,c".split(",") # ["a", "b", "c"] (découpe en liste)
Les chaînes sont immuables
On ne peut pas modifier un caractère individuel d'une chaîne :
Guillemets simples, doubles et triples¶
# Trois façons d'écrire une chaîne - elles sont équivalentes :
message1 = 'Bonjour'
message2 = "Bonjour"
# Utile quand la chaîne contient des guillemets :
phrase1 = "L'élève travaille" # Guillemets doubles autour d'une apostrophe
phrase2 = 'Il a dit "bonjour"' # Guillemets simples autour de guillemets doubles
# Triples guillemets : pour les textes sur plusieurs lignes
poeme = """Roses are red,
Violets are blue,
Python is great,
And so are you."""
# Caractères spéciaux avec l'antislash \
print("Première ligne\nDeuxième ligne") # \n = saut de ligne
print("Colonne1\tColonne2") # \t = tabulation
print("Il a dit : \"Bonjour\"") # \" = guillemet dans la chaîne
3. Entrées et sorties¶
3.1. Afficher avec print()¶
La fonction print() est très flexible. Voici toutes les façons de l'utiliser :
Les éléments sont automatiquement séparés par un espace et suivis d'un saut de ligne.
Paramètres utiles de print() :
# sep : changer le séparateur (par défaut : espace)
print("Alice", "Bob", "Charlie", sep=", ")
# Alice, Bob, Charlie
print("2026", "07", "06", sep="-")
# 2026-07-06
# end : changer ce qui est ajouté à la fin (par défaut : saut de ligne)
print("Chargement", end="...")
print("Terminé !")
# Chargement...Terminé !
# Afficher sans saut de ligne dans une boucle
for i in range(5):
print(i, end=" ")
# 0 1 2 3 4
3.2. Lire une saisie avec input()¶
La fonction input() affiche un message et attend que l'utilisateur tape quelque chose. Elle renvoie toujours une chaîne de caractères (str) :
Piège n° 1 : input() renvoie toujours un str
age = input("Ton âge : ") # L'utilisateur tape 16
print(type(age)) # <class 'str'> (c'est du texte, pas un nombre !)
print(age + 2) # ❌ TypeError: can only concatenate str to str
# Il faut CONVERTIR :
age = int(input("Ton âge : ")) # Pour un entier
taille = float(input("Ta taille : ")) # Pour un décimal
Piège n° 2 : l'utilisateur saisit n'importe quoi
4. Séquences d'instructions¶
Un programme Python est une séquence (suite ordonnée) d'instructions exécutées les unes après les autres, de haut en bas :
# Étape 1 : lire les données
longueur = float(input("Longueur du rectangle : "))
largeur = float(input("Largeur du rectangle : "))
# Étape 2 : calculer
aire = longueur * largeur
perimetre = 2 * (longueur + largeur)
# Étape 3 : afficher les résultats
print(f"Aire : {aire}")
print(f"Périmètre : {perimetre}")
L'ordre des instructions est crucial !
L'erreur NameError
C'est l'une des erreurs les plus fréquentes. Elle signifie que Python ne connaît pas le nom que vous utilisez :
Causes possibles :
- La variable n'a pas encore été créée (utilisée avant l'affectation)
- Faute de frappe dans le nom (
arieeau lieu deaire) - Oubli des guillemets autour d'un texte (
print(Bonjour)au lieu deprint("Bonjour"))