Valeurs et variables
En algèbre, score = score + 5 n'a pas de solution. En Python, c'est une ligne de tous les jours : si score valait 10, il devient 15.
Le signe = ne veut pas dire « est égal à »
Montre à un élève de maths la ligne score = score + 5 et il te dira qu'elle est fausse : aucun nombre n'est égal à lui-même plus cinq. Il a raison pour l'algèbre, et c'est exactement pourquoi la ligne déroute la première fois qu'on la voit dans un programme. En Python, = n'affirme pas que deux choses sont égales. C'est une instruction avec un sens. On calcule d'abord le membre de droite, puis on attache le nom de gauche au résultat.
score = 10
score = score + 5
print(score)15Lis-la comme Python. Ligne 1 : le membre de droite est 10, le nom score désigne donc maintenant 10. Ligne 2 : le membre de droite est score + 5, soit 10 + 5, soit 15, donc score désigne maintenant 15. L'ancien 10 a disparu. La ligne 3 affiche ce que désigne score à cet instant. Un nom qui désigne une valeur ainsi s'appelle une variable, et la ligne qui lui donne une valeur est une affectation.
Un tableau de suivi suit chaque variable ligne par ligne
Quand plusieurs variables changent, tiens un tableau de suivi : une ligne par ligne de code, une colonne par variable, et note la valeur de chaque variable après l'exécution de cette ligne. C'est lent, et ça marche. La plupart des questions « pourquoi ça affiche ça ? » se règlent avec un tableau de suivi en moins d'une minute.
score = 10
bonus = score * 2
score = 0
print(score, bonus)0 20| Ligne | score | bonus |
|---|---|---|
| score = 10 | 10 | (aucune pour l'instant) |
| bonus = score * 2 | 10 | 20 |
| score = 0 | 0 | 20 |
| print(score, bonus) | 0 | 20 |
Regarde les deux dernières lignes. Passer score à 0 n'a pas changé bonus. Quand la ligne 2 s'est exécutée, Python a calculé 10 * 2 = 20 et a donné ce nombre à bonus. bonus contient le résultat, pas la recette, il ne garde donc aucun souvenir d'où vient le 20.
Chaque valeur a un type
Les valeurs existent en plusieurs sortes, appelées types. Les nombres entiers comme 42 sont des int. Les nombres à virgule, comme 3.5, sont des float. Le texte entre guillemets est un str. True et False sont des bool. La fonction intégrée type te dit lequel tu as. Le type compte parce qu'il décide de ce que fait une opération : 2 + 3 additionne, alors que "2" + "3" assemble deux chaînes en "23".
print(type(42))
print(type(3.5))
print(type("42"))
print(type(True))
print(2 + 3, "2" + "3")<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
5 23Règles pour les noms
Un nom de variable peut utiliser des lettres, des chiffres et le tiret bas _, mais il ne peut pas commencer par un chiffre ni contenir d'espaces. Les majuscules comptent comme des lettres différentes, donc Score et score sont deux variables distinctes. Certains mots, comme if, for et True, appartiennent au langage et ne peuvent pas servir de noms. Les programmeurs Python écrivent en général les noms en minuscules avec des tirets bas entre les mots, comme lunch_price, et choisissent des noms qui disent ce que la valeur signifie. x convient pour un test rapide, et seats_left est mieux dans un programme qu'une autre personne lira.
a = "left"
b = "right"
a, b = b, a
print(a, b)right leftLe dernier exemple échange deux valeurs en une ligne. Python calcule d'abord tout le membre de droite, b, a, puis seulement donne les deux résultats à a et b. Beaucoup d'autres langages ont besoin d'une troisième variable pour faire la même chose.
| variable | Un nom qui désigne une valeur |
| affectation | nom = valeur : calculer le membre de droite, puis attacher le nom |
| int | Nombres entiers : 7, -3, 2026 |
| float | Nombres à virgule : 3.5, 0.1 |
| str | Du texte entre guillemets |
| bool | True ou False |
| tableau de suivi | Un tableau de la valeur de chaque variable après chaque ligne |
- Qu'affiche ce code ?
x = 4 x = x + 3 print(x) - Qu'affiche ce code ?
a = 3 b = a a = 7 print(b) - Qu'affiche ce code ?
price = 1500 count = 3 total = price * count print(total) - Qu'affiche ce code ?
n = 2 n = n * n n = n * n print(n)48162
- Qu'affiche ce code ?
print(type(7.0)) - Qu'affiche ce code ?
print("7" + "7") - Lequel de ces noms est un nom de variable valide ?
- 2nd_place
- seats left
- seats_left
- for
- Qu'affiche ce code ?
a = "left" b = "right" a, b = b, a print(b) - Qu'affiche ce code ?
Score = 5 score = 9 print(Score)5914Une erreur
- Après x = 10 puis x + 1 seul sur une ligne, que vaut x ?
- 10
- 11
- x + 1
- Une erreur
- « 5 = x et x = 5 veulent dire la même chose. » Le nom doit être à gauche. 5 = x s'arrête avec SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '=' ?
- « bonus = score * 2 lie bonus à score pour de bon. » bonus reçoit le nombre que le calcul a donné à ce moment-là. Les changements ultérieurs de score ne le touchent pas, comme le montre le tableau de suivi.
- « Écrire x + 1 ajoute un à x. » Une expression seule ne change rien. Il faut x = x + 1, ou la forme courte x += 1.
- = veut dire « calcule le membre de droite, puis donne-lui ce nom ».
- Un tableau de suivi note chaque variable après chaque ligne.
- Types : int, float, str, bool. type() te dit lequel.
- Noms : lettres, chiffres, _ ; pas de chiffre au début ; la casse compte.
Sources de ce cours (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Consulté le: 2026-10-19