Cours Python · Module 1: Bases de Python
Les variables - les sentiers de la jungle
Dans cette leçon11
Bon retour ! Darwin à l'appareil. Le carnet de terrain se remplit : direction de marche, coordonnées du camp, nombre d'espèces. Le texte de print() disparaît dès qu'il est affiché, alors qu'un programme doit ranger ses données et y revenir. C'est le rôle des variables.
Que sont les variables ?
Imagine que pendant une expédition tu trouves différents objets :
- Une boussole qui indique la direction
- Une carte avec un lieu marqué
- Un carnet avec le nombre d'espèces découvertes
Chacun de ces objets a un nom et stocke une valeur. En Python, ce sont des variables - comme des bocaux étiquetés dans la tente des spécimens. Voici une entrée du carnet écrite en code :
1# La boussole pointe vers le nord
2direction = "Nord"
3
4# La carte montre des coordonnées
5latitude = -3.4653
6longitude = 29.3608
7
8# Compter les espèces découvertes
9species_count = 47
10
11# A-t-on trouvé une espèce rare ?
12rare_species_found = TrueLe signe = n'est pas une égalité mais une affectation : le nom à gauche est accroché à la valeur à droite. Rien ne s'est affiché - les variables attendent en mémoire.
Créer des variables
La syntaxe est toujours la même : un nom, un signe égal, une valeur. Seul le type de valeur change :
1# Syntaxe : nom_de_variable = valeur
2
3# Texte (chaînes de caractères)
4explorer_name = "Darwin"
5jungle_type = "tropicale"
6
7# Nombres entiers (integers)
8team_size = 5
9days_in_jungle = 14
10
11# Nombres décimaux (floats)
12temperature = 32.5
13humidity = 78.3
14
15# Valeurs logiques (booléens)
16is_safe = True
17found_water = FalseImportant : Python reconnaît automatiquement le type de la variable ! Tu n'as pas besoin de le déclarer. Les décimales s'écrivent avec un point : 32,5 ne provoque pas d'erreur, il crée une paire de nombres, 32 et 5.
Nommage des variables - les règles de la jungle
Un nom est un panneau sur le sentier : lisible pour toi et valide pour Python.
Autorisé :
Un nom peut contenir des lettres, des chiffres et des underscores, et on relie les mots par un underscore - c'est le style snake_case. Les crochets créent une liste, que tu verras plus tard :
1# Snake case (recommandé en Python)
2jungle_temperature = 30
3discovered_species = ["Python", "Perroquet", "Lion"]
4
5# Peut contenir des lettres, des chiffres, des underscores
6species_1 = "Python regius"
7species_2 = "Panthera leo"
8rare_species_2024 = "Nouvelle espèce"
9
10# Peut commencer par un underscore
11_private_notes = "Information secrète"
12__hidden_treasure = "Trésor"Par convention, un underscore au début signifie « à usage interne ».
Interdit :
Ces lignes provoquent une SyntaxError, donc Python refuserait de lancer le programme - d'où les commentaires. La dernière ligne montre la bonne version :
1# Ne peut pas commencer par un chiffre
2# 1st_species = "Erreur !" # SyntaxError
3
4# Ne peut pas contenir d'espaces ni de tirets
5# jungle temperature = 30 # SyntaxError
6# jungle-temperature = 30 # SyntaxError
7
8# Ne peut pas utiliser de caractères spéciaux
9# species! = "Erreur" # SyntaxError
10# species@ = "Erreur" # SyntaxError
11
12# Ne peut pas être un mot-clé Python
13# if = 5 # SyntaxError
14# for = 10 # SyntaxError
15# def = "texte" # SyntaxError
16
17jungle_temperature = 30 # correct : un underscore au lieu d'un espaceLe tiret est exclu, car Python le lit comme un moins : jungle-temperature est une soustraction, et on ne peut rien affecter à un calcul.
Les mots-clés Python (réservés) :
Les mots-clés ont un sens fixe dans le langage, ils ne peuvent donc pas servir de noms de variables :
1# Tu NE PEUX PAS utiliser ces noms comme variables :
2# False await else import pass
3# None break except in raise
4# True class finally is return
5# and continue for lambda try
6# as def from nonlocal while
7# assert del global not with
8# async elif if or yield
9
10import keyword
11print(len(keyword.kwlist)) # 35Tu peux toujours vérifier la liste dans keyword.kwlist. async et await y sont entrés avec Python 3.7, donc les vieux tableaux ne les ont pas.
Bonnes pratiques de nommage
Python acceptera le nom t, mais dans une semaine tu ne te souviendras plus de ce qu'il voulait dire. Compare les noms :
1# Noms descriptifs - tu sais immédiatement ce qu'ils stockent
2daily_temperature = 32
3discovered_species_count = 15
4expedition_start_date = "2024-11-24"
5
6# Mauvais noms - flous, courts
7t = 32 # C'est quoi t ?
8x = 15 # Que signifie x ?
9d = "2024-11-24" # Date de quoi ?
10
11# Snake case (style Python)
12jungle_humidity_level = 80
13
14# camelCase (courant en JavaScript et en Java) - pas pour les variables Python !
15jungleHumidityLevel = 80
16
17# Les noms longs sont OK s'ils sont descriptifs
18number_of_rare_species_discovered_in_2024 = 3 # Clair !Les deux styles fonctionnent, car Python ne vérifie pas le style. C'est une convention du guide PEP 8 : les variables en snake_case, le PascalCase (par ex. JungleExpedition) pour les classes. Adopte le snake_case dès le premier jour.
Afficher des variables
print() accepte une variable comme du texte, et une f-string, une chaîne précédée de la lettre f, insère les valeurs directement dans une phrase :
1explorer_name = "Darwin"
2expedition_day = 5
3
4# Affichage simple
5print(explorer_name) # Darwin
6print(expedition_day) # 5
7
8# Affichage avec du texte
9print("Explorateur :", explorer_name) # Explorateur : Darwin
10
11# F-string (la meilleure méthode !) - Python 3.6+
12print(f"Salut, {explorer_name} !")
13# Salut, Darwin !
14
15print(f"Jour d'expédition : {expedition_day}")
16# Jour d'expédition : 5
17
18# F-strings complexes
19species_found = 12
20days = 3
21print(f"Nous avons découvert {species_found} espèces en {days} jours !")
22# Nous avons découvert 12 espèces en 3 jours !
23
24print(f"Température : {30}°C") # Température : 30°CPython évalue tout ce qui se trouve entre les accolades {} : une variable, un calcul, même un simple nombre, comme à la dernière ligne. Sans le f, les accolades seraient affichées telles quelles. La virgule dans print() marche aussi, mais je te conseille les f-strings : elles se lisent mieux.
Changer la valeur des variables
Les variables peuvent changer de valeur (c'est pour ça qu'on les appelle « variables » !). Chaque jour apporte des découvertes, et on met à jour la même entrée :
1# Jour 1 de l'expédition
2species_count = 5
3print(f"Jour 1 : {species_count} espèces") # Jour 1 : 5 espèces
4
5# Jour 2 - on en a trouvé plus
6species_count = 12
7print(f"Jour 2 : {species_count} espèces") # Jour 2 : 12 espèces
8
9# Jour 3 - on ajoute de nouvelles découvertes
10species_count = species_count + 7 # 12 + 7 = 19
11print(f"Jour 3 : {species_count} espèces") # Jour 3 : 19 espècesChaque affectation efface l'ancienne valeur. À la dernière étape, Python calcule d'abord la partie droite (12 + 7), puis accroche le résultat au nom. Un simple species_count + 7 sans = ne changerait rien.
Plusieurs variables à la fois
Python permet des affectations astucieuses : plusieurs variables sur une ligne, une valeur de départ commune et l'échange de places :
1# Affecter plusieurs variables sur une ligne
2x, y, z = 10, 20, 30
3print(f"x={x}, y={y}, z={z}") # x=10, y=20, z=30
4
5# Même valeur pour plusieurs variables
6a = b = c = 0
7print(f"a={a}, b={b}, c={c}") # a=0, b=0, c=0
8
9# Échanger des valeurs
10first = "A"
11second = "B"
12print(f"Avant : first={first}, second={second}") # Avant : first=A, second=B
13
14first, second = second, first # Échange magique !
15print(f"Après : first={first}, second={second}") # Après : first=B, second=APendant l'échange, Python lit d'abord les deux valeurs, puis les affecte en croix, donc aucune variable auxiliaire n'est nécessaire. Le nombre de noms doit correspondre au nombre de valeurs : x, y = 1, 2, 3 donne une ValueError.
Input - collecter des données de l'utilisateur
Les données de l'utilisateur arrivent par input() : la fonction affiche une question, attend une réponse au clavier et la transmet au programme :
1# Question simple
2name = input("Comment t'appelles-tu ? ")
3print(f"Salut, {name} !")
4
5# input() renvoie TOUJOURS une chaîne (du texte) !
6age_text = input("Quel âge as-tu ? ")
7print(type(age_text)) # <class 'str'>
8
9# Conversion en nombre
10age = int(age_text) # Change string → int
11print(f"L'année prochaine tu auras {age + 1} ans")IMPORTANT : input() renvoie toujours une chaîne ! Un 25 tapé au clavier est le texte "25", et "25" + 1 provoque une TypeError. Seule une conversion donne un nombre : int() ou float().
Exemple pratique - Journal d'expédition
Réunissons tout dans un programme pour l'entrée du soir dans le journal : il demande les données, convertit les nombres et affiche un rapport :
1# Programme : Journal de l'explorateur
2print("=== Journal d'expédition ===")
3
4# Collecte des données
5explorer_name = input("Nom de l'explorateur : ")
6location = input("Lieu : ")
7species_found = int(input("Combien d'espèces as-tu découvertes aujourd'hui ? "))
8temperature = float(input("Température (°C) : "))
9notes = input("Notes du jour : ")
10
11# Affichage du rapport
12print("\n--- RAPPORT QUOTIDIEN ---")
13print(f"Explorateur : {explorer_name}")
14print(f"Lieu : {location}")
15print(f"Espèces découvertes : {species_found}")
16print(f"Température : {temperature}°C")
17print(f"Notes : {notes}")
18print("--- FIN DU RAPPORT ---")Dans int(input(...)), la réponse passe directement par la conversion, donc species_found est un nombre. Le champ location reste une chaîne, car on ne fait pas de calculs avec.
Exercice pratique
Essaie de créer par toi-même un programme qui :
- Demande ton nom
- Demande ton animal préféré
- Demande ton nombre préféré
- Affiche : « Salut {name} ! Ton animal préféré est {animal} et ton nombre préféré est {number} ! »
Code de cette leçon : main.py
1# Tâche : Crée un programme qui collecte les données de l'utilisateur
2
3# TODO : Demande le nom
4name = input("Comment t'appelles-tu ? ")
5
6# TODO : Demande l'animal préféré
7animal = input("Animal préféré : ")
8
9# TODO : Demande le nombre préféré
10number = input("Nombre préféré : ")
11
12# TODO : Affiche un message à l'aide d'une f-string
13print(f"Salut {name} ! Ton animal préféré est {animal} et ton nombre préféré est {number} !")Résumé
Avant de continuer, assure-toi que :
- Tu sais créer une variable et changer sa valeur
- Tu comprends les règles de nommage
- Tu affiches des variables avec
print()et les f-strings - Tu connais la différence entre
input()(string) etint(),float()
Dans la prochaine leçon, Darwin te montrera les types de données - comment classer les découvertes dans la jungle !
Retiens : une variable est un bocal étiqueté dans la tente du camp - le nom sur l'étiquette, la valeur dedans, et le contenu se change à tout moment.
Tu as repéré une erreur dans cette leçon ?
Teste tes connaissances
Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.
1. Quel nom de variable est VALIDE en Python ?
2. Quel style de nommage est recommandé pour les variables en Python ?
3. La fonction input() renvoie les données sous forme de :
4. Qu'est-ce qui sera affiché : print(f'Température : {30}°C') ?
Tâches pratiques dans le jeu
- Éditeur de code
Crée une variable explorer_name avec la valeur "Darwin" :
- Éditeur de code
Crée 4 variables de types différents : un texte (str), un nombre entier (int), un nombre décimal (float) et un booléen (bool) :
- Éditeur de code
Enregistre un prénom dans la variable name et affiche une salutation avec ce prénom en utilisant une f-string :
- Clique dans l'ordre
Construis un appel à print() qui affiche le texte Hello :
- Tri vertical
Ordonne les étapes du programme dans l'ordre :