
Entrées/sorties standard (stdin, stdout, stderr)
Découvrez les entrées/sorties standard en Python (stdin, stdout, stderr). Apprenez à lire les données entrées par l'utilisateur avec input(), à afficher des données à l'écran avec print(), et à gérer la redirection des entrées/sorties.
Lire les données entrées par l'utilisateur (`input()`): interagissez avec votre programme
La fonction `input()` vous permet de lire les données entrées par l'utilisateur au clavier. Elle affiche une invite (un message optionnel), attend que l'utilisateur tape du texte et appuie sur Entrée, puis renvoie le texte entré sous forme d'une chaîne de caractères.
Par exemple : `nom = input('Entrez votre nom : ')`. Ce code affiche l'invite "Entrez votre nom : ", attend que l'utilisateur entre son nom et appuie sur Entrée, puis stocke le nom entré dans la variable `nom`.
La fonction `input()` renvoie toujours une chaîne de caractères. Si vous voulez lire un nombre, vous devez convertir la chaîne en entier ou en flottant en utilisant `int()` ou `float()`. Par exemple : `age = int(input('Entrez votre âge : '))`.
Il est important de valider les données entrées par l'utilisateur, pour éviter les erreurs. Par exemple, si vous attendez un nombre, vous pouvez utiliser un bloc `try...except` pour gérer l'exception `ValueError` qui sera levée si l'utilisateur entre du texte qui ne peut pas être converti en nombre.
Nous verrons des exemples d'utilisation de `input()`, comment afficher une invite, comment convertir la chaîne renvoyée en nombre, et comment valider les données entrées.
Afficher des données à l'écran (`print()`): communiquez avec l'utilisateur
La fonction `print()` vous permet d'afficher des données à l'écran (sur la sortie standard, `stdout`). Elle prend en argument un ou plusieurs objets (chaînes de caractères, nombres, listes, etc.), les convertit en chaînes de caractères (si nécessaire), et les affiche à l'écran, séparés par des espaces et suivis d'un retour à la ligne.
Par exemple : `print('Bonjour', 'le', 'monde')` affiche "Bonjour le monde" à l'écran.
Vous pouvez personnaliser le séparateur entre les objets en utilisant l'argument `sep`. Par exemple : `print('Bonjour', 'le', 'monde', sep='-')` affiche "Bonjour-le-monde".
Vous pouvez personnaliser le caractère de fin de ligne en utilisant l'argument `end`. Par exemple : `print('Bonjour', end=' ! ')` affiche "Bonjour ! " sans retour à la ligne.
Vous pouvez utiliser des chaînes de caractères formatées (f-strings) pour insérer des variables dans le texte affiché : `print(f'Bonjour {nom}, vous avez {age} ans.')`.
Nous verrons des exemples d'utilisation de `print()`, comment afficher différents types de données, comment personnaliser le séparateur et le caractère de fin de ligne, et comment utiliser des f-strings.
Redirection des entrées/sorties : lisez et écrivez depuis/vers des fichiers
Par défaut, `input()` lit les données depuis le clavier (l'entrée standard, `stdin`), et `print()` affiche les données à l'écran (la sortie standard, `stdout`). Cependant, vous pouvez rediriger ces entrées/sorties vers des fichiers.
Vous pouvez rediriger l'entrée standard en utilisant l'opérateur `<` sur la ligne de commande. Par exemple : `python mon_programme.py < fichier_entree.txt` exécute le programme `mon_programme.py` en lisant les données depuis le fichier `fichier_entree.txt` au lieu du clavier.
Vous pouvez rediriger la sortie standard en utilisant l'opérateur `>` sur la ligne de commande. Par exemple : `python mon_programme.py > fichier_sortie.txt` exécute le programme `mon_programme.py` en écrivant les données dans le fichier `fichier_sortie.txt` au lieu de les afficher à l'écran. Si le fichier existe déjà, il est écrasé. Vous pouvez utiliser `>>` pour ajouter les données à la fin du fichier au lieu de l'écraser.
Vous pouvez également rediriger la sortie d'erreur standard (`stderr`) en utilisant l'opérateur `2>` sur la ligne de commande. Par exemple: `python mon_programme.py 2> fichier_erreurs.txt`.
La redirection des entrées/sorties est utile pour automatiser des tâches, pour tester votre programme avec des données de test, ou pour enregistrer les résultats de votre programme dans un fichier.
Nous verrons des exemples de redirection des entrées/sorties, et comment les utiliser pour lire et écrire des données depuis/vers des fichiers.