Cours de Python / Variables, input() et print() : saisir et afficher une dépense
En Python, une variable désigne une valeur, input() lit du texte et print() affiche un résultat. Même si la saisie ressemble à un nombre, vous devez la convertir avant de l’utiliser pour un calcul : ce premier exercice lit le nom et le montant d’une dépense, puis affiche le montant mis en forme.
Distinguer affectation et commentaire
Le signe = associe le résultat de l’expression à droite au nom placé à gauche. Il ne vérifie pas une égalité mathématique. Dans cet exemple, la deuxième ligne lit l’ancienne valeur de amount, lui ajoute 500, puis associe le résultat au même nom.
amount = 3500
amount = amount + 500
print(amount) # Display the calculated result
Ce programme affiche 4000. Le texte anglais après # signifie « afficher le résultat calculé » : il s’agit d’un commentaire, pas d’une instruction exécutée. Un commentaire commence par # en dehors d’une chaîne et va jusqu’à la fin de la ligne. Utilisez-le surtout pour expliquer une décision, une unité ou une contrainte que le code seul ne rend pas évidente.
Choisissez des noms décrivant le rôle des valeurs, comme amount pour un montant. Évitez d’utiliser print, input ou list comme noms de variables : vous masqueriez les fonctions ou types intégrés correspondants. Une réaffectation est autorisée, mais elle change ce que le nom désigne pour les instructions suivantes.
Lire une dépense avec un programme complet
Enregistrez le code suivant en UTF-8 dans input_expense.py, à côté du dossier .venv de votre projet. Aucun paquet externe n’est nécessaire. Dans le terminal utilisant cet environnement, lancez python input_expense.py. Si vous appelez directement l’interpréteur du projet, utilisez son chemin comme expliqué dans le guide des environnements virtuels.
name = input("name: ").strip()
amount_text = input("amount: ").strip()
amount = int(amount_text)
print(f"{name}: {amount:,} KRW")
- À l’invite
name:, saisissezlunch, puis appuyez sur Entrée. Ce texte représente le nom de la dépense. - À l’invite
amount:, saisissez8000sans séparateur de milliers, puis appuyez sur Entrée. - Vérifiez que la dernière ligne affiche
lunch: 8,000 KRW. KRW désigne ici le won sud-coréen, l’unité conservée pour les exemples de dépenses du cours.
Si l’on capture uniquement ce que le programme écrit sur sa sortie standard, sans les caractères que vous avez tapés, on obtient :
name: amount: lunch: 8,000 KRW
Ce bloc n’est pas une transcription complète de l’écran interactif. Dans un terminal ordinaire, les caractères saisis sont généralement visibles après les invites et la touche Entrée fait passer la saisie à la ligne suivante. Le programme, lui, ne répète pas automatiquement la saisie dans sa sortie standard. Cette distinction explique pourquoi les deux invites se suivent dans le bloc capturé.
Suivre le texte jusqu’au nombre affiché
input() renvoie une chaîne de caractères. Ainsi, saisir 8000 fournit d’abord le texte "8000", pas le nombre entier 8000. La méthode strip() retire les espaces au début et à la fin du texte ; elle ne transforme pas ce texte en nombre et ne supprime pas les espaces situés au milieu.
amount_text conserve cette chaîne nettoyée. int(amount_text) crée ensuite un entier si le texte représente un entier valide. Séparer les deux noms permet de voir à quel endroit le type change, au lieu de supposer qu’une saisie d’apparence numérique peut déjà participer à une addition.
La dernière ligne utilise une chaîne formatée, ou f-string : le préfixe f permet d’évaluer les expressions entre accolades. Dans {amount:,}, la virgule est une consigne de présentation qui regroupe les milliers avec des virgules. Il s’agit du format explicitement choisi par l’exemple, pas d’une adaptation automatique aux conventions françaises. La valeur entière reste 8000 ; seule sa représentation affichée devient 8,000.
La référence des fonctions intégrées input et int décrit la lecture et la conversion. Les règles de regroupement des nombres figurent dans le mini-langage de spécification des formats.
Essayer d’autres saisies et comprendre les erreurs
Relancez le script pour chaque essai, en conservant lunch comme nom afin de ne modifier qu’une donnée à la fois :
- Saisissez
9000comme montant. La ligne finale doit devenirlunch: 9,000 KRW. - Saisissez
8000.5. La conversion avecint()échoue avecValueError, car ce texte contient une partie décimale. La fonction ne le tronque pas comme elle pourrait le faire avec une valeur déjà de type flottant. - Validez une saisie de montant vide en appuyant directement sur Entrée. La chaîne vide ne peut pas non plus être convertie en entier. Le texte
abcéchoue pour la même raison générale : ce n’est pas une représentation d’entier valide. - Relancez avec
8000pour retrouver le résultat initial et confirmer que le fichier n’a pas été modifié pendant les essais.
Lorsqu’il attend à une invite, input() suspend normalement le programme jusqu’à la saisie. Un curseur immobile ne signifie donc pas forcément que le programme est bloqué. En cas d’erreur, lisez la dernière ligne du message et repérez la conversion concernée.
Cet exercice laisse volontairement l’erreur de conversion interrompre le programme. Pour demander une nouvelle saisie, il faudra ajouter une validation avec une boucle et une gestion ciblée des exceptions. La conversion seule n’impose pas non plus les règles métier : elle accepte par exemple un entier négatif, alors que votre application peut vouloir interdire une dépense négative.




