edubun
Français

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)
Sortie
15

Lis-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.

Une variable fonctionne comme une étiquette. Après score = score + 5, l'étiquette passe à la nouvelle valeur 15 ; l'ancienne valeur 10 est laissée de côté.

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)
Sortie
0 20
Lignescorebonus
score = 1010(aucune pour l'instant)
bonus = score * 21020
score = 0020
print(score, bonus)020

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")
Sortie
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
5 23

Rè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)
Sortie
right left

Le 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.

variableUn nom qui désigne une valeur
affectationnom = valeur : calculer le membre de droite, puis attacher le nom
intNombres entiers : 7, -3, 2026
floatNombres à virgule : 3.5, 0.1
strDu texte entre guillemets
boolTrue ou False
tableau de suiviUn tableau de la valeur de chaque variable après chaque ligne
  1. Qu'affiche ce code ?
    x = 4
    x = x + 3
    print(x)
  2. Qu'affiche ce code ?
    a = 3
    b = a
    a = 7
    print(b)
  3. Qu'affiche ce code ?
    price = 1500
    count = 3
    total = price * count
    print(total)
  4. Qu'affiche ce code ?
    n = 2
    n = n * n
    n = n * n
    print(n)
    • 4
    • 8
    • 16
    • 2
  5. Qu'affiche ce code ?
    print(type(7.0))
  6. Qu'affiche ce code ?
    print("7" + "7")
  7. Lequel de ces noms est un nom de variable valide ?
    • 2nd_place
    • seats left
    • seats_left
    • for
  8. Qu'affiche ce code ?
    a = "left"
    b = "right"
    a, b = b, a
    print(b)
  9. Qu'affiche ce code ?
    Score = 5
    score = 9
    print(Score)
    • 5
    • 9
    • 14
    • Une erreur
  10. Après x = 10 puis x + 1 seul sur une ligne, que vaut x ?
    • 10
    • 11
    • x + 1
    • Une erreur
Erreurs fréquentes
  • « 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.
Note du professeurLe signe = est le plus gros reste des maths. Une habitude utile est de lire = à voix haute comme « reçoit » ou « devient » ( « score reçoit score plus cinq ») et jamais comme « égale ». Les tableaux de suivi méritent un vrai temps de classe : donne un programme de cinq lignes, demande le tableau avant que quiconque l'exécute, puis exécute-le et compare. L'échange a, b = b, a est un bon test pour savoir si un apprenant comprend que tout le membre de droite est calculé d'abord. Garde type() sous les yeux dès le début, car la surprise de "7" + "7" revient dans l'unité sur la saisie.
L'essentiel
  • = 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