Éducation Nationale Française · Seconde
Python : premiers programmes
I
Afficher
Un ordinateur ne fait rien de lui-même. Il exécute un programme : un texte écrit dans un langage de programmation. Le langage employé est Python. Un programme se tape dans un éditeur, puis s'exécute : la machine vérifie d'abord tout le texte, et s'il n'est pas du Python valide rien ne s'exécute ; sinon elle effectue les instructions l'une après l'autre, de haut en bas, et affiche ce que le programme lui demande d'afficher, ou un message d'erreur. La machine ne comprend rien de ce qu'elle lit : elle suit le texte exactement tel qu'il est écrit, caractère par caractère.
Définition — Programme et instruction
Un programme est une suite d'instructions. Par convention, chaque instruction s'écrit sur sa propre ligne. Exécuter le programme, c'est effectuer les instructions l'une après l'autre, dans l'ordre des lignes. Définition — L'instruction print
L'instruction print(...) affiche la valeur de ce qui est écrit entre ses parenthèses, puis termine la ligne. Un texte à afficher s'écrit entre guillemets doubles : un tel texte s'appelle une chaîne de caractères. Plusieurs éléments séparés par des virgules sont affichés sur la même ligne, séparés par une espace. Exemple
Qu'affiche le programme suivant ? print("Hello, world!")
print("My name is", "Ada")
Deux lignes, une par
print. Les guillemets délimitent les chaînes et ne sont pas affichés ; la virgule de la seconde ligne sépare deux éléments, affichés avec une espace entre eux. Hello, world!
My name is Ada Méthode — Le cycle écrire-exécuter-lire-corriger
Tout programme se construit avec les mêmes quatre étapes. - Écrire : taper l'instruction exactement, avec ses parenthèses et ses guillemets.
- Exécuter : lancer le programme et regarder ce qui apparaît.
- Lire : comparer ce qui apparaît avec ce qui était attendu, caractère par caractère.
- Corriger : quand la machine signale une erreur, lire le message : il nomme la ligne. Corriger le texte, puis exécuter de nouveau.
Exemple
Écrire un programme qui affiche le texte Hello, world! sur une ligne. print("Hello, world!") Le texte est entre guillemets doubles et à l'intérieur des parenthèses de print. L'exécution affiche exactement Hello, world!, sans les guillemets : les guillemets délimitent la chaîne, ils n'en font pas partie. Exemple
Écrire un programme qui affiche la carte de visite suivante, sur trois lignes. Ada Lovelace
Mathematician
London
Un
print par ligne : print("Ada Lovelace")
print("Mathematician")
print("London") Chaque print termine sa ligne : le print suivant en commence une nouvelle. La même carte peut être affichée par une seule instruction, avec la séquence spéciale barre-oblique-inverse-n, qui représente un retour à la ligne à l'intérieur d'une chaîne : print("Ada Lovelace\nMathematician\nLondon")
Lire un message d'erreur
Un guillemet ou une parenthèse manquante arrête le programme avant même son exécution. La machine affiche alors un message qui nomme l'erreur et la ligne.
print("Hello, world! File "main.py", line 1
print("Hello, world!
^
SyntaxError: unterminated string literal (detected at line 1) Une SyntaxError signifie que le texte n'est pas une instruction Python valide. Le message pointe l'endroit où la machine a détecté le problème, ici le guillemet ouvrant d'une chaîne qui ne se termine jamais ; la faute réelle peut être ailleurs sur la ligne, ici à sa fin, où le guillemet fermant et la parenthèse fermante manquent.
Guillemets dans une chaîne
Une chaîne peut aussi s'écrire entre guillemets simples. C'est utile quand le texte lui-même contient une apostrophe ou des guillemets doubles :
print('She said "hello".')
print("It's Monday.") She said "hello".
It's Monday. La chaîne 'It's Monday.' serait une erreur : l'apostrophe fermerait la chaîne trop tôt.
Texte ou calcul
Ce qui est entre guillemets est affiché tel qu'il est écrit. Ce qui n'est pas entre guillemets est d'abord calculé.
print("2 + 3")
print(2 + 3) 2 + 3
5 Calculer, c'est cette seconde sorte d'instruction : une expression, évaluée avant d'être affichée.
Compétences à pratiquer
- Prédire un affichage
- Hello world
- Dessiner avec des caractères
II
Calculer
Python calcule avec les nombres comme le fait une calculatrice, avec des opérations écrites d'une façon fixée. Un calcul écrit dans un programme est une expression ; à l'exécution, la machine remplace l'expression par sa valeur. Toute valeur a un type, et le type décide de ce que l'on peut faire avec la valeur.
Définition — Types
Toute valeur a un type. Trois types de base sont : - int, les nombres entiers, positifs ou négatifs, écrits comme d'habitude :
7,-3,2026; - float, les nombres décimaux, écrits avec un point et jamais avec une virgule :
3.5,2.0,-0.25; - str, les chaînes de caractères, écrites entre guillemets :
"Hello","8".
print(type(...)) affiche le type d'une valeur. La chaîne "8" est un texte d'un caractère ; ce n'est pas le nombre 8. Exemple
Qu'affiche le programme suivant ? print(type(7))
print(type(3.5))
print(type("8"))
print(type(6 / 2)) <class 'int'>
<class 'float'>
<class 'str'>
<class 'float'> La dernière ligne montre qu'une division avec / donne toujours un float, même quand elle tombe juste : 6 / 2 vaut 3.0, pas 3. Définition — Opérations sur les nombres
Les sept opérations sur les nombres s'écrivent avec les symboles suivants : -
+pour l'addition et-pour la soustraction ; -
*pour la multiplication ; -
/pour la division, dont le résultat est toujours un float ; -
//pour le quotient entier et \(\pourcent\) pour le reste de la division de deux entiers ; -
**pour la puissance.
Exemple
Qu'affiche le programme suivant ? print(7 + 2) # addition
print(7 - 2) # subtraction
print(7 * 2) # multiplication
print(7 / 2) # division
print(7 // 2) # integer quotient
print(7 % 2) # remainder
print(7 ** 2) # power 9
5
14
3.5
3
1
49 Les commentaires sont ignorés. La division donne le float 3.5 ; le quotient entier de \(7\) par \(2\) est \(3\) et le reste est \(1\), puisque \(7 = 3 \times 2 + 1\) ; la puissance 7 ** 2 vaut \(7^2 = 49\). Définition — Priorités
Les puissances sont calculées d'abord, puis les multiplications, divisions, quotients et restes, puis les additions et soustractions. Les opérations de même priorité sont calculées de gauche à droite. Les parenthèses changent cet ordre, exactement comme en mathématiques ; dans le doute, on ajoute des parenthèses. Exemple
Qu'affiche le programme suivant ? print(2 + 3 * 4)
print((2 + 3) * 4)
print(2 ** 3 * 2) 14
20
16 Sur la première ligne, le produit est calculé avant la somme : \(2 + 12 = 14\). Sur la deuxième, les parenthèses imposent la somme d'abord : \(5 \times 4 = 20\). Sur la troisième, la puissance vient en premier : \(8 \times 2 = 16\). Méthode — Traduire une formule en expression
- Repérer les nombres et les grandeurs de la formule.
- Écrire chaque opération explicitement : un produit s'écrit avec
*, un quotient avec/; rien n'est implicite. - Ajouter des parenthèses autour de chaque groupe à calculer en premier : un numérateur, un dénominateur, une somme dans un produit.
- Tester avec des valeurs dont le résultat est connu.
Exemple
Une température de \(25\) degrés Celsius se convertit en degrés Fahrenheit par la formule \(F = \dfrac{9C}{5} + 32\). Écrire un programme qui affiche le résultat de la conversion.
Le produit \(9C\) s'écrit
9 * 25, le quotient par \(5\) avec /, et l'addition vient en dernier : print(9 * 25 / 5 + 32) 77.0 Le résultat est un float à cause de la division. Le test avec une valeur connue confirme la formule : \(0\) degré Celsius donne 9 * 0 / 5 + 32, soit 32.0.
La constante pi
Python fournit la valeur de \(\pi\) dans son module de mathématiques. La ligne
import math, écrite une fois en tête du programme, donne accès à la constante math.pi, avec quinze décimales. import math
print(math.pi)
print(math.pi * 2 ** 2) 3.141592653589793
12.566370614359172
Exemple
Un film dure \(135\) minutes. Écrire un programme qui affiche sa durée en heures et minutes, sous la forme 2 h 15 min.
Le nombre d'heures est le quotient entier de \(135\) par \(60\), et les minutes restantes sont le reste :
print(135 // 60, "h", 135 % 60, "min") 2 h 15 min L'opérateur // garde la partie entière du quotient, \(2\) ; le reste est \(135 - 2 \times 60 = 15\). Une division avec / aurait donné 2.25, ce qui n'est pas demandé. Définition — Texte et nombres ensemble
Entre deux chaînes, + les met bout à bout : "Total: " + "15" vaut "Total: 15" ; str(15) transforme le nombre 15 en la chaîne "15". Une f-string fait les deux en une seule étape : c'est une chaîne précédée de la lettre f, dans laquelle une expression entre accolades, nombre ou chaîne, est remplacée par sa valeur. Un format après un deux-points fixe l'affichage : :.2f arrondit l'affichage à deux décimales. Exemple
Qu'affiche le programme suivant ? print("Total: " + str(12 + 3) + " euros")
print(f"Total: {12 + 3} euros")
print(f"Price: {12 * 1.2:.2f} euros") Total: 15 euros
Total: 15 euros
Price: 14.40 euros Les deux premières lignes sont le même texte, construit de deux façons : en mettant bout à bout trois chaînes, ou par une f-string dans laquelle les accolades sont remplacées par la valeur \(15\). Sur la troisième ligne, le format :.2f arrondit l'affichage de 14.399999999999999 à deux décimales. Exemple
Un article coûte \(12\) euros hors taxes ; le taux de taxe est de \(20\) pour cent. Écrire un programme qui affiche le prix toutes taxes comprises, avec deux décimales, sous la forme Price: 14.40 euros.
Ajouter \(20\) pour cent, c'est multiplier par \(1{,}2\) :
print(f"Price: {12 * 1.2:.2f} euros") Price: 14.40 euros Sans le format :.2f, la machine afficherait 14.399999999999999 : la plupart des nombres décimaux sont stockés de façon approchée, et l'affichage d'un prix demande un nombre fixe de décimales.
Trois erreurs fréquentes
-
7 / 2vaut3.5, pas3: le quotient entier demande//. -
"3" + 4arrête le programme avec uneTypeError: une chaîne et un nombre ne s'additionnent pas. Le texte"3"doit d'abord être converti en nombre, avecint. -
0.1 + 0.2affiche0.30000000000000004: la plupart des nombres décimaux sont stockés de façon approchée par la machine. Un format comme:.2farrondit l'affichage.
Compétences à pratiquer
- Types et valeurs
- Expressions
- Quotient entier et reste
- Affichage formaté
III
Mémoriser
Un programme qui n'affiche que des valeurs fixes sert à peu de chose. Pour réutiliser une valeur, le programme lui donne un nom et la garde en mémoire : c'est une variable. Avec des variables, le même programme peut travailler avec des valeurs tapées par la personne qui l'exécute.
Définition — Variable et affectation
Une variable est un nom qui désigne une valeur gardée en mémoire. L'instruction nom = valeur est une affectation : elle calcule l'expression de droite, puis range sa valeur sous le nom de gauche. Le nom est choisi par le programmeur : des lettres, des chiffres et le caractère tiret bas, sans espace, en commençant par une lettre. Majuscule et minuscule font deux noms différents, et quelques mots réservés par Python, comme for ou if, ne peuvent pas servir de noms. Une seconde affectation au même nom remplace la valeur : l'ancienne valeur est perdue. Exemple
Qu'affiche le programme suivant ? age = 15
price = 12.5
city = "Lyon"
print(city, age, price)
age = 16
print(age) Lyon 15 12.5
16 Le premier print affiche les trois valeurs rangées sous leurs noms, séparées par des espaces. La ligne age = 16 remplace la valeur \(15\), qui est perdue ; le second print affiche la nouvelle valeur.
Le signe
= d'une affectation n'est pas le signe égal des mathématiques. L'instruction x = x + 1 n'est pas une équation, et il n'y a aucune solution à chercher : elle se lit : « calculer x + 1 avec la valeur actuelle de x, puis ranger le résultat dans x ». Si x valait \(4\), il vaut désormais \(5\). Le membre de droite est toujours calculé en premier, avec les valeurs du moment. x = 4
x = x + 1
print(x) # 5
Définition — Lire une valeur tapée par l'utilisateur
L'instruction input("...") affiche le texte entre guillemets, attend que l'utilisateur tape une ligne et appuie sur Entrée, et rend ce qui a été tapé, toujours sous forme de chaîne. Pour calculer avec la valeur tapée, il faut la convertir : int(...) donne un nombre entier, float(...) un nombre décimal. Exemple
L'utilisateur exécute le programme suivant et tape Ada, puis 15. Qu'apparaît-il à l'écran ? name = input("Your name? ")
age = int(input("Your age? "))
print("Hello,", name)
print("Next year you will be", age + 1) Your name? Ada
Your age? 15
Hello, Ada
Next year you will be 16 Chaque input affiche son invite, puis le texte tapé apparaît sur la même ligne. Le prénom est gardé comme chaîne ; l'âge est converti avec int, de sorte que age + 1 est le nombre \(16\). Méthode — Suivre un programme ligne par ligne
Pour prévoir ce qu'un programme affiche, ou pour trouver où il se trompe : - Lister les variables du programme.
- Exécuter chaque ligne dans l'ordre, à la main : pour une affectation, calculer le membre de droite avec les valeurs actuelles, puis écrire la nouvelle valeur de la variable de gauche.
- Écrire ce que chaque
printaffiche, au moment où il est exécuté. - Vérifier en ajoutant, dans le programme, un
printde la variable juste après la ligne douteuse, puis en exécutant.
Exemple
Qu'affiche le programme suivant ? a = 3
b = a * 2
a = a + b
print(a, b)
Ligne par ligne : après la ligne 1,
a vaut \(3\). Après la ligne 2, b vaut \(3 \times 2 = 6\). La ligne 3 calcule a + b avec les valeurs actuelles, \(3 + 6 = 9\), et range \(9\) dans a ; b ne change pas. Le programme affiche : 9 6 Exemple
Deux variables a et b contiennent deux valeurs. Écrire les instructions qui échangent leurs valeurs, de sorte que a finisse avec la valeur de b et b avec la valeur de a. a = 1
b = 2
# exchange here
print(a, b) # must display 2 1
Écrire d'abord
a = b perd la valeur de a : les deux variables contiendraient \(2\). Une troisième variable garde une copie : a = 1
b = 2
temp = a
a = b
b = temp
print(a, b) # 2 1 Ligne par ligne : temp reçoit \(1\) ; a reçoit la valeur de b, \(2\) ; b reçoit la valeur de temp, \(1\).
Deux messages d'erreur
-
NameError: name 'agee' is not defined: un nom est utilisé sans jamais avoir été affecté. La cause habituelle est une faute de frappe dans le nom, ou une affectation écrite après son utilisation ; les versions récentes de Python ajoutent une suggestion, commeDid you mean: 'age'?. -
TypeError: can only concatenate str (not "int") to str: un calcul mélange une chaîne et un nombre. La cause habituelle est une valeur venue deinpututilisée sansintnifloat.
age = input("Your age? ")
print(age + 1) # TypeError: age is a string
Compétences à pratiquer
- Affectation
- Lire une saisie
- Suites d'instructions
IV
Projet : un formulaire qui récapitule
Afficher, calculer et mémoriser suffisent à écrire un programme complet : il demande à l'utilisateur quelques informations, calcule à partir d'elles, et affiche un récapitulatif. Un tel programme se construit par étapes, chacune exécutée avant d'écrire la suivante.
Méthode — Construire un programme par étapes
- Écrire le but sous la forme de l'affichage exact attendu, avec des valeurs d'exemple.
- Découper le travail en trois étapes : lire les valeurs, calculer, afficher.
- Écrire la première étape seulement, l'exécuter, et vérifier ce qu'elle affiche.
- Ajouter l'étape suivante, exécuter de nouveau. Ne jamais ajouter deux étapes sans exécuter entre les deux.
- Tester le programme terminé avec deux jeux de valeurs différents.
Exemple
Écrire un programme qui demande un prénom, une ville et une année de naissance, puis affiche la carte ci-dessous, avec l'âge atteint en \(2026\). First name? Ada
City? London
Year of birth? 2010
--- Card ---
Ada, from London
Age in 2026: 16
Étape 1, lire. Trois
input ; l'année est convertie parce qu'elle sert dans une soustraction. name = input("First name? ")
city = input("City? ")
year = int(input("Year of birth? ")) Étape 2, calculer. L'âge atteint en \(2026\) est la différence entre \(2026\) et l'année de naissance. age = 2026 - year Étape 3, afficher. Trois lignes ; les deux dernières utilisent des f-strings. print("--- Card ---")
print(f"{name}, from {city}")
print(f"Age in 2026: {age}") Le programme complet est la suite des trois étapes. Testé avec Ada, London, 2010, il affiche la carte attendue ; testé avec une année de naissance de 2026, il affiche un âge de 0, ce qui est correct. Compétences à pratiquer
- Construire le formulaire et ses variantes
V
Pour aller plus loin
Compétences à pratiquer
- Découvrir d'autres instructions
- Quiz
Aller à la section