Stage Toussaint · dès le 19 octobre
Majorant
📘 Fiche de cours · 1re année📐 MPSI💻 Informatique Informatique communeNiveau · Terminale → Sup

Variables, types et affectations

Les briques de base de Python pour bien démarrer la prépa : affectation, types int/float/bool/str, conversions, opérateurs (/ // %), f-strings — avec les pièges classiques et deux exercices corrigés.

Fiche rédigée par les mentors Majorant — alumni Polytechnique, CentraleSupélec et Mines Paris.

1 définitionsMis à jour le 2026-08-02

Vue d'ensemble

Avant même de parler d'algorithmes, il faut être parfaitement à l'aise avec les briques de base de Python : stocker une valeur dans une variable, connaître son type, et combiner des valeurs dans des expressions. Ce sont les automatismes que tu réactiveras à chaque ligne de code de la prépa : une boucle qui compte, une condition qui teste une parité, une fonction qui renvoie un résultat — tout repose sur des variables correctement affectées et des types maîtrisés. Cette fiche te les remet en place proprement, ligne par ligne, avec les pièges qui font perdre des points en début d'année et la manière de lire chaque instruction « comme le fait Python ».

Objectif passerelle Terminale → Sup — Ces notions sont supposées acquises dès la première semaine de prépa. On consolide ici les bases de NSI pour arriver avec de bons réflexes : comprendre ce que fait vraiment le signe =, ne jamais confondre un nombre et une chaîne, et savoir prévoir le résultat d'une expression sans exécuter le programme.

Prérequis

  • Savoir lancer un programme Python (console interactive ou éditeur)
  • Savoir afficher une valeur avec print(...)
  • Aucune notion de prépa n'est requise
🎯 Accompagnement Majorant

Tu arrives en prépa avec des bases fragiles en Python ? Mieux vaut les solidifier maintenant qu'en pleine année. Nos mentors alumni X · Centrale · Mines reprennent les fondamentaux avec toi, à ton rythme, avant que le programme ne s'accélère.

Trouver un mentor →

1. Variables et affectation

Définition 1.1 — Variable et affectation

Une variable est un nom associé à une valeur stockée en mémoire. L'affectation nom = valeur range la valeur de droite dans la variable de gauche. Le symbole = n'est pas une égalité mathématique : il se lit « reçoit ».

age = 17          # age reçoit la valeur 17
age = age + 1     # on lit age (17), on ajoute 1, on range 18 dans age
print(age)        # affiche 18
🔍 Décryptage ligne par ligne
age = 17Création + affectation. On crée la variable age et on y range l'entier 17.
age = age + 1La droite est évaluée d'abord. Python calcule age + 1 = 18 avec l'ancienne valeur, puis range 18 dans age. C'est pour ça que x = x + 1 a un sens en informatique alors que c'est faux en maths.
print(age)Affichage. print montre la valeur actuelle de age : 18.

Réaffectation : une variable peut changer de valeur

Une variable n'est pas figée : chaque nouvelle affectation écrase l'ancienne valeur. Seule la dernière compte.

score = 0     # score vaut 0
score = 10    # l'ancienne valeur 0 est perdue, score vaut 10
score = 25    # score vaut désormais 25
print(score)  # affiche 25
📝 Nommer ses variables. Un nom commence par une lettre (ou _) et peut contenir lettres, chiffres et _, sans espace. Évite les accents (convention d'usage). Choisis des noms parlants (vitesse, n_eleves) plutôt que a, b, x2.

Échanger deux variables en une ligne

Python permet d'affecter plusieurs variables d'un coup. C'est l'idiome classique pour échanger le contenu de deux variables sans variable temporaire :

a = 1
b = 2
a, b = b, a    # échange : a reçoit 2, b reçoit 1
print(a, b)    # affiche 2 1
🔍 Décryptage — l'échange a, b = b, a
a, b = b, aLa droite est calculée en entier d'abord. Python évalue le couple de droite (b, a) = (2, 1) avant toute affectation, puis range 2 dans a et 1 dans b. C'est pour ça que l'échange fonctionne sans variable intermédiaire.
print(a, b)Vérification. Les deux valeurs ont bien été permutées : 2 1.
⚠ Sans l'astuce, il faut une variable temporaire. Écrire naïvement a = b puis b = a ne marche pas : après a = b, l'ancienne valeur de a est déjà perdue. La forme a, b = b, a évite ce piège.

2. Les types de base : int, float, bool, str

Chaque valeur a un type, qui détermine ce qu'on peut en faire. Les quatre types de base :

Les quatre types fondamentaux
TypeRôleExemples
intentier0, 17, -5
floatnombre à virgule3.14, -0.5, 2.0
boolbooléenTrue, False
strchaîne de caractères"bonjour", 'A'
type(17)        # <class 'int'>
type(2.0)       # <class 'float'>  (le point décimal fait un float)
type(True)      # <class 'bool'>
type("17")      # <class 'str'>   (les guillemets font une chaîne)
🔍 Décryptage — lire le type d'une valeur
type(2.0)Le point décimal compte. 2.0 est un float, alors que 2 est un int : même valeur, types différents.
type(True)Le booléen. True et False (avec une majuscule) sont les deux valeurs de type bool : elles répondent à une question par oui / non.
type("17")Les guillemets font une chaîne. "17" est du texte (str), pas le nombre 17 : on ne peut pas l'additionner à un entier tel quel.

Convertir d'un type à l'autre

Les fonctions int(), float() et str() transforment une valeur d'un type vers un autre. On parle de conversion (ou cast).

int("17") + 3     # 20    : la chaîne "17" devient l'entier 17, puis + 3
float("3.5")      # 3.5   : la chaîne devient un float
int(3.9)          # 3     : vers l'entier, la partie décimale est TRONQUÉE (pas d'arrondi)
str(17) + " ans"  # "17 ans" : l'entier devient du texte, puis concaténation
🔍 Décryptage — les conversions
int("17") + 3Texte → entier. int(...) transforme la chaîne "17" en entier 17, puis + 3 donne 20.
int(3.9)float → entier : troncature. int coupe la partie décimale, il n'arrondit pas : int(3.9) vaut 3, pas 4.
str(17) + " ans"Nombre → texte. str(17) donne la chaîne "17", qu'on peut alors coller à un autre texte avec +.
📝 La valeur None. Il existe une valeur spéciale None (de type NoneType) qui représente « rien » ou « pas encore de valeur ». C'est notamment ce que renvoie une fonction qui ne renvoie explicitement rien. Retiens juste qu'elle existe : tu la recroiseras avec les fonctions.
⚠ Mélanger nombre et texte. "17" + 3 déclenche une erreur (TypeError) : on ne peut pas additionner une chaîne et un entier. Convertis d'abord avec int("17") — ou str(3) si tu voulais concaténer du texte.

3. Opérations et expressions

Une expression est un calcul qui produit une valeur. Les opérateurs arithmétiques :

7 + 2     # 9    addition
7 - 2     # 5    soustraction
7 * 2     # 14   multiplication
7 / 2     # 3.5  division (donne TOUJOURS un float)
7 // 2    # 3    division entière (quotient)
7 % 2     # 1    modulo (reste de la division)
2 ** 10   # 1024 puissance
🔍 Décryptage — les trois divisions à ne pas confondre
7 / 2Division « normale ». Résultat 3.5, toujours un float, même si ça tombe juste (4 / 2 vaut 2.0).
7 // 2Division entière. Donne le quotient entier : 3. Très utilisée (calcul d'un milieu, d'un chiffre…).
7 % 2Modulo. Donne le reste : 1. n % 2 == 0 teste si n est pair.
2 ** 10Puissance. Deux étoiles, pas ^ (qui existe en Python mais fait autre chose) : 2 ** 10 = 2 puissance 10 = 1024.

Priorité des opérateurs et parenthèses

Comme en maths, Python calcule d'abord les puissances, puis les multiplications / divisions (*, /, //, %), puis les additions / soustractions. À priorité égale, on lit de gauche à droite. Les parenthèses forcent l'ordre. Traçons 2 + 3 * 4 ** 2 :

Trace de 2 + 3 * 4 ** 2
ÉtapeCe que Python calculeExpression restante
14 ** 2 → 16 (puissance d'abord)2 + 3 * 16
23 * 16 → 48 (multiplication ensuite)2 + 48
32 + 48 → 50 (addition en dernier)50
2 + 3 * 4 ** 2      # 50  : puissance, puis *, puis +
(2 + 3) * 4 ** 2    # 80  : les parenthèses forcent 2 + 3 = 5 d'abord
(2 + 3) * (4 ** 2)  # 80  : parenthèses de lisibilité, même résultat
📝 En cas de doute, parenthèse. Ajouter des parenthèses ne coûte rien et rend l'intention explicite. (a + b) / 2 est plus sûr et plus clair que a + b / 2, qui ne calcule pas la même chose (ici seul b serait divisé par 2).

Insérer des valeurs dans du texte : les f-strings

Le préfixe f devant une chaîne permet d'écrire une expression entre accolades {...} : Python la calcule et insère le résultat dans le texte.

x = 5
print(f"x vaut {x}")            # x vaut 5
print(f"le double : {2 * x}")   # le double : 10
prix = 3.5
print(f"total : {prix:.2f} €")  # total : 3.50 €  (2 chiffres après la virgule)
🔍 Décryptage — les f-strings
f"x vaut {x}"Insertion simple. Entre accolades, {x} est remplacé par la valeur de x : on obtient "x vaut 5".
f"le double : {2 * x}"Une expression, pas juste un nom. On peut mettre un calcul complet : {2 * x} vaut 10, inséré dans le texte.
f"{prix:.2f}"Format d'affichage. Après les deux-points, .2f demande 2 décimales : 3.5 s'affiche 3.50. Pratique pour les prix et les résultats de mesure.
🎯 Prêt·e pour l'informatique de prépa ?

Ces automatismes se travaillent avant la rentrée. Nos mentors alumni X · Centrale · Mines t'entraînent sur des mini-exercices ciblés (types, expressions, saisie clavier) pour que tu arrives avec les bons réflexes. Un stage de remise à niveau et le premier chapitre d'info devient une formalité.

Découvrir les stages →

4. Lire une valeur au clavier

La fonction input(...) met le programme en pause, affiche un message, et attend que l'utilisateur tape quelque chose puis appuie sur Entrée.

Définition 4.1 — input renvoie TOUJOURS une chaîne

input(...) renvoie systématiquement un str, même si l'utilisateur tape des chiffres. Pour l'utiliser comme un nombre, il faut le convertir avec int(...) ou float(...).

nom = input("Ton prénom : ")     # nom est une chaîne
age = int(input("Ton âge : "))   # on lit une chaîne PUIS on la convertit en entier
print(f"Bonjour {nom}, tu auras {age + 1} ans l'an prochain.")
🔍 Décryptage — saisie clavier
input("Ton prénom : ")Attente + chaîne. Le message s'affiche, le programme attend la saisie, puis renvoie ce qui a été tapé sous forme de str.
int(input("Ton âge : "))Lire de l'intérieur vers l'extérieur. Python exécute d'abord input(...) (qui renvoie par ex. "17"), puis int(...) convertit cette chaîne en entier 17. On peut ainsi faire des calculs dessus.
{age + 1}Calcul dans la f-string. Comme age est un entier, age + 1 fonctionne et vaut 18.
⚠ Le piège classique : oublier la conversion. Si tu écris age = input("Ton âge : ") puis age + 1, Python plante avec un TypeError : age est la chaîne "17", et "17" + 1 n'a pas de sens. Il faut envelopper l'input dans int(...).

5. Exercices d'application

À faire de tête avant d'ouvrir le corrigé.

Exo 1Prévoir les valeursFacile

Que valent a et b à la fin ?

a = 3
b = a * 2
a = a + 5
Voir la correction détaillée
a = 3 : a vaut 3.
b = a * 2 : la droite est évaluée avec a = 3, donc b vaut 6. Changer a ensuite ne changera pas b.
a = a + 5 : a devient 3 + 5 = 8. Bilan : a = 8, b = 6.
Exo 2Quotient et resteIntermédiaire

Une durée est donnée en secondes = 130. Écris deux expressions donnant le nombre de minutes entières et le nombre de secondes restantes.

Voir la correction détaillée
Le nombre de minutes entières est le quotient : secondes // 60 = 130 // 60 = 2.
Les secondes restantes sont le reste : secondes % 60 = 130 % 60 = 10.
Donc 130 secondes = 2 min 10 s. Le couple (// , %) sert exactement à ça.
Exo 3Ordre des opérationsIntermédiaire

Sans exécuter, donne la valeur de chaque expression :

1 + 2 * 3
(1 + 2) * 3
10 // 3 + 1
2 ** 3 ** 2
Voir la correction détaillée
1 + 2 * 3 : la multiplication d'abord (2*3 = 6), puis 1 + 6 = 7.
(1 + 2) * 3 : les parenthèses forcent 1 + 2 = 3, puis 3 * 3 = 9.
10 // 3 + 1 : la division entière d'abord (10 // 3 = 3), puis 3 + 1 = 4.
2 ** 3 ** 2 : la puissance s'associe de droite à gauche, donc 3 ** 2 = 9 puis 2 ** 9 = 512.
Exo 4Saisie et conversionFacile

On veut lire un entier au clavier et afficher son carré. Corrige le programme suivant, qui plante :

n = input("Un entier : ")
print(f"Son carré : {n ** 2}")
Voir la correction détaillée
input renvoie une chaîne, donc n vaut par ex. "5" et n ** 2 échoue (on ne peut pas élever une chaîne au carré) : TypeError.
Il faut convertir : n = int(input("Un entier : ")). Alors n est l'entier 5 et n ** 2 vaut 25.

6. Erreurs classiques (les pièges qui coûtent des points)

Ces cinq erreurs reviennent chez presque tous les débutants. Les connaître à l'avance, c'est en perdre l'habitude avant même de commencer.

⚠ Confondre = et ==. = affecte (range une valeur), == teste l'égalité (renvoie un booléen). Écrire if x = 3 est une erreur de syntaxe ; il faut if x == 3.
⚠ Additionner une chaîne et un nombre. "17" + 3 lève une TypeError. Convertis : int("17") + 3 vaut 20, ou "17" + str(3) vaut la chaîne "173" — deux résultats très différents, choisis en connaissance de cause.
⚠ Oublier int() après input(). input renvoie toujours une chaîne. Faire des calculs directement dessus provoque une erreur ou un comportement inattendu (par ex. "3" * 2 vaut "33", pas 6 !). Enveloppe dans int(...) ou float(...).
⚠ Croire que 7 / 2 vaut 3. En Python, / renvoie toujours un float : 7 / 2 vaut 3.5 et même 4 / 2 vaut 2.0. Pour un quotient entier, utilise //.
⚠ Écraser une variable par erreur. Réutiliser le même nom pour deux choses différentes efface la première valeur. Après x = 10 puis x = "dix", il ne reste que la chaîne "dix" : l'entier a disparu. Nomme distinctement des données distinctes.

7. Pour aller plus loin

Une fois ces bases solides, tu réinvestis immédiatement les variables, les types et les expressions dans les chapitres suivants — ils s'appuient tous sur ce que tu viens de revoir :

  • Conditions et booléens — les tests ==, <, % et le type bool pilotent les if.
  • Boucles for et while — la réaffectation i = i + 1 et les compteurs sont le cœur des boucles.
  • Fonctions — paramètres, valeur de retour et la valeur None prolongent directement cette fiche.

Récap final — Ce qu'il faut absolument retenir

Tu dois pouvoir répondre « oui » sans hésiter à chaque point.

  • Sais-tu expliquer pourquoi x = x + 1 a un sens (la droite est évaluée d'abord) ?
  • Sais-tu qu'une réaffectation écrase l'ancienne valeur, et que seule la dernière compte ?
  • Sais-tu échanger deux variables avec a, b = b, a et expliquer pourquoi ça marche ?
  • Sais-tu distinguer int, float, bool, str et lire le type avec type(...) ?
  • Sais-tu convertir avec int(), float(), str(), et que int(3.9) tronque à 3 ?
  • Sais-tu à quoi sert la valeur None ?
  • Sais-tu la différence entre /, // et % ?
  • Sais-tu que 7 / 2 vaut 3.5 (un float) et 7 // 2 vaut 3 ?
  • Sais-tu ordonner un calcul avec la priorité des opérateurs et forcer l'ordre avec des parenthèses ?
  • Sais-tu écrire une f-string avec {x}, {2 * n} et un format {prix:.2f} ?
  • Sais-tu que input() renvoie une chaîne et qu'il faut int(input(...)) pour un entier ?
  • Ne confonds-tu jamais = (affectation) et == (test d'égalité) ?

Débloque la fiche complète

Théorèmes, démonstrations à savoir refaire, méthodes-types et pièges de concours : crée ton compte gratuit pour tout lire. Une seule fois pour toutes les fiches et ressources Majorant.

Gratuit · vos données restent confidentielles.

Valide tes acquis

Quiz — Variables et types

8 questions · une à la fois · seuil de maîtrise 80 %.

Informatique commune · Terminale → SupQuiz — Variables, types et affectationsQuestion 1 / 8
FacileChoix unique1 pt

Quel est le type de la valeur 2.0 en Python ?

Sélectionne une réponse pour valider.

Tu veux aller plus loin sur ce chapitre ?

Nos mentors ont passé les mêmes concours, en MPSI, deux à trois ans plus tôt. Ils reprennent ce chapitre avec toi — démonstrations détaillées, exercices type concours, oraux blancs.

Cours particuliers d'informatique en MPSI

Voir aussi : Cours particuliers d'informatique en prépa scientifique