Les bases de Python : valeurs, variables et expressions
DébutantUnité 1 sur 10 de la formation Formation : Python : variables, boucles, fonctions et fichiers
Ce que tu vas apprendre
- Exécute du code Python dans la console interactive et sous forme de fichiers de script enregistrés, suis l’exécution d’un programme de haut en bas, lis les messages d’erreur pour corriger les erreurs et explique le code avec des commentaires.
- Exécuter du code dans la console et sous forme de scriptDistingue la console interactive d’un fichier de programme enregistré, exécute du code des deux façons et prévois ce que chacune affiche à l’écran.
- Lire les messages d’erreur et corriger les erreurs courantesReconnais les erreurs de syntaxe, d’exécution et de logique, lis une trace d’appels de bas en haut et corrige les erreurs les plus fréquentes chez les débutants.
- Expliquer du code avec des commentairesÉcris des commentaires qui aident à comprendre un programme et sache quel texte Python ignore et quel texte il traite comme du code ou des données.
- Exécuter du code dans la console et sous forme de script
- Reconnais les types de base des valeurs que Python manipule, nombres entiers, nombres décimaux, texte et valeurs vrai ou faux, et écris correctement chacune d’elles dans le code.
- Distinguer les valeurs et les typesIdentifie le type d’une valeur, vérifie-le avec type() et explique pourquoi le type détermine ce que tu peux faire avec cette valeur.
- Écrire des nombres entiers et des nombres décimauxÉcris correctement des littéraux int et float, y compris de très grands et de très petits nombres, et explique pourquoi les résultats de type float sont parfois légèrement inexacts.
- Écrire du texte sous forme de chaînes de caractèresCrée des chaînes avec des guillemets simples, doubles ou triples, insère des guillemets et des caractères spéciaux à l’intérieur et distingue le texte du code.
- Distinguer les valeurs et les types
- Utilise l’affectation pour donner des noms aux valeurs, choisis des noms valides et clairs et suis l’évolution des valeurs des variables pendant l’exécution d’un programme.
- Affecter des valeurs à des variablesCrée des variables avec des instructions d’affectation, explique le rôle du signe égal en Python et utilise les variables dans les instructions suivantes.
- Choisir des noms de variables valides et parlantsSuis les règles et les conventions de style de Python pour les noms, évite les mots-clés et les noms natifs, et choisis des noms qui indiquent le sens d’une valeur.
- Mettre à jour des variables et suivre l’exécution d’un programmeModifie des variables avec l’affectation augmentée, échange correctement deux valeurs et suis un programme ligne par ligne avec un tableau de suivi pour prévoir son affichage.
- Affecter des valeurs à des variables
- Construis des expressions avec les opérateurs arithmétiques et textuels de Python, prévois leurs résultats et leurs types, et utilise les priorités opératoires et les parenthèses pour calculer ce que tu souhaites.
- Utiliser les opérateurs arithmétiquesCalcule avec +, -, *, /, //, % et **, et prévois si chaque résultat est un int ou un float.
- Appliquer les priorités opératoiresPrévois comment Python évalue une expression contenant plusieurs opérateurs et utilise des parenthèses pour lui faire calculer ce que tu souhaites.
- Répartir des quantités avec la division entière et le resteUtilise // et % pour répartir une quantité en groupes entiers et obtenir ce qui reste, puis applique-les au temps, à l’argent et aux chiffres.
- Combiner du texte et des nombres dans des expressionsAssemble et répète des chaînes avec + et *, et prévois ce qui se passe lorsqu’une expression mélange des entiers, des flottants et des chaînes.
- Utiliser les opérateurs arithmétiques
- Écris de courts programmes complets qui demandent des données à l’utilisateur, les convertissent dans le bon type, effectuent des calculs et affichent des résultats clairs.
- Convertir des valeurs d’un type à l’autreUtilise int(), float(), str() et round() pour changer le type d’une valeur ou l’arrondir, prévois le résultat et reconnais les conversions qui échouent.
- Afficher des résultats avec print()Affiche du texte et des valeurs avec print(), contrôle les espacements et les fins de ligne avec sep et end, et présente un affichage facile à lire.
- Lire une saisie et écrire un programme completDemande des données à l’utilisateur avec input(), convertis-les avant de calculer et combine entrée, traitement et sortie dans un court programme fonctionnel.
- Convertir des valeurs d’un type à l’autre
Python : cours
1Exécuter du code et comprendre le résultat
Un programme court est plus facile à comprendre lorsque tu sais où l’exécuter et à quoi t’attendre à l’écran. Commence par des essais rapides dans la console Python, puis enregistre une suite d’instructions pour pouvoir l’exécuter à nouveau. Apprends à distinguer un calcul qui reste invisible d’un résultat affiché, à lire les indices dans les messages d’erreur et à laisser des commentaires utiles à la prochaine personne qui lira ton code. Cette personne pourrait être toi une semaine plus tard.
1.1 La console et un programme enregistré
Un programme est une suite d’instructions. L’interpréteur Python lit le code Python et exécute ces instructions. Utilise Python 3, où un appel comme print("Hello") comporte des parenthèses.
Essaie une ligne dans la console
La console interactive, ou REPL, affiche >>> lorsqu’elle est prête à recevoir du code Python. Saisis une instruction après l’invite et appuie sur Entrée. Tu ne saisis pas toi-même >>>.
>>> 3 + 4
7
>>> "hi"
'hi'
La console affiche automatiquement la valeur d’une expression. Elle place des guillemets autour d’une chaîne pour l’identifier comme du texte. Une invite ... signifie qu’une instruction est inachevée et que Python attend la suite. Par exemple, une parenthèse ouvrante peut encore avoir besoin de sa parenthèse fermante. Saisis exit() à une invite prête à recevoir une instruction pour quitter la console.
La console est utile pour tester une expression. Elle peut conserver un historique des commandes, mais cet historique n’est pas un programme enregistré. Place dans un script les instructions que tu souhaites exécuter à nouveau ensemble.
Enregistre et exécute un script
Un script est un fichier de code en texte brut portant l’extension .py. Utilise un éditeur de code comme IDLE, Thonny ou VS Code. IDLE est fourni avec la distribution standard de Python. Un traitement de texte peut remplacer les guillemets droits par des guillemets typographiques ; ces derniers ne peuvent pas délimiter des chaînes Python.
Saisis ces lignes dans l’éditeur et enregistre le script :
print("Hello, world!")
print("Welcome to Python.")
Dans IDLE, choisis Run → Run Module ou appuie sur F5. L’affichage est le suivant :
Hello, world!
Welcome to Python.
Python exécute ces instructions de haut en bas. Chaque print() affiche son texte et passe à la ligne. Inverser les instructions inverse l’ordre de l’affichage.
Tu peux aussi exécuter un script enregistré depuis un terminal. Ouvre le dossier qui contient ton script, puis saisis la commande de l’interpréteur suivie du nom sous lequel le script est enregistré. Sur macOS ou Linux, la commande est généralement python3 suivie du nom du script ; Windows utilise couramment python ou py. La commande du terminal démarre l’interpréteur et lui indique quel script exécuter. Cette commande se saisit à l’invite du terminal, pas après le >>> de Python. Un éditeur en ligne peut proposer un bouton d’exécution à la place.
Détermine ce qui doit être affiché
Un script contenant uniquement 3 + 4 calcule une valeur mais n’affiche rien. Écris print(3 + 4) pour afficher 7. De même, print("hi") affiche le texte sans les guillemets qui l’entourent. Les guillemets appartiennent au code ; ils marquent le début et la fin du texte.
Python est sensible à la casse. print et Print sont des noms différents, donc Print("hi") produit une NameError, sauf si cet autre nom a été défini. Respecte exactement l’orthographe et la casse des noms natifs.
Les espaces en début de ligne ont aussi un sens. Pour ces suites d’instructions simples, commence chaque instruction à la marge gauche. Une indentation involontaire avant print("hi") peut provoquer IndentationError: unexpected indent. Les espaces à l’intérieur du texte entre guillemets sont différents : Python les affiche comme faisant partie du message.
Points clés
- La console affiche automatiquement les valeurs des expressions ; un script a besoin de
print()pour les afficher. - Enregistre les instructions réutilisables dans un script Python en texte brut.
- Exécute les commandes de terminal dans le terminal et les instructions Python dans la console ou l’éditeur.
- L’ordre des instructions, la casse et les espaces en début de ligne peuvent modifier le déroulement du programme.
1.2 Utiliser un message d’erreur pour trouver la prochaine correction
Une erreur dans un programme est un bug. La rechercher et la corriger s’appelle le débogage. Détermine d’abord le type de problème : du code que Python ne peut pas lire, une opération qui échoue pendant l’exécution ou un résultat simplement incorrect.
Trois types de problèmes
| Type | Ce qui se passe | Exemple |
|---|---|---|
| Erreur de syntaxe | Python ne peut pas lire le code ; le script ne démarre pas. | Dans print("hi", une parenthèse n’est pas fermée. |
| Erreur d’exécution | L’exécution atteint une opération qui échoue et s’arrête à cet endroit. | 10 / 0 lève une ZeroDivisionError. |
| Erreur de logique | Le code s’exécute mais calcule un résultat incorrect. | 88 + 92 / 2 n’est pas la moyenne de 88 et 92. |
Python vérifie la syntaxe du script entier avant de l’exécuter. Une erreur de syntaxe vers la fin empêche même la première ligne de s’exécuter. Une erreur d’exécution est différente : les instructions précédentes ont déjà été exécutées et leur affichage reste visible.
Pour la moyenne, la division a lieu avant l’addition. Python calcule 92 / 2, soit 46.0, puis ajoute 88 pour obtenir 134.0. L’expression voulue est (88 + 92) / 2, qui donne 90.0. Aucun message d’erreur n’apparaît, car les deux expressions sont valides. Un calcul à la main te donne un résultat à comparer avec celui du programme.
Lis une trace d’appels en commençant par le bas
Supposons que le code soit :
name = "Ada"
print("Hello", nme)
La trace d’appels se termine par un message comme NameError: name 'nme' is not defined. La dernière ligne nomme l’erreur et explique ce qui a échoué. Au-dessus, Python indique l’emplacement, le numéro de ligne et le code. Compare nme avec le nom affecté plus haut : name. Corriger cette orthographe permet d’obtenir l’affichage Hello Ada.
L’emplacement indiqué est celui où Python a remarqué le problème. Si une ligne semble correcte, vérifie aussi celle qui la précède. Un guillemet ou une parenthèse manquante plus haut peut empêcher Python de comprendre la suite. Les versions récentes pointent souvent directement vers la parenthèse ouvrante sans correspondance.
Laisse le type d’erreur guider ta recherche
- NameError : Python ne trouve pas un nom, comme avec
pirnt,Printou une variable utilisée avant son affectation. Vérifie l’orthographe, la casse et l’ordre des lignes. - TypeError : l’opération ne fonctionne pas avec ces types.
"5" + 5tente d’assembler du texte et un nombre. - ValueError : une conversion reçoit un contenu inutilisable.
int("abc")reçoit du texte, mais ce texte ne décrit pas un entier. - ZeroDivisionError : un diviseur vaut zéro. Examine la valeur utilisée après
/,//ou%.
Pour une SyntaxError, associe chaque guillemet et chaque parenthèse ouvrante à son élément fermant. print('It's late') ferme la chaîne à l’apostrophe de « It's » ; utilise print("It's late"). Le code Python 2 comme print "hi" a besoin des parenthèses de Python 3 : print("hi"). Remplace les guillemets typographiques par des guillemets droits. En cas d’indentation inattendue, supprime les espaces superflus en début de ligne.
Corrige un problème, puis exécute à nouveau le programme. Le premier échec a pu empêcher Python d’atteindre un second problème. Construis un programme quelques lignes à la fois pour que chaque nouvel échec laisse une petite zone à examiner.
Points clés
- Une erreur de syntaxe empêche un script de démarrer ; une erreur d’exécution l’arrête après l’exécution des lignes précédentes.
- Lis la dernière ligne de la trace d’appels pour connaître le type d’erreur, puis examine le code indiqué.
- Un programme peut s’exécuter correctement tout en contenant une erreur de logique.
- Utilise des résultats attendus simples pour vérifier les calculs.
- Corrige une erreur et exécute à nouveau le programme avant de modifier davantage de code.
1.3 Des commentaires qui expliquent le but
Le code indique à Python ce qu’il doit faire. Un commentaire indique à une personne pourquoi le code le fait ou ce que signifie une valeur. Python ignore un commentaire lorsqu’il exécute le programme.
Délimite clairement le commentaire
Un commentaire commence par # en dehors d’une chaîne et se poursuit jusqu’à la fin de la ligne. Il peut être seul ou suivre une instruction :
# Convert a temperature from Fahrenheit to Celsius.
fahrenheit = 68
celsius = (fahrenheit - 32) * 5 / 9
print(celsius) # Show the converted temperature.
Le commentaire qui occupe toute une ligne explique le but du programme. Le commentaire en fin de ligne suit du code sur la même ligne. PEP 8, le guide de style de Python, recommande au moins deux espaces avant le # d’un commentaire en fin de ligne et un espace après. Cet espacement rend la séparation facile à voir.
Un croisillon entre guillemets est du texte ordinaire :
print("#1 is not a comment") # This part is a comment.
L’affichage est #1 is not a comment. Python lit toute la chaîne entre guillemets, y compris son croisillon, comme une donnée. Il ignore le texte après le # suivant, car ce signe est en dehors des guillemets.
Explique le sens, pas les étapes évidentes
Compare ces commentaires :
count = count + 1 # Add 1 to count.
attempts = attempts + 1 # One more failed login.
Le premier commentaire répète une opération déjà visible dans le code. Le second indique une raison de la modification. Le lecteur sait maintenant ce que la variable compte comme tentative. Un nom clair comme attempts fournit aussi une partie des informations qu’un nom vague laisserait aux commentaires.
Les commentaires utiles expliquent une unité, un choix ou un but que le code seul ne rend pas clair. Par exemple, tax_rate = 0.08 # 8% sales tax relie un taux décimal à son sens. Si tu modifies ce taux plus tard, vérifie aussi le commentaire. Un commentaire périmé peut induire le lecteur en erreur même lorsque le code fonctionne.
Empêche temporairement l’exécution d’une ligne
Pour mettre en commentaire une instruction, place # devant elle :
print("Start")
# print("Checking this step")
print("Finish")
Seuls Start et Finish apparaissent. Mettre une ligne en commentaire permet de la conserver pendant que tu testes le programme sans elle. Supprime l’ancien code désactivé lorsqu’il n’est plus utile ; sinon, un futur lecteur devra deviner s’il est encore nécessaire.
Pour une note sur plusieurs lignes, commence chaque ligne par # :
# Read the temperature in degrees Fahrenheit.
# Keep the calculation in Celsius for the next step.
Le texte entre guillemets triples est différent. Une ligne comme """Convert a temperature.""" est une expression de type chaîne, pas un commentaire. À certains emplacements, de telles chaînes peuvent servir de documentation appelée docstring. Utilise # pour un commentaire ordinaire. Une chaîne que rien n’utilise peut rester invisible dans un script, ce qui peut la faire ressembler à un commentaire même si Python la lit comme une valeur.
Points clés
- Un
#en dehors d’une chaîne commence un commentaire qui se termine à la fin de la ligne. - Explique un but, un choix ou une unité que le code ne rend pas déjà clair.
- Mettre une instruction en commentaire empêche son exécution.
- Mets à jour les commentaires lorsque le code change.
2Reconnaître et écrire différents types de valeurs
Python traite un dénombrement, une mesure et un morceau de texte comme des types de données différents. Leurs types influencent à la fois leur écriture et ce qu’une opération peut en faire. Apprends à reconnaître une valeur à son écriture, à examiner son type et à choisir une forme utile pour une tâche concrète. Écris ensuite soigneusement les nombres et les chaînes, notamment les points décimaux, les guillemets et les caractères spéciaux, pour que Python lise bien les données que tu voulais lui transmettre.
2.1 Les valeurs ont des types
Une valeur est une donnée, comme 42, 3.5 ou "Ada". Chaque valeur possède un type, qui indique à Python de quelle sorte de donnée il s’agit. Un littéral est une valeur écrite directement dans le code. Son écriture compte : 7, 7.0 et "7" ont des types différents.
Quatre types de base
| Type | Sorte de donnée | Exemples |
|---|---|---|
int | Nombre entier | 42, 0, -7 |
float | Nombre en virgule flottante | 3.5, 2.0, -0.25 |
str | Chaîne de caractères, ou texte | "Ada", 'hello', "42" |
bool | Valeur booléenne vrai ou faux | True, False |
Un point décimal fait de 2.0 un flottant, même si sa valeur est égale à celle de l’entier 2. Les guillemets font de "42" du texte, même si les caractères ressemblent à un nombre. Le type dépend de la valeur écrite, et non de l’usage qu’un lecteur pourrait en faire.
Les littéraux booléens ont une majuscule initiale et pas de guillemets. True est un booléen ; "True" est une chaîne. Le mot en minuscules true est un nom, et l’utiliser sans le définir produit une NameError. Une comparaison peut produire un booléen : 3 < 5 s’évalue à True.
Demande son type à Python
La fonction native type() indique le type de son argument. Dans la console, ces appels affichent :
>>> type(7)
<class 'int'>
>>> type(7.0)
<class 'float'>
>>> type("7")
<class 'str'>
>>> type(True)
<class 'bool'>
Dans un script, utilise print() pour voir ces résultats :
print(type(42), type("42"))
Cela affiche <class 'int'> <class 'str'>. Le mot class fait partie de la réponse de Python ; les noms int et str désignent les types.
Les types changent le sens des opérateurs
Avec des nombres, + additionne. Avec deux chaînes, il assemble du texte :
print(5 + 3)
print("5" + "3")
La première ligne affiche 8. La seconde affiche 53. La seconde expression contient deux valeurs textuelles, donc Python assemble leurs caractères. Il n’examine pas les caractères représentant des chiffres pour décider de les additionner.
"5" + 5 lève une TypeError : un opérande est du texte et l’autre est un entier. Vérifie les types lorsqu’une opération se comporte autrement que prévu. En particulier, voir des chiffres à l’écran ne prouve pas que la valeur stockée est numérique.
Choisis un type adapté au sens
Utilise un entier pour un dénombrement et un flottant pour une mesure qui peut comporter une fraction. Conserve un identifiant comme un code postal américain sous forme de texte. La chaîne "02134" préserve le zéro initial ; ce zéro fait partie de l’identité du code et ne sert pas à un calcul. Les numéros de téléphone peuvent aussi contenir des signes de ponctuation qu’il est utile de conserver.
La console peut afficher 'Ada', tandis que print("Ada") affiche Ada. Les deux désignent le même texte. Les guillemets de la console identifient une chaîne ; print() présente les caractères à un lecteur. Aucun de ces affichages ne modifie le type stocké.
Points clés
- L’écriture d’un littéral détermine son type :
7,7.0et"7"sont différents. type()indique le type d’une valeur.- Les opérateurs tiennent compte des types : l’addition de nombres et l’assemblage de texte sont des opérations différentes.
- Écris les littéraux booléens
TrueetFalsesans guillemets. - Stocke les identifiants comme les codes postaux américains sous forme de chaînes pour conserver leurs caractères.
2.2 Nombres, points décimaux et précision des flottants
Python dispose de types distincts pour les nombres entiers et les nombres en virgule flottante. Les écrire clairement évite les erreurs de syntaxe et les modifications moins évidentes des données.
Écris les dénombrements sous forme d’entiers
Un entier n’a pas de partie fractionnaire. Écris un int sans point décimal, comme 42, 0 ou -7. Les entiers Python peuvent grandir autant que la mémoire disponible le permet, sans limite fixe de taille. L’addition, la soustraction et la multiplication d’entiers sont exactes. Par exemple, 2 ** 100 donne l’entier exact 1267650600228229401496703205376.
N’utilise pas de virgules pour grouper les milliers. Écris 1000000 ou utilise des caractères de soulignement pour faciliter la lecture : 1_000_000. Ces caractères ne changent pas la valeur.
Un littéral entier décimal non nul ne peut pas commencer par un zéro. Écrire 02134 est une erreur de syntaxe. Si ces chiffres forment un identifiant dont le premier zéro compte, écris "02134" comme du texte.
Écris les quantités fractionnaires sous forme de flottants
Un flottant utilise un point décimal ou une notation avec exposant. 3.5, 2.0 et -0.25 sont des flottants. Python accepte aussi .5 et 5., qui signifient 0.5 et 5.0 ; écrire le zéro supplémentaire les rend souvent plus faciles à lire. Utilise des flottants pour des mesures comme la température ou la distance, et pour des calculs d’initiation avec des prix comportant une partie fractionnaire.
Le code Python utilise un point décimal. Une virgule sépare des valeurs ; elle ne marque jamais la partie fractionnaire. Par exemple :
x = 3.5
print(x)
affiche 3.5, tandis que x = 3,5 crée une paire de valeurs, affichée sous la forme (3, 5). De même, x = 1,000 crée (1, 0), et non mille. Ces instructions peuvent s’exécuter : l’absence de message d’erreur ne signifie donc pas que le nombre a été écrit correctement.
Utilise la notation scientifique
La lettre e signifie « multiplié par dix à la puissance » dans un littéral numérique :
| Littéral | Valeur |
|---|---|
1.5e3 | 1500.0 |
2.5e-3 | 0.0025 |
1e3 | 1000.0 |
Un littéral avec exposant est un flottant même lorsque sa valeur est un entier. Le signe moins après e rend l’exposant négatif, donc 2.5e-3 signifie 2,5 divisé par 1 000.
Attends-toi à une précision limitée
Les flottants stockent les nombres en binaire avec une précision limitée, généralement d’environ 15 à 17 chiffres décimaux significatifs. De nombreuses fractions décimales, dont 0.1, n’ont pas de représentation exacte dans ce stockage. Par conséquent :
print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
affiche 0.30000000000000004, puis 0.3. La très petite différence vient des approximations stockées. round(..., 2) arrondit le résultat à deux décimales pour l’affichage ; il ne change pas la façon dont les flottants stockent les valeurs. Garde le calcul d’origine jusqu’à la fin, puis arrondis le résultat affiché.
Un signe peut aussi être un opérateur. Le moins unaire change le signe d’une valeur : -7 signifie moins sept. Dans 5 - -3, le premier signe moins soustrait et le second donne moins trois, donc le résultat est 8. Distingue ce signe de l’exposant négatif dans un littéral comme 2.5e-3.
Points clés
- Écris des points décimaux dans le code et utilise des caractères de soulignement, pas des virgules, pour grouper les grands nombres.
- Les entiers Python n’ont pas de limite fixe de taille ; la mémoire disponible les limite toutefois.
- Un littéral contenant un point décimal ou
eest un flottant. - De nombreuses fractions décimales sont approximatives sous forme de flottants ; arrondis le résultat final à l’affichage.
- Le moins unaire change le signe d’une valeur.
2.3 Guillemets et caractères à l’intérieur des chaînes
Une chaîne de caractères est une suite de caractères : lettres, chiffres, espaces, signes de ponctuation et autres symboles. Les guillemets indiquent à Python où cette suite commence et se termine. Les caractères à l’intérieur sont des données, même s’ils ressemblent à du code Python.
Choisis des guillemets assortis
Les guillemets simples et doubles créent le même type, str. 'Ada' et "Ada" contiennent tous deux les mêmes trois caractères. Commence et termine une chaîne avec le même type de guillemet.
Choisis les guillemets extérieurs de façon à faciliter l’écriture d’un guillemet intérieur :
print("It's late")
print('She said "hi"')
L’affichage est :
It's late
She said "hi"
Dans print('It's late'), l’apostrophe après It ferme la chaîne trop tôt. Python ne peut alors pas lire le reste de l’instruction. Des guillemets doubles à l’extérieur gardent l’apostrophe à l’intérieur du texte.
Utilise une séquence d’échappement
Une barre oblique inverse commence une séquence d’échappement. Chacune de ces séquences courantes représente un caractère :
| Écriture dans le code | Caractère dans la chaîne |
|---|---|
\n | Saut de ligne |
\t | Tabulation |
\\ | Une barre oblique inverse |
\' | Guillemet simple |
\" | Guillemet double |
Par exemple, print("Line 1\nLine 2") affiche deux lignes. La barre oblique inverse et le n dans le code représentent ensemble un saut de ligne, pas une lettre n visible. De même, print('It\'s late') affiche It's late : le guillemet échappé devient un caractère sans terminer la chaîne.
Pour afficher une barre oblique inverse littérale suivie d’une lettre, écris une double barre oblique inverse. print("A\\B") affiche A\B. La première barre oblique inverse indique que la suivante doit être un caractère.
Conserve les sauts de ligne ou aucun caractère
Les guillemets triples permettent à une chaîne de s’étendre sur plusieurs lignes physiques. Les sauts de ligne font partie de sa valeur :
print("""Line one
Line two""")
Cela affiche Line one et Line two sur des lignes distinctes. Les guillemets triples simples fonctionnent aussi. Les guillemets triples créent toujours une chaîne ; ils ne créent pas un commentaire #.
La chaîne vide, "", ne contient aucun caractère. Elle diffère de " ", qui contient un espace. Cet espace peut être difficile à voir à l’affichage, mais il reste une partie des données.
Distingue le texte d’une expression ou d’un nom
Compare ces instructions :
name = "Ada"
print("3 + 4")
print(3 + 4)
print("name")
print(name)
L’affichage est 3 + 4, puis 7, puis name, puis Ada. Les guillemets font du premier et du troisième argument du texte littéral. Sans guillemets, Python évalue un calcul ou recherche une variable.
Oublier les guillemets autour d’un message comme Hello pousse Python à rechercher un nom. Si Hello n’a pas été défini, print(Hello) lève une NameError. Écris print("Hello") lorsque tu veux ce mot.
Les chaînes peuvent contenir des caractères de nombreuses langues et des symboles comme "café", "naïve" et "°F". Des chiffres peuvent apparaître à leurs côtés : "Room 101" est entièrement du texte. Un caractère représentant un chiffre entre guillemets ne devient pas un entier.
Points clés
- Les guillemets simples et doubles créent tous deux des chaînes ; le type de guillemet ouvrant et fermant doit correspondre.
- Choisis des guillemets extérieurs ou des séquences d’échappement qui gardent un guillemet intérieur dans le texte.
- Les séquences d’échappement courantes comprennent
\n,\tet\\. - Les guillemets triples conservent les sauts de ligne dans une chaîne.
- Une chaîne vide ne contient aucun caractère ; un espace est un caractère.
- Le texte entre guillemets est une donnée ; les noms et calculs sans guillemets sont évalués.
3Nommer les valeurs et suivre leurs changements
Les variables permettent à un programme de réutiliser une valeur et de lui donner un sens reconnaissable par un lecteur. Une affectation relie un nom au résultat d’une expression ; une affectation ultérieure peut modifier ce lien. Apprends à lire ces étapes dans l’ordre, à choisir des noms que Python accepte et à distinguer un résultat enregistré d’une formule qu’il faudrait exécuter à nouveau. Les tableaux de suivi rendent ces changements visibles, y compris les étapes nécessaires pour échanger deux valeurs sans erreur.
3.1 L’affectation donne un nom à une valeur
Une variable est un nom qui désigne une valeur en mémoire. Une instruction d’affectation relie un nom à gauche de = à la valeur d’une expression située à droite.
Lis d’abord le côté droit
Dans age = 30, Python évalue 30, puis fait en sorte que age désigne cet entier. Le côté gauche doit être un emplacement valide pour affecter une valeur. 30 = age est une erreur de syntaxe : tu ne peux pas affecter une nouvelle valeur au littéral 30.
Le signe = signifie « affecter ». Il ne demande pas si deux valeurs sont égales. Le test d’égalité utilise ==. Lire l’affectation comme une opération qui va de droite à gauche rend compréhensibles des instructions comme x = x + 1 : utilise l’ancienne valeur de x à droite, calcule la nouvelle valeur, puis affecte-la à x à gauche.
Prenons un rectangle :
width = 4
height = 2.5
area = width * height
print(area)
Après la première ligne, width désigne 4. Après la deuxième, height désigne 2.5. Pour la troisième ligne, Python recherche les deux valeurs actuelles et évalue 4 * 2.5, ce qui produit 10.0. Il affecte ce résultat à area. La dernière ligne affiche 10.0.
L’affectation elle-même n’affiche pas la valeur. Utilise le nom dans un appel ultérieur à print() lorsque tu veux l’afficher.
Affecte une valeur avant d’utiliser un nom
Python suit l’ordre des instructions. Ce code échoue à la première ligne :
print(total)
total = 10
À ce stade, total n’a pas de valeur. L’affectation ultérieure ne peut pas fournir une valeur à une instruction antérieure. Déplace total = 10 avant print(total).
Une console peut conserver des noms issus d’essais précédents. Un programme enregistré doit fournir les affectations dont il a besoin dans son propre ordre d’exécution, afin que son résultat ne dépende pas de ce que tu as saisi auparavant.
Réaffecte une valeur à un nom existant
La réaffectation fait désigner une nouvelle valeur à un nom :
score = 10
score = 15
Maintenant, score vaut 15 ; l’ancienne valeur 10 n’est plus accessible par ce nom. Pour une mise à jour fondée sur l’ancienne valeur :
x = 3
x = x + 1
La deuxième ligne évalue 3 + 1, puis affecte 4 à x. Il n’y a aucune équation à résoudre et aucune contradiction.
Un type appartient à la valeur, pas définitivement au nom de variable. Python autorise temp = 3 suivi de temp = "three" ; après cela, type(temp) indique str. Garder un sens et un type attendu cohérents pour un nom rend généralement un programme plus facile à suivre.
Une valeur copiée ne crée pas de lien pour la suite
a = 5
b = a
a = 10
print(a, b)
Cela affiche 10 5. À l’instruction b = a, les deux noms désignent l’entier actuel 5. Réaffecter une valeur à a change la valeur que a désigne ; b continue de désigner 5. De même, stocker width * height enregistre son résultat, pas une formule qui se met à jour lorsque width change.
Une instruction peut affecter des valeurs à plusieurs noms. a = b = 0 donne aux deux noms la valeur 0. Dans x, y = 1, 2, les valeurs correspondent aux noms selon leur position : x vaut 1 et y vaut 2.
Points clés
- L’affectation évalue l’expression de droite avant d’affecter sa valeur au nom de gauche.
- Une variable doit avoir une valeur avant qu’une expression l’utilise.
- La réaffectation change la valeur accessible par un nom.
- Affecter une variable à une autre ne lie pas leurs affectations futures.
- Une valeur a un type ; un même nom peut ensuite désigner une valeur d’un autre type.
3.2 Des noms que Python accepte et que les lecteurs comprennent
Un nom doit respecter la grammaire de Python et aider une personne à comprendre le programme. Ce sont deux critères distincts : Python peut accepter un nom qui rend malgré tout le code difficile à lire.
Suis les règles de nommage
Un nom de variable peut contenir des lettres, des chiffres et des caractères de soulignement. Il ne peut pas commencer par un chiffre, contenir un espace ou utiliser des signes de ponctuation comme un trait d’union.
| Nom | Ce qui se passe |
|---|---|
total, item_count, price2, _temp | Noms valides |
2nd_place | Invalide : commence par un chiffre |
first name | Invalide : contient un espace |
first-name | Lu comme une soustraction, pas comme un seul nom |
Python accepte aussi les lettres d’autres alphabets. Les lettres anglaises sont un choix courant pour les identificateurs. Quelles que soient les lettres choisies, respecte toujours la même orthographe : age, Age et AGE sont trois noms différents. L’affectation age = 30 ne définit pas Age.
Distingue les mots-clés et les noms natifs
Un mot-clé est réservé à la grammaire de Python. Tu ne peux pas l’utiliser comme nom de variable. Les mots-clés réservés sont :
False None True and as assert async await break class
continue def del elif else except finally for from
global if import in is lambda nonlocal not or pass
raise return try while with yield
Tu n’as pas besoin de mémoriser cette liste avant d’écrire un programme. Pour l’instant, retiens qu’un nom comme class n’est pas disponible : class = 3 est une erreur de syntaxe. Les éditeurs affichent souvent les mots-clés dans une couleur particulière.
Les noms de fonctions natives, notamment print, input, int, str, type, sum et max, ne sont pas des mots-clés. Python t’autorise à leur affecter une valeur, mais cette affectation masque la fonction d’origine :
print = 5
print("hi")
La deuxième ligne tente d’appeler l’entier 5 et lève une TypeError. Choisis un nom qui décrit tes données, comme total, pour que la fonction native reste disponible. Redémarrer une console efface les remplacements accidentels effectués pendant les essais.
Écris les noms selon un style cohérent
PEP 8 recommande snake_case pour les noms de variables : des mots en minuscules reliés par des caractères de soulignement, comme dans hourly_rate et first_name. Le caractère de soulignement maintient ensemble les mots d’un nom sans utiliser d’espaces.
Une constante est une valeur que tu prévois de garder inchangée. Par convention, son nom s’écrit en majuscules :
SALES_TAX_RATE = 0.08
Python ne verrouille pas ce nom. Une affectation ultérieure peut le modifier ; les majuscules indiquent une intention au lecteur.
Indique le sens et les unités
hours_worked = 38 t’en dit plus que h = 38. Un nom comme distance_miles ou temp_f indique aussi l’unité, ce qui réduit le risque d’utiliser des miles comme s’il s’agissait de kilomètres ou des degrés Fahrenheit comme s’il s’agissait de degrés Celsius. Les noms courts comme x et y conviennent pour des coordonnées ou une formule brève dont le sens est déjà clair.
Évite les noms presque identiques comme total et totl. Une faute de frappe peut produire une NameError ou utiliser accidentellement une autre variable existante. PEP 8 déconseille aussi les noms d’une seule lettre l, O et I, qui peuvent ressembler à des chiffres. Quelques lettres supplémentaires peuvent rendre un calcul beaucoup plus facile à examiner.
Points clés
- Commence un nom par une lettre ou un caractère de soulignement, puis utilise des lettres, des chiffres ou des caractères de soulignement.
- Les mots-clés sont réservés ; les noms natifs peuvent être réutilisés, mais il vaut mieux les garder disponibles.
- Utilise des noms descriptifs en
snake_caseet indique les unités utiles. - Les noms de constantes en majuscules indiquent une intention ; ils n’empêchent pas la réaffectation.
3.3 Mises à jour, tableaux de suivi et échanges
Une mise à jour utilise la valeur actuelle d’une variable pour calculer sa valeur suivante. Suivre chaque mise à jour dans l’ordre permet de prévoir l’affichage et de trouver des erreurs de logique avant d’exécuter le programme.
Donne une valeur initiale avant de la mettre à jour
count = count + 1 ajoute un à l’ancien décompte. Ce changement est une incrémentation. Une variable qui recueille un total cumulé est un accumulateur ; donne-lui une valeur initiale comme total = 0 avant d’ajouter des quantités.
L’affectation augmentée combine une opération et une affectation. Pour les nombres, x += 3 a le même effet que x = x + 3. Les formes disponibles comprennent +=, -=, *=, /=, //=, %= et **=.
score = 10
score -= 3
score **= 2
print(score)
La soustraction donne à score la valeur 7. L’élévation à la puissance lui donne ensuite la valeur 49, qui est affichée. Sans l’affectation initiale, une mise à jour tenterait d’utiliser un nom non défini et lèverait une NameError.
L’opérateur choisi influe aussi sur le type. En partant de n = 7, n /= 2 produit le flottant 3.5. En repartant de n = 7, n //= 2 produit l’entier 3. Python n’a pas d’opérateur d’incrémentation ++ : x++ est invalide. Écrire ++x applique deux fois le plus unaire et ne met pas x à jour ; utilise x += 1.
Suis une instruction à la fois
Un tableau de suivi enregistre les valeurs des variables après chaque instruction. Écris une colonne par variable et une ligne par étape :
price = 20
quantity = 3
total = price * quantity
price = 25
total += 5
print(total, price)
| Instruction exécutée | price | quantity | total |
|---|---|---|---|
price = 20 | 20 | Non affecté | Non affecté |
quantity = 3 | 20 | 3 | Non affecté |
total = price * quantity | 20 | 3 | 60 |
price = 25 | 25 | 3 | 60 |
total += 5 | 25 | 3 | 65 |
L’affichage est 65 25. Modifier price n’a pas répété la multiplication précédente. La variable total contenait la valeur calculée 60 ; ce n’était pas une formule de tableur liée à price. Seule sa propre mise à jour ultérieure lui a donné la valeur 65.
Pour un suivi à la main, évalue le côté droit à l’aide de la ligne immédiatement au-dessus, puis mets à jour le nom auquel la valeur est affectée. Laisse toutes les autres colonnes inchangées. Compare ta prévision avec l’affichage réel du programme.
Préserve les deux valeurs lors d’un échange
Supposons que a = 1 et b = 2. La tentative a = b suivie de b = a donne 2 2. La première affectation fait perdre l’accès à la valeur initiale de a par ce nom ; la deuxième ligne recopie donc la nouvelle valeur.
Une variable temporaire garde la valeur initiale accessible :
a = 1
b = 2
temp = a
a = b
b = temp
print(a, b)
Cela affiche 2 1. Tu peux aussi écrire a, b = b, a. Python évalue les deux valeurs à droite avant d’affecter l’un ou l’autre des noms à gauche : les deux valeurs initiales sont donc disponibles pour l’échange. Suis la version avec la variable temporaire lorsque tu veux voir exactement où chaque valeur initiale est préservée.
Points clés
- Une affectation augmentée nécessite une valeur existante.
- Utilise
+= 1pour une incrémentation ;++ne met pas à jour une variable Python. - Un tableau de suivi enregistre les valeurs après chaque instruction.
- Modifier une variable d’entrée ne recalcule pas un résultat enregistré auparavant.
- L’opérateur d’une mise à jour peut changer le type du résultat.
- Un échange nécessite les deux valeurs initiales : conserve-en une temporairement ou utilise une affectation simultanée.
4Construire des calculs avec les bons opérateurs
Une expression combine des valeurs pour obtenir un résultat. Python utilise des notions arithmétiques familières, mais tu dois écrire les multiplications, les puissances et les divisions avec les bons symboles. Découvre comment l’ordre des opérateurs détermine un calcul, comment la division entière et le reste répartissent des quantités et comment les types changent le sens de l’addition et de la multiplication. Décomposer les expressions en petites étapes t’aide à vérifier si le résultat, son type et son sens correspondent tous à ton intention.
4.1 Symboles arithmétiques et types des résultats
Une expression s’évalue à une valeur. Elle peut être un littéral seul, une variable ou une combinaison comme 2 + 3. Le signe + est un opérateur ; les valeurs sur lesquelles il agit sont ses opérandes.
Choisis l’opérateur
Les opérateurs arithmétiques de Python fonctionnent ainsi :
| Opération | Expression | Résultat |
|---|---|---|
| Addition | 7 + 2 | 9 |
| Soustraction | 7 - 2 | 5 |
| Multiplication | 7 * 2 | 14 |
| Division | 7 / 2 | 3.5 |
| Division entière | 7 // 2 | 3 |
| Reste | 7 % 2 | 1 |
| Puissance | 7 ** 2 | 49 |
Écris explicitement la multiplication avec *. Une notation mathématique comme 2x ne fonctionne pas comme une multiplication en Python. Écris 2 * x ou 2 * (x + 1). Avec x = 1, 2(x + 1) tente d’appeler l’entier 2 comme s’il s’agissait d’une fonction et lève une TypeError.
L’opérateur de puissance est **, pas ^. Par exemple, 7 ** 2 vaut 49, tandis que 7 ^ 2 vaut 5, car l’accent circonflexe effectue une autre opération. Un programme peut donc s’exécuter tout en calculant un résultat que tu ne souhaitais pas.
Prévois le type autant que le nombre
La division avec / donne un flottant pour des opérandes entiers, même lorsque la division est exacte : 6 / 2 vaut 3.0. Pour obtenir un nombre entier de groupes complets, utilise // : 6 // 2 vaut 3.
Avec deux opérandes entiers, l’addition, la soustraction, la multiplication, la division entière et le reste donnent des résultats entiers. Les puissances entières non négatives aussi : 2 ** 10 donne l’entier exact 1024. Un exposant négatif change cela : 2 ** -1 donne le flottant 0.5.
Dans un calcul arithmétique ordinaire avec un entier et un flottant, le calcul utilise des valeurs en virgule flottante. 3 + 4.0 donne 7.0 ; 7.0 // 2 donne 3.0. La division entière décrit comment le quotient est arrondi, sans garantir que son type soit toujours int.
Une puissance fractionnaire permet de calculer une racine d’un nombre positif. 4 ** 0.5 donne 2.0 et 2 ** 0.5 donne environ 1.4142135623730951.
Construis un calcul à partir de valeurs nommées
Une voiture parcourt 287 miles en utilisant 10,25 gallons :
miles = 287
gallons = 10.25
mpg = miles / gallons
print("Miles per gallon:", mpg)
La division calcule 28.0, donc l’affichage est Miles per gallon: 28.0. Les noms identifient les quantités et l’indication affichée précise l’unité du résultat. Multiplier 28.0 * 10.25 permet de retrouver 287 miles et de vérifier la division.
Un diviseur nul provoque une erreur avec /, // et %. Par exemple, 10 / 0 lève une ZeroDivisionError. Examine la variable utilisée comme diviseur lorsque cette erreur se produit.
Les espaces autour des opérateurs ne changent pas leur sens : 2+3 et 2 + 3 donnent tous deux 5. Les espaces autour de = et de la plupart des opérateurs facilitent la lecture des différentes parties. Ils ne peuvent pas remplacer un opérateur ; 2 x ne signifie toujours pas une multiplication.
Points clés
- Utilise
*pour la multiplication et**pour les puissances. /donne un flottant lors d’une division d’entiers, même si le quotient est exact.//avec deux entiers donne un entier ; un opérande flottant donne un résultat flottant.- Un exposant entier négatif produit un résultat flottant.
/,//et%lèvent uneZeroDivisionErrorlorsque le diviseur est nul.
4.2 Ordonner les opérations et regrouper les formules
Python ne calcule pas simplement une expression de gauche à droite. La priorité détermine les opérations effectuées en premier. Les parenthèses permettent de choisir un autre regroupement ou de rendre le regroupement voulu plus clair.
Applique les niveaux dans l’ordre
Pour les opérateurs présentés ici, utilise cet ordre :
- Expressions entre parenthèses.
- Puissances,
**. - Signes unaires, comme le moins dans
-x. - Multiplications et divisions :
*,/,//,%. - Additions et soustractions :
+,-.
Pour 3 + 4 * 2 ** 2, évalue 2 ** 2 pour obtenir 4. L’expression devient 3 + 4 * 4. La multiplication donne 16 et l’addition donne 19. Avec (3 + 4) * 2 ** 2, la somme entre parenthèses vaut 7 ; la puissance vaut 4 ; le produit vaut 28.
Les opérateurs au niveau de la multiplication et de la division ont la même priorité. Procède de gauche à droite : 8 / 2 * 4 signifie (8 / 2) * 4, ce qui donne 16.0. La multiplication ne passe pas avant la division. De même, 100 / 10 / 5 donne 2.0 et 10 - 4 - 3 donne 3.
Fais attention aux puissances et aux signes
Les puissances successives se regroupent de droite à gauche. 2 ** 3 ** 2 signifie 2 ** (3 ** 2). D’abord, 3 ** 2 donne 9 ; puis 2 ** 9 donne 512. Un regroupement depuis la gauche donnerait 64, un résultat différent.
Un signe moins placé devant une puissance est appliqué après celle-ci : -2 ** 2 signifie -(2 ** 2) et donne -4. Dans (-2) ** 2, les parenthèses font de moins deux la base, donc le résultat est 4. Un signe moins après ** peut appartenir à l’exposant : 2 ** -1 donne 0.5.
Traduis tout le regroupement d’une formule
Pour calculer une moyenne, il faut additionner les deux valeurs avant de diviser par deux :
average = (88 + 92) / 2
La somme vaut 180, puis la division donne 90.0. Sans parenthèses, 88 + 92 / 2 ne divise que 92 et donne 134.0.
Une barre de fraction regroupe aussi tout ce qui se trouve au-dessus et au-dessous. Un numérateur contenant a + b et un dénominateur contenant c + d deviennent (a + b) / (c + d). Omettre l’une ou l’autre paire de parenthèses peut changer les termes qui sont divisés.
Le même problème apparaît dans une conversion de température :
celsius = (98.6 - 32) * 5 / 9
La soustraction donne 66.6, la multiplication donne 333.0 et la division donne 37.0. Sans ce regroupement, 98.6 - 32 * 5 / 9 donne 80.82222222222222.
Utilise les bons signes de regroupement
Les parenthèses rondes regroupent une expression. Les crochets et les accolades ont d’autres sens en Python. Par exemple, [2 + 3] * 4 produit [5, 5, 5, 5], et non 20.
Des parenthèses autour d’une opération qui serait de toute façon effectuée en premier ne changent pas le résultat : (2 * 3) + 1 et 2 * 3 + 1 donnent tous deux 7. Des parenthèses qui modifient le regroupement peuvent changer la valeur : 2 * (3 + 1) donne 8. Ajoute des parenthèses là où elles rendent le sens du calcul plus facile à comprendre.
Points clés
- Évalue les parenthèses, les puissances, les signes unaires, les multiplications et divisions, puis les additions et soustractions.
- Procède de gauche à droite à l’intérieur d’un niveau, sauf pour les puissances qui se regroupent de droite à gauche.
- Un signe moins placé devant une puissance diffère d’une base négative :
-2 ** 2et(-2) ** 2sont différents. - Regroupe le numérateur et le dénominateur entiers lorsque tu traduis une fraction en code.
- Utilise des parenthèses rondes pour regrouper les calculs.
4.3 Groupes entiers et reste
La division entière et le reste répondent à deux questions liées : combien de groupes entiers peuvent être formés et que reste-t-il après avoir pris ces groupes ? Pour des quantités entières non négatives, cette paire est utile pour le temps, l’argent, les emballages et les chiffres.
Trouve ensemble le quotient et le reste
17 // 5 donne 3, le nombre de groupes complets de cinq. 17 % 5 donne 2, la quantité restante. Les deux résultats permettent de reconstituer la quantité de départ :
print((17 // 5) * 5 + 17 % 5)
L’expression donne 17 : trois groupes de cinq plus deux. Plus généralement, pour des entiers et un diviseur non nul, (a // b) * b + a % b est égal à a. Utilise cette relation pour vérifier les deux réponses.
Répartis des quantités concrètes
Pour 135 minutes :
hours = 135 // 60
minutes = 135 % 60
Il y a 2 heures entières et 15 minutes restantes. Le diviseur est 60, car une heure contient 60 minutes. La division avec / donne 2.25, qui exprime des heures fractionnaires ; elle ne donne pas séparément les minutes restantes.
La même structure fonctionne avec une taille de groupe différente :
| Quantité | Groupes complets | Reste |
|---|---|---|
| 347 centimes, 100 centimes par euro | 347 // 100 donne 3 euros | 347 % 100 donne 47 centimes |
| 75 œufs, 12 par boîte | 75 // 12 donne 6 boîtes complètes | 75 % 12 donne 3 œufs |
Le nombre de boîtes est celui des boîtes complètes. Si tu as aussi besoin d’un contenant pour les œufs restants, c’est une question différente de celle du nombre de groupes complets qu’on peut former.
Utilise la valeur de position et la parité
Pour un entier positif, la division par dix permet de séparer son dernier chiffre. 1234 % 10 donne 4 et 1234 // 10 donne 123. Recombiner 123 * 10 + 4 permet de retrouver 1234.
Pour tout entier n, n % 2 vaut 0 s’il est pair et 1 s’il est impair. Cela fonctionne aussi pour les nombres négatifs : -7 % 2 vaut 1. Pour des entiers et un diviseur positif b, le reste est compris entre 0 et b - 1 inclus.
Comprends la division avec des nombres négatifs
La division entière arrondit vers l’infini négatif, pas vers zéro. Comme moins sept divisé par deux vaut -3,5, -7 // 2 donne -4. Le reste vaut alors 1, car -4 * 2 + 1 est égal à -7.
Un reste non nul a le signe du diviseur. Avec un diviseur négatif, 7 % -2 donne -1 et 7 // -2 donne -4. Ces résultats permettent toujours de reconstituer la valeur initiale : -4 * -2 + -1 vaut 7.
C’est différent de la conversion d’un quotient avec int() : int(-7 / 2) donne -3, car la conversion tronque vers zéro.
Les deux opérateurs acceptent aussi les flottants. 7.5 // 2 vaut 3.0 et 7.5 % 2 vaut 1.5. Ils ont le même niveau de priorité que * et /, donc 5 * 3 + 17 % 5 donne 17. L’opérateur % signifie ici le reste, pas le pourcentage : calcule 8 % d’un prix avec price * 0.08 ou price * 8 / 100.
Points clés
//donne un quotient arrondi à l’entier inférieur ;%donne le reste correspondant.- Pour des entiers,
(a // b) * b + a % bpermet de retrouveralorsquebest non nul. - Choisis un diviseur qui correspond à la taille du groupe ou à la conversion d’unités.
- La division entière arrondit les quotients négatifs vers le bas, pas vers zéro.
- Un reste non nul a le signe du diviseur.
- Le reste est différent d’un pourcentage.
4.4 Assembler du texte, le répéter et vérifier les types
Le symbole d’un opérateur ne représente qu’une partie de son sens. Python utilise aussi les types de ses opérandes. Les opérateurs + et * fonctionnent avec les chaînes, mais ils effectuent alors des opérations sur le texte.
Assemble des chaînes avec le signe plus
La concaténation ajoute une chaîne à la fin d’une autre :
print("ab" + "cd")
print("Hello" + "Ada")
print("Hello " + "Ada")
Ces lignes affichent abcd, HelloAda et Hello Ada. La concaténation n’ajoute pas d’espace d’elle-même. L’espace dans le troisième résultat vient du dernier caractère de "Hello ".
Les caractères représentant des chiffres suivent la même règle : "5" + "3" donne la chaîne "53". Sans guillemets, 5 + 3 donne l’entier 8. Choisis des valeurs numériques pour les calculs et des chaînes pour le texte.
Répète une chaîne avec la multiplication
Une chaîne multipliée par un entier répète ses caractères. "3" * 2 donne "33", tandis que 3 * 2 donne 6. Le nombre de répétitions peut être placé d’un côté ou de l’autre : 3 * "ab" donne "ababab". Répéter zéro fois donne la chaîne vide, donc "ab" * 0 vaut "".
Le nombre de répétitions doit être un entier. "ab" * 2.5 lève une TypeError, tout comme "ab" * "cd". Cette opération ne permet pas d’obtenir un nombre fractionnaire de copies.
Combine les opérations dans l’ordre
La multiplication est aussi prioritaire sur l’addition dans ces expressions :
print("-" * 4 + "Menu" + "-" * 4)
D’abord, chaque répétition crée "----". Ensuite, les additions assemblent les trois chaînes et produisent ----Menu----. L’ordre des assemblages préserve l’ordre de leurs caractères.
Pour un calcul qui devient une partie d’une chaîne :
print("7" + str(3 * 2))
Le calcul interne donne l’entier 6. str(6) crée la chaîne "6". Enfin, la concaténation produit "76". Elle ne produit pas 13, car le dernier + a deux chaînes pour opérandes.
Résous volontairement les incompatibilités de types
"Age: " + 30 lève une TypeError. Convertis l’entier avant de concaténer :
print("Age: " + str(30))
Cela produit Age: 30. Tu peux aussi utiliser print("Age:", 30), qui affiche les deux valeurs avec un espace entre elles. C’est le comportement de print() avec des arguments distincts, pas une addition de texte.
Les entiers et les flottants peuvent être mélangés dans les calculs arithmétiques ordinaires : 2 * 3.0 donne le flottant 6.0. Python ne transforme pas de la même façon une chaîne numérique en nombre pendant une opération +. Si tu dois calculer avec "30", convertis-la d’abord en type numérique.
La soustraction ne fonctionne pas sur ces opérandes de type chaîne. "10" - 3 lève une TypeError, même si les caractères 10 pourraient représenter un nombre. Pour prévoir le résultat d’une expression de types mixtes, identifie le type de chaque opérande, évalue les opérations prioritaires, puis vérifie à nouveau les types à l’opération suivante. Une conversion peut changer la règle que l’opérateur suivant applique.
Points clés
- Avec des chaînes,
+assemble les caractères sans ajouter d’espaces. - Avec une chaîne,
*répète le texte un nombre entier de fois. - Pour assembler du texte, convertis un nombre avec
str()ou transmets-le séparément àprint(). - Suis à la fois les priorités et les types des opérandes lorsque tu examines une expression de types mixtes.
5Lire des données, les convertir et afficher des résultats utiles
Un programme complet doit pouvoir recevoir des données et communiquer un résultat. Les saisies arrivent sous forme de texte : décide donc si le programme doit conserver ce texte ou le convertir en nombre. Effectue le calcul avec des valeurs des bons types, puis affiche le résultat avec une indication claire et des espacements utiles. Les conversions, l’arrondi et les options de print() permettent à un programme court de transformer des réponses saisies en un résultat compréhensible et vérifiable.
5.1 Les conversions créent de nouvelles valeurs
La conversion de type crée une valeur d’un type différent. Les fonctions int(), float() et str() permettent de choisir la forme nécessaire à l’opération suivante.
Conserve le résultat converti
x = "42"
int(x)
print(type(x))
Cela affiche toujours <class 'str'>. La conversion a créé un entier, mais aucune affectation ne l’a conservé. Écris x = int(x) pour que x désigne cet entier, ou affecte-le à un autre nom si tu veux conserver les deux formes.
Choisis une conversion numérique
int() accepte une chaîne représentant un entier, éventuellement précédé d’un signe et entouré d’espaces. int("42"), int("-12") et int(" 42 ") produisent 42, -12 et 42.
Un point décimal dans une chaîne empêche sa conversion directe en entier. int("3.5") et int("4.0") lèvent une ValueError ; int("abc") et int("") aussi. Le fait que 4,0 soit mathématiquement entier ne fait pas de "4.0" une chaîne écrite sous forme d’entier.
float() accepte le texte décimal et la notation avec exposant. float("3.5") donne 3.5, float("3") donne 3.0 et float("1e3") donne 1000.0. Il convertit aussi les entiers : float(7) donne 7.0. Une virgule décimale provoque un échec : float("3,5") lève une ValueError.
Tronque ou arrondis volontairement
Convertir un flottant en int supprime sa partie fractionnaire vers zéro. int(3.99) donne 3 et int(-3.99) donne -3. Cette conversion ne choisit pas l’entier le plus proche. Pour convertir un texte décimal puis le tronquer, utilise int(float("3.5")), qui donne 3.
round() choisit une valeur parmi les plus proches. round(3.7) donne l’entier 4 ; round(3.14159, 2) donne le flottant 3.14. Le deuxième argument fixe le nombre de décimales.
À mi-chemin exact, Python choisit le voisin pair : round(2.5) donne 2, tandis que round(3.5) donne 4. Les fractions décimales stockées comme flottants peuvent ne pas être exactement à mi-chemin. round(2.675, 2) donne 2.67 à cause de sa représentation binaire.
| Expression | Résultat | Raison |
|---|---|---|
int(-3.5) | -3 | Troncature vers zéro |
round(-3.5) | -4 | Entier le plus proche ; en cas d’égalité, choix du pair |
-7 // 2 | -4 | Quotient arrondi à l’entier inférieur |
Ces opérations répondent à des questions différentes. Choisis celle qui correspond au résultat voulu, surtout lorsque des valeurs négatives sont possibles.
Convertis en texte pour assembler
str(42) produit "42" et str(3.0) produit "3.0". Après conversion, + assemble leurs caractères :
print("7" + "3")
print(int("7") + int("3"))
print(str(7) + str(3))
print(float("7") + 3)
Les résultats affichés sont 73, 10, 73 et 10.0. Les conversions déterminent si le dernier + reçoit du texte ou des nombres.
Une ValueError indique un contenu inadapté à une conversion, comme dans int("abc"). Une TypeError indique une opération incompatible avec ses opérandes, comme dans "5" + 5. Utilise cette différence pour décider si tu dois examiner le texte saisi ou modifier l’opération.
Points clés
- Une conversion renvoie une nouvelle valeur ; affecte-la si tu dois la conserver.
int()tronque les flottants vers zéro et nécessite un texte représentant un entier pour convertir directement une chaîne.float()accepte le texte avec un point décimal ou un exposant.round()utilise la valeur la plus proche et choisit le nombre pair en cas d’égalité exacte.str()fournit du texte pour la concaténation.ValueErroretTypeErrordésignent des types d’échecs différents.
5.2 Contrôler ce que print() affiche
print() affiche des valeurs destinées à être lues. Ses arguments sont les valeurs ou expressions placées entre ses parenthèses. Des virgules séparent les arguments ; Python les évalue avant d’en afficher les résultats.
Affiche des valeurs avec des indications utiles
print("Total:", 5)
print(3 + 4)
print("3 + 4")
Les lignes affichent Total: 5, 7 et 3 + 4. Une indication précise au lecteur ce que signifie une valeur. Un calcul sans guillemets est évalué ; une expression entre guillemets est affichée comme du texte.
Par défaut, print() place un espace entre les arguments et termine par un saut de ligne. Il convertit chaque valeur pour l’affichage, donc print("Total:", 5) peut mélanger du texte et un entier sans appel explicite à str().
Compare avec print("Total:" + str(5)), qui affiche Total:5. Ici, + construit une chaîne avant que print() la reçoive. La concaténation ne fournit pas d’espace automatiquement et il n’y a qu’un seul argument à afficher.
Définis le séparateur
L’argument nommé sep définit le texte placé entre les arguments :
print("a", "b", sep="-")
print(1, 2, 3, sep=", ")
print("A", 12, sep="")
L’affichage est :
a-b
1, 2, 3
A12
Utilise le nom sep. Écrire print("a", "b", "-") fournit une troisième valeur, donc le résultat est a b -. Un séparateur vide assemble directement les arguments affichés ; il ne supprime pas les espaces déjà présents dans leurs chaînes.
Définis la fin de ligne
L’argument nommé end modifie ce qui suit la dernière valeur. Par défaut, c’est un saut de ligne. Une fin vide garde l’affichage suivant sur la même ligne :
print("a", end="")
print("b")
Cela affiche ab sur une ligne. Tu peux associer un signe de ponctuation et un saut de ligne :
print("Hello,", "Ada", end="!\n")
L’affichage est Hello, Ada!, suivi d’un saut de ligne. sep s’applique entre les arguments d’un même appel ; end s’applique après le dernier argument de cet appel. Ils contrôlent des emplacements différents.
Ajoute des sauts de ligne et choisis la précision affichée
Appeler print() sans argument affiche une ligne vide. Un \n dans une chaîne crée un saut de ligne à l’intérieur de celle-ci, comme dans print("Line 1\nLine 2"). Du texte répété peut former un séparateur : print("=" * 20) affiche vingt signes égal.
Python affiche un flottant sous une forme courte qui représente sa valeur stockée. print(1 / 3) affiche 0.3333333333333333. Pour afficher une valeur arrondie, calcule-la d’abord dans l’appel : print(round(1 / 3, 2)) affiche 0.33.
L’arrondi ne garantit pas un nombre fixe de décimales visibles. round(2.50, 2) s’affiche sous la forme 2.5, car le flottant ne stocke pas les zéros finaux comme une instruction d’affichage. Utilise le résultat exactement comme Python le produit lorsque tu vérifies un programme.
Points clés
print()évalue ses arguments et affiche les chaînes sans les guillemets qui les entourent.- Par défaut, un espace sépare les arguments et un saut de ligne est ajouté à la fin.
sepmodifie l’espace entre les arguments ;endmodifie ce qui suit le dernier argument.print()sans argument ajoute une ligne vide.- L’arrondi modifie la précision d’une valeur, mais ne fixe pas le nombre de décimales affichées.
5.3 Construire et tester un programme entrée–traitement–sortie
input() affiche une invite, attend qu’une personne saisisse du texte et appuie sur Entrée, puis renvoie le texte saisi sous forme de chaîne, sans la touche Entrée. Un programme court complet lit les données nécessaires, les traite et affiche un résultat.
Lis du texte et convertis les nombres
name = input("What is your name? ")
print("Hello", name)
L’espace à la fin de l’invite sépare la réponse saisie de la question. La variable stocke le texte comme du texte, même lorsque l’utilisateur saisit des chiffres. Saisir 30 dans input() produit "30", et non l’entier 30.
Choisis une conversion avant de calculer :
age = int(input("Age in whole years: "))
print("Next year:", age + 1)
L’appel interne à input() s’exécute en premier. Si l’utilisateur saisit 30, il renvoie "30" ; int() convertit cette chaîne en 30 ; l’affectation conserve l’entier. L’addition produit ensuite 31.
Utilise float(input(...)) lorsque les valeurs fractionnaires sont autorisées. Une invite doit indiquer quel type de réponse est attendu. Saisir 2.5 ou thirty pour une conversion avec int() lève une ValueError. Saisir 98,6 pour une conversion avec float() échoue aussi ; le séparateur décimal doit être un point.
Une conversion oubliée ne lève pas toujours une erreur. Si deux appels à input reçoivent 5 et 3, leurs valeurs non converties s’additionnent comme des chaînes et produisent 53. Les deux opérandes ont un type qui accepte +, mais ce n’est pas la bonne opération pour additionner des quantités.
Examine un calcul complet
Le schéma entrée–traitement–sortie rend les étapes principales faciles à examiner :
# Convert a temperature from Fahrenheit to Celsius.
fahrenheit = float(input("Temperature in °F: "))
celsius = (fahrenheit - 32) * 5 / 9
print(fahrenheit, "°F is", round(celsius, 1), "°C")
Avec la saisie 98.6, le programme lit le flottant 98.6. Il soustrait 32 pour obtenir 66.6, multiplie par 5 pour obtenir 333.0 et divise par 9 pour obtenir 37.0. La ligne affichée est 98.6 °F is 37.0 °C. La saisie 50 devient 50.0, donc la ligne est 50.0 °F is 10.0 °C.
Voici un programme avec des données entières :
total_minutes = int(input("Enter a whole number of minutes: "))
hours = total_minutes // 60
minutes = total_minutes % 60
print("Hours:", hours, "Minutes:", minutes)
La saisie 135 produit Hours: 2 Minutes: 15. Les indications conviennent pour zéro, un et des résultats plus grands sans changer la formulation. Les deux lignes de traitement utilisent le même total initial ; affecter une valeur à hours ne retire rien de total_minutes.
Teste des valeurs ordinaires et des valeurs limites
Choisis des saisies dont tu peux calculer les réponses à la main. Pour le programme de température, 32 devrait produire 0.0 °C et 212 devrait produire 100.0 °C. Pour les minutes, teste 0, 59 et 60 : ces valeurs vérifient la valeur de départ et le passage de zéro heure complète à une heure complète.
Teste aussi une valeur courante comme 135. Compare les indications exactes, les espacements, les résultats numériques et les types avec ta prévision. Si le code s’exécute mais que le résultat est incorrect, suis les valeurs stockées et l’ordre des opérations. Si une conversion échoue, examine le texte saisi et le type demandé par ton invite.
Points clés
input()renvoie du texte, même lorsqu’un utilisateur saisit des chiffres.- Convertis la saisie avant d’effectuer des calculs numériques.
- Utilise des invites claires et accompagne les résultats d’indications.
- Sépare la lecture des données, le calcul et l’affichage du résultat.
- Teste des valeurs ordinaires et des valeurs limites en les comparant à des réponses calculées à la main.
Python : exemples
1Exécuter un petit programme et le corriger
13 étapes
- 1IntroductionCommencer par prévoir ce qui sera visible
Un programme peut calculer une valeur sans l’afficher. Avant d’exécuter du code, prévois deux choses : ce que Python fera et ce qu’une personne verra.
Nous allons d’abord comparer un essai dans la console avec un script enregistré. Nous examinerons ensuite les erreurs et les commentaires. Garde à l’esprit la distinction entre exécution du code et affichage visible : une ligne peut s’exécuter correctement sans produire de texte à l’écran.
- 2ExempleEssayer une expression dans la console
À l’invite
>>>de la console Python, saisis9 * 3. Python évalue l’expression et affiche automatiquement27.L’invite est fournie par la console ; tu ne saisis que l’expression. Une invite
...signifie que Python attend la suite de la même instruction. La console est pratique pour une vérification rapide comme celle-ci, tandis qu’un script enregistré conserve une suite d’instructions prête à être exécutée à nouveau. - 3ExplicationFaire afficher son calcul à un script
Un script contenant uniquement
9 * 3évalue le produit mais n’affiche rien. Pour l’afficher, écris :print(9 * 3) print("Calculation finished")L’affichage est
27, puisCalculation finishedsur la ligne suivante. L’interpréteur suit l’ordre des instructions. Exécute le script avec la commande d’exécution de l’éditeur ou une commande de terminal ; ne saisis pas cette commande de terminal à l’invite Python. - 4DéfiPrévoir ce qui s’affiche réellement
Un script enregistré contient ces deux lignes. Qu’est-ce qui s’affiche ?
11 + 5 print("Ready to check")---reveal---
Seul
Ready to checkapparaît. La première ligne calcule 16 mais ne l’affiche pas. Si tu saisissais directement cette première expression dans la console interactive, la console afficherait automatiquement sa valeur. La différence vient de l’endroit où l’expression est exécutée. - 5ExplicationDistinguer une exécution arrêtée d’une réponse incorrecte
Une erreur de syntaxe signifie que Python ne peut pas lire le script : l’exécution ne démarre donc jamais. Une erreur d’exécution se produit après le début de l’exécution et l’arrête à l’opération qui échoue.
Un programme contenant une erreur de logique peut s’exécuter sans message. Par exemple, un regroupement incorrect dans une formule produit quand même un calcul valide. Compare son résultat à un calcul fait à la main au lieu d’attendre que Python repère l’erreur.
- 6ExempleLire d’abord la dernière ligne de l’erreur
Examine ce code :
distance = 21 print(distnace)Une trace d’appels se termine en indiquant
NameErroret le nom non définidistnace. Lis ce dernier message, puis examine la ligne indiquée au-dessus. Le nom affecté plus tôt estdistance; les deux orthographes diffèrent. Corrige la recherche en écrivantprint(distance), qui affiche21. - 7ConseilChoisir la prochaine vérification utile
Laisse le type d’erreur orienter ta recherche. Pour une
NameError, vérifie l’orthographe, la casse et si une valeur a été affectée à la variable plus tôt. Pour uneTypeError, examine les types utilisés par l’opération. Pour uneValueError, examine le texte transmis à une conversion.Si la ligne indiquée semble correcte, cherche un guillemet ou une parenthèse non fermée sur la ligne précédente. Corrige une erreur et exécute à nouveau le programme pour trouver le prochain problème que l’exécution peut atteindre.
- 8DéfiLe premier message reste-t-il visible ?
Qu’est-ce qui s’affiche avant que ce programme s’arrête ? Aucune valeur n’a été affectée à
items.print("Checking") print(items) print("Finished")---reveal---
Checkings’affiche. La ligne suivante lève uneNameError, laissant la dernière ligne sans exécution. C’est un échec à l’exécution : Python a pu lire le script, mais n’a pas pu trouver une valeur pendant son exécution. L’affichage précédent reste visible. - 9ExplicationAjouter le sens dont un lecteur a besoin
Un commentaire commence par
#en dehors d’une chaîne et se poursuit jusqu’à la fin de la ligne. Il peut expliquer la raison d’une valeur :service_rate = 0.03 # 3% processing feeLe commentaire indique au lecteur ce que représente le taux. Python l’ignore lors de l’exécution de l’affectation. Laisse au moins deux espaces avant le symbole d’un commentaire en fin de ligne et un espace après. Un nom clair et un commentaire utile se complètent.
- 10DéfiRepérer le début du commentaire
Qu’affiche cette ligne et quels mots Python ignore-t-il ?
print("Order #16") # Packing label---reveal---
Elle affiche
Order #16. Le croisillon entre guillemets appartient à la chaîne. Le second croisillon commence le commentaire, doncPacking labelest ignoré. La position d’un caractère, à l’intérieur ou à l’extérieur d’une chaîne, change la façon dont Python le lit. - 11ConseilGarder un commentaire correct après une modification
Si les frais de traitement passent de 3 % à 5 %, remplace la valeur de
service_ratepar0.05et le commentaire par5% processing fee.Python ne t’avertira pas qu’un commentaire est périmé, car les commentaires ne sont pas exécutés. Un lecteur peut tout de même être induit en erreur. Pour un test temporaire,
#peut désactiver une instruction ; supprime les anciennes lignes désactivées lorsqu’elles ne t’aident plus à comprendre le programme. - 12DéfiCombiner affichage, commentaires et échec
Qu’apparaît-il lorsque ce script enregistré s’exécute ? Supposons qu’aucun nom n’ait été défini auparavant.
print("Status #1") # Show the status. Print("Done")---reveal---
Le commentaire est ignoré et
Status #1s’affiche.Printlève ensuite uneNameError, car Python distingue les noms en majuscules et en minuscules. Le nom natif estprint. Le premier affichage, valide, reste visible parce que l’échec se produit pendant l’exécution. - 13RécapitulatifUtiliser l’affichage comme indice
La console affiche les valeurs des expressions, tandis qu’un script nécessite un appel explicite pour les afficher. Un échec à l’exécution laisse l’affichage précédent visible ; une erreur de syntaxe empêche le script de démarrer.
Pour ton prochain programme court, écris le résultat attendu avant de l’exécuter. Si ta prévision est incorrecte, utilise le type d’erreur ou un suivi des valeurs pour choisir la prochaine vérification. Concentre les commentaires sur le sens que le code n’explique pas déjà.
2Lire le type dans l’écriture d’une valeur
14 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionDes valeurs qui se ressemblent peuvent se comporter différemment
- 2ExempleExaminer trois formes des mêmes chiffres
- 3LienChoisir les données selon leur usage
- 4DéfiDistinguer un texte booléen d’un booléen
- 5ExplicationModifier l’ordre de grandeur d’un flottant avec un exposant
- 6Point cléUne virgule change les données
- 7DéfiÉcrire une petite valeur décimale
- 8ConseilInterpréter les petits chiffres supplémentaires
- 9ExempleChoisir des guillemets extérieurs adaptés au message
- 10ExplicationIntégrer un saut de ligne à une chaîne
- 11DéfiPrévoir l’effet des guillemets autour des noms
- 12Point cléUn espace compte aussi comme donnée
- 13DéfiRelier l’écriture au comportement
- 14RécapitulatifVérifier la valeur avant l’opération
3Suivre une valeur à travers les affectations
14 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionSuivre un instant à la fois
- 2ExempleÉvaluer d’abord, affecter ensuite
- 3Point cléUn résultat stocké ne conserve pas de formule
- 4DéfiSuivre une copie avant une réaffectation
- 5LienChoisir un nom lisible
- 6ExempleGarder les noms natifs disponibles
- 7DéfiCorriger un nom sans changer son sens
- 8ExplicationMettre à jour à partir d’une valeur existante
- 9ExempleNoter uniquement ce qui a changé
- 10DéfiObserver une mise à jour changer le type
- 11ExplicationConserver une valeur initiale avant de l’écraser
- 12ExplicationLire un échange simultané
- 13DéfiCombiner noms, copies et mises à jour
- 14RécapitulatifSuivre les valeurs actuelles, pas les intentions
4Évaluer des expressions une opération à la fois
18 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionSuivre à la fois l’ordre et le type
- 2ExplicationAssocier le symbole à l’opération
- 3ExempleGarder le type à côté du quotient
- 4DéfiChoisir une puissance et son résultat
- 5ExempleEffectuer d’abord l’opération la plus prioritaire
- 6Point cléÀ priorité égale, procéder de gauche à droite
- 7ExplicationLes puissances se regroupent dans l’autre sens
- 8DéfiCorriger le regroupement d’un calcul
- 9ExempleRépartir une quantité en groupes complets
- 10ExplicationArrondir vers le bas, même sous zéro
- 11LienUtiliser les chiffres comme groupes de dix
- 12DéfiTrouver les deux parties de la durée
- 13ExplicationLe texte utilise différemment les mêmes symboles
- 14ExempleConstruire une bordure avant de l’assembler
- 15DéfiConvertir le résultat interne en texte
- 16ConseilRepérer une opération incompatible
- 17DéfiCombiner reste, puissance et texte
- 18RécapitulatifVérifier le résultat intermédiaire
5Transformer des données saisies en un résultat vérifié
15 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionLire, calculer, puis expliquer le résultat
- 2ExplicationConserver la nouvelle valeur d’une conversion
- 3ExempleUn flottant et un texte décimal se convertissent différemment
- 4DéfiDistinguer troncature et arrondi
- 5ExplicationPasser des valeurs distinctes à print
- 6ExempleChanger le séparateur et la fin
- 7DéfiPrévoir le résultat de deux appels à print
- 8ConseilArrondir une valeur sans promettre de zéros supplémentaires
- 9ExempleLire une saisie entière
- 10ExempleCalculer deux résultats à partir du même total
- 11ExempleAccompagner les valeurs finales d’indications
- 12DéfiTrouver la conversion manquante
- 13LienTester l’endroit où la réponse change
- 14DéfiCombiner conversion, division et affichage
- 15RécapitulatifVérifier chaque étape séparément
Python : QCM
Série 1 : Lire de courts programmes et prévoir leurs résultats10 Questions Pratiques
Question 1 sur 10
18 - 6. Qu’apparaît-il lorsqu’il s’exécute ?Afficher la réponseMasquer la réponse
12 pour la même expression, ce qui peut prêter à confusion. Dans un script, utilise print(18 - 6) lorsque le résultat doit être visible.Question 2 sur 10
Un script contient ce code. Quel affichage apparaît avant son arrêt ?
print("Ready")
print(missing_total)
print("Done")
Aucune valeur n’a été affectée à missing_total.
Afficher la réponseMasquer la réponse
Ready. La suivante lève une NameError, donc l’exécution n’atteint jamais le dernier appel à print. C’est un échec à l’exécution, qui laisse l’affichage précédent visible ; une erreur de syntaxe empêcherait tout le script de démarrer.Question 3 sur 10
type("False") indique-t-il ?Afficher la réponseMasquer la réponse
"False" une chaîne contenant cinq caractères ; son type est donc str. Le littéral booléen False n’a pas de guillemets et commence par une majuscule. Un mot qui ressemble à un booléen à l’intérieur d’une chaîne reste du texte ; Python ne réinterprète pas les caractères comme du code.Question 4 sur 10
Afficher la réponseMasquer la réponse
** est l’opérateur de puissance de Python, donc 5 ** 3 calcule 125. L’accent circonflexe ^ effectue une autre opération et ne signifie pas l’élévation à la puissance. Multiplier par trois reviendrait à additionner trois fois cinq, tandis qu’une puissance trois multiplie trois fois le nombre cinq.Question 5 sur 10
print("North\nSouth") ?Afficher la réponseMasquer la réponse
\n représente un saut de ligne dans la chaîne, donc South commence sur une deuxième ligne. Python n’affiche pas ici la barre oblique inverse et le n comme deux caractères visibles. Pour conserver une barre oblique inverse littérale avant n, la chaîne source devrait comporter une double barre oblique inverse.Question 6 sur 10
Qu’est-ce que ceci affiche ?
stock = 14
saved = stock
stock = 9
print(stock, saved)
Afficher la réponseMasquer la réponse
saved = stock, le nom saved reçoit la valeur actuelle 14. La réaffectation de stock fait ensuite désigner 9 à ce seul nom, donc l’affichage est 9 14. Obtenir 9 9 reviendrait à considérer l’affectation précédente comme un lien durable entre les noms, ce qu’elle n’est pas.Question 7 sur 10
Afficher la réponseMasquer la réponse
available_seats relie des mots en minuscules par un caractère de soulignement et commence par une lettre. Un trait d’union est lu comme une soustraction, donc available-seats n’est pas un seul nom de variable. Les espaces sont interdits dans un nom et un chiffre ne peut pas être son premier caractère.Question 8 sur 10
24 / 6 produit-il ?Afficher la réponseMasquer la réponse
/ donne un flottant pour des opérandes entiers, donc 24 / 6 produit 4.0. Le fait que la division soit exacte ne change pas cette règle de type. 24 // 6 produirait l’entier 4, tandis que % trouverait le reste nul plutôt que le quotient.Question 9 sur 10
40 - 18 / 3 * 2 + 1 produit-il ?Afficher la réponseMasquer la réponse
18 / 3 donne 6.0, puis la multiplication par 2 donne 12.0. Le calcul restant est 40 - 12.0 + 1, soit 29.0. Multiplier 3 * 2 en premier formerait à tort un dénominateur de six.Question 10 sur 10
print("Zone", 4, sep="-") ?Afficher la réponseMasquer la réponse
sep="-" place un trait d’union entre les deux arguments affichés, ce qui donne Zone-4. Il n’ajoute pas le trait d’union après la dernière valeur ; la fin reste le saut de ligne par défaut. Sans l’argument nommé sep, l’espace habituel resterait entre les arguments.Série 2 : Manipuler des valeurs changeantes et des données typées10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
Qu’est-ce que ceci affiche ?
print("Bay #7") # Pickup point
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
"00482" et ne sera pas utilisé dans des calculs. Quel type permet le mieux de le conserver ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
Quelle valeur cost a-t-il à la fin ?
units = 6
rate = 4
cost = units * rate
units = 8
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
Qu’est-ce que ceci affiche ?
points = 12
points -= 5
points *= 3
print(points)
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
6e2 a-t-il ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
print("Go" * 2 + "!") ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
int(-8.9) ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
Qu’apparaît-il sur la première ligne affichée ?
print("P", "Q", sep=":", end="|")
print("R", "S", sep="-")
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
Un utilisateur saisit 7 à la première invite et 4 à la seconde. Qu’affiche ce programme ?
first = input("First: ")
second = input("Second: ")
print(int(first + second) + 2)
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Série 3 : Suivre des expressions et diagnostiquer des erreurs10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
amount = 11, puis amount + 4. Qu’affiche la console pour ces deux saisies ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
Un script contient ce code. Quel affichage apparaît avant le message d’erreur ?
print("Loading")
value = 6
print("Value:", value
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
print('He said "yes"') ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
MAX_ATTEMPTS = 5. Qu’indiquent les majuscules ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
Qu’est-ce que ceci affiche ?
a = 4
b = 9
a, b = b, a
a += b
print(a, b)
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
(-3) ** 2 + 2 ** 3 produit-il ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
-17 // 5 et de -17 % 5, dans cet ordre ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
int("12.0") ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
Un utilisateur saisit 84.5. Le programme doit convertir des degrés Fahrenheit en degrés Celsius. Par quoi remplacer la ligne de calcul pour corriger son résultat ?
fahrenheit = float(input("Temperature in °F: "))
celsius = fahrenheit - 32 * 5 / 9
print(round(celsius, 1))
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Série 4 : Choisir l’opération adaptée à la tâche10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
Un script contient les lignes ci-dessous. Quel message apparaît ?
# print("Check")
print("Open #2")
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
3 + 2.0 produit-il ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
label = "Desk", qu’affiche print("label", label, sep=":") ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
Qu’est-ce que ceci affiche ?
base = 8
double = base * 2
copy = double
base = 10
double = base * 2
print(copy, double)
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
int(-6.5), round(-6.5) et -13 // 2 produisent-ils, dans cet ordre ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
9.0 // 4 et 9 // 4 produisent-ils, dans cet ordre ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
n = 6, n * 3, print(n). Quelle différence apparaît ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
Pourquoi la dernière ligne échoue-t-elle ?
input = "Leah"
name = input("Name: ")
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
print("Row", 8, "|", end="!") avant que le curseur s’arrête ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
Un programme de conversion de minutes en heures donne le résultat attendu pour la saisie 145. Un utilisateur saisit ensuite 119. Qu’affiche-t-il et quelle modification permet à hours de compter les heures complètes ?
total_minutes = int(input("Whole minutes: "))
hours = round(total_minutes / 60)
minutes = total_minutes % 60
print(hours, minutes)
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Série 5 : Combiner suivi, conversions et vérifications de programmes10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
print("6" + str(2 + 3) * 2) ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
Un utilisateur saisit 4. Qu’apparaît-il, en dehors de l’invite de saisie et du message d’erreur ?
count = input("Count: ")
print("Received")
next_count = count + 1
print(next_count)
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
fee_rate = 0.04 # 4% service fee à fee_rate = 0.06 # 4% service fee. Que faut-il corriger ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
0.1 + 0.2 peut-il s’afficher sous la forme 0.30000000000000004 ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
Qu’est-ce que ceci affiche ?
rate = 6
hours = 4
pay = rate * hours
rate += 2
pay += rate
hours /= 2
print(pay, hours)
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
-2 ** 3 ** 2 + 20 // 3 % 4 produit-il ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
-23. Son quotient et son reste dans la division par 6 doivent permettre de le reconstituer. Quels sont les deux résultats ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
print("Code: " + str(3 * 4)) ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
Qu’est-ce que ceci affiche ?
reading = "18"
float(reading)
print(reading + "2")
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
Une machine facture 3 dollars pour chaque tranche complète de 15 minutes et 1 dollar pour chaque minute restante. Par quoi remplacer la ligne de calcul pour déterminer le montant à partir d’une saisie entière ?
minutes = int(input("Minutes: "))
charge = 0
print("Charge in dollars:", charge)
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Tu bloques sur ton propre exercice ? Aide aux Devoirs
Mots-Clés
A
Accumulateur
total = 0 avant d’utiliser des mises à jour comme total += cost pour accumuler plusieurs montants.Affectation
= avec le nom à gauche.area = width * height, la multiplication est évaluée avant que son résultat soit stocké sous area.Affectation augmentée
score += 6 ajoute six au score actuel et réaffecte la somme au même nom.Affectation simultanée
x, y = 4, 8, le premier nom reçoit quatre et le second reçoit huit en une seule instruction.Argument
print("Score:", 9), l’indication et l’entier sont des arguments distincts affichés dans cet ordre.Arrondi
round() de Python choisit le voisin pair pour les valeurs exactement à mi-chemin.round(6.5) donne six, tandis que round(7.5) donne huit, car les deux voisins choisis sont pairs.Associativité
16 / 4 * 2 se regroupe comme (16 / 4) * 2 : le résultat est donc 8.0, et non 2.0.B
Booléen
bool qui prend l’une des deux valeurs True ou False, écrites avec une majuscule et sans guillemets.4 < 9 produit le booléen True, tandis que le texte entre guillemets "True" est une chaîne.Bug
C
Chaîne de caractères
str, contenant du texte comme des lettres, des chiffres, des espaces, des signes de ponctuation et des symboles."Bus 09" conserve ses lettres, son espace et son identifiant commençant par zéro dans une seule valeur textuelle.Chaîne vide
"" ou '' ; elle diffère d’une chaîne contenant un espace." " insère un caractère espace.Commentaire
# en dehors d’une chaîne et se termine à la fin de la ligne ; Python l’ignore lors de l’exécution du programme.Commentaire en fin de ligne
rate = 0.07 # 7% tax, l’affectation s’exécute et les derniers mots expliquent le sens du taux.Concaténation
+, en conservant l’ordre de leurs caractères et sans insérer d’espaces ni de signes de ponctuation supplémentaires."Room " et "12" conserve l’espace déjà présent dans la première chaîne et donne "Room 12".Console interactive
>>>, saisir 14 + 2 fait afficher 16 par la console sans appel à print.Constante
FEE_RATE indique au lecteur de considérer ce taux comme fixe lorsqu’il suit le programme.Conversion de type
int(text) dans une variable lorsqu’un calcul ultérieur nécessite la valeur convertie plutôt que le texte.D
Débogage
Délimiteur de chaîne
"We're ready" permettent à l’apostrophe de rester dans la chaîne.Division entière
-10 // 3 donne -4, car -3,333… s’arrondit vers le bas, pas vers zéro.Docstring
#.E
Entier
int sans partie fractionnaire ; les entiers Python n’ont pas de limite fixe de taille.item_count = 24 pour un dénombrement et écris les grands littéraux entiers avec, si besoin, des caractères de soulignement.Entrée
input() lit une ligne saisie et renvoie ses caractères sous forme de chaîne.45 produit le texte "45", qui doit être converti avant de pouvoir être utilisé comme un entier.Entrée–traitement–sortie
Erreur d’exécution
Erreur de logique
Erreur de syntaxe
Expression
print(7 * 6), l’expression 7 * 6 est évaluée avant que sa valeur soit affichée à l’écran.Expression de types mixtes
2 + 0.5 fonctionne avec des nombres, tandis que "2" + 0.5 échoue sans conversion explicite.É
Élévation à la puissance
** ; avec des opérandes entiers et un exposant non négatif, le résultat est un entier.4 ** 3 multiplie trois fois le nombre quatre et donne l’entier 64.F
Fin de ligne
end et vaut un saut de ligne par défaut.end="" ne laisse aucun caractère de fin, donc l’appel suivant à print continue sur la même ligne.Flottant
6.0 est un flottant même si sa valeur numérique est exactement égale à l’entier six.Fonction native
print() ou input(), dont le nom peut être masqué par une affectation.item_total garde le nom natif int disponible pour les conversions.I
Identificateur
seat_count2 est valide, mais un nom qui commence par un chiffre ou contient un espace ne l’est pas.Incrémentation
visits = 4, la mise à jour visits += 1 enregistre une visite supplémentaire et porte le décompte à cinq.Instruction
count = 6 affecte une valeur avant que l’instruction ultérieure print(count) l’utilise.Interpréteur
print(6 * 7), l’interpréteur évalue 6 * 7 et fournit la valeur obtenue à l’appel à print.Invite
"Whole minutes: " indique que le programme attend du texte écrit sous forme d’entier et laisse un espace pour la saisie.L
Littéral
12, 12.0 et "12" sont respectivement un entier, un flottant et une chaîne.M
Mise en commentaire
# devant un appel temporaire à print désactive cet affichage sans supprimer la ligne de l’éditeur.Moins unaire
10 - -2, le second signe moins donne moins deux ; le soustraire donne donc la valeur 12.Mot-clé
class comme cible d’une affectation provoque une erreur de syntaxe avant que le script puisse s’exécuter.N
Notation scientifique
e et d’une puissance de dix, ce qui permet d’exprimer de façon compacte de très grandes ou de très petites valeurs numériques.8e-3 signifie huit divisé par mille et représente le flottant 0.008.O
Opérande
hours * rate, les valeurs actuelles de hours et de rate sont les opérandes de la multiplication.Opérateur
+ pour l’addition ou ** pour une puissance.6 * 2 par 6 ** 2 change l’opération : la multiplication devient une élévation à la puissance.P
Parenthèses
(10 + 6) / 4, les parenthèses garantissent que toute la somme est divisée par quatre pour donner 4.0.Parité
-5 % 2 est un, ce qui montre que moins cinq est impair selon la même règle du reste.Priorité
4 + 3 * 5, la multiplication est prioritaire sur l’addition, donc le résultat est dix-neuf.Programme
Q
Quotient
22 // 5, le quotient arrondi à l’entier inférieur est quatre et le reste correspondant est deux.R
Réaffectation
level = 2, puis level = 5, lire level donne cinq au lieu de la valeur précédente, deux.Répétition de chaîne
* avec une chaîne et un nombre entier de répétitions pour créer le nombre demandé de copies directement assemblées."ab" * 3 produit "ababab" ; aucun espace n’est ajouté entre les copies répétées.Reste
% qui complète une division ; avec des entiers et un diviseur positif, il est non négatif et inférieur au diviseur.43 % 8 donne 3 éléments restants après cinq groupes complets.S
Script
Sensibilité à la casse
total, écrire print(Total) échoue, sauf si cet autre nom avec une majuscule existe aussi.Séparateur
print() entre les arguments affichés ; il est contrôlé par l’argument nommé sep et vaut un espace par défaut.print("A", "B", sep="-") utilise un trait d’union comme séparateur et affiche A-B sur la ligne de sortie.Séquence d’échappement
"Up\nDown", la séquence d’échappement crée un saut de ligne entre les deux mots lorsque la chaîne est affichée.snake_case
total_seconds suit le snake_case et indique l’unité utilisée dans un calcul de durée.Sortie
Distance: 18 miles donne à la fois une valeur et l’unité nécessaire pour l’interpréter.T
Tableau de suivi
price = 10 modifie la colonne du prix tandis qu’un total enregistré auparavant reste inchangé.Trace d’appels
Troncature
int() pour un flottant, sans arrondir à l’entier le plus proche.-9.8 avec int() donne -9, tandis qu’arrondir cette même valeur négative à l’entier inférieur donnerait -10.Typage dynamique
entry = 3 suivi de entry = "three", même si un sens cohérent est plus clair.Type
"25" est str : ajouter une autre chaîne assemble donc du texte au lieu d’additionner des quantités numériques.type()
type() indique le type de son argument et permet d’examiner une valeur stockée ou le résultat d’une expression.type("12") révèle une chaîne, même si les caractères affichés ressemblent à un nombre.TypeError
"Count: " + 7 échoue, car la concaténation nécessite du texte des deux côtés de +.V
Valeur
25 et "25" se ressemblent à l’affichage mais acceptent des opérations différentes dans un programme.Valeur limite
ValueError
"ten" est du texte, mais int("ten") échoue parce que ce texte ne décrit pas un entier.Variable
length = 6, l’expression length * 2 lit la valeur actuelle par le nom length.Variable temporaire
temp = left préserve l’ancienne valeur de gauche avant que left soit écrasé.À propos de cette unité
Crée ton propre Matériel d'Étude
Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.