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")
  1. À l’invite name:, saisissez lunch, puis appuyez sur Entrée. Ce texte représente le nom de la dépense.
  2. À l’invite amount:, saisissez 8000 sans séparateur de milliers, puis appuyez sur Entrée.
  3. 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 :

  1. Saisissez 9000 comme montant. La ligne finale doit devenir lunch: 9,000 KRW.
  2. Saisissez 8000.5. La conversion avec int() échoue avec ValueError, 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.
  3. 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.
  4. Relancez avec 8000 pour 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.