Aller au contenu

Entrées et sorties en Python

En général, un programme traite des données (texte, image, audio, vidéo, etc.) et en renvoie d'autres.

Les données à traiter sont dites en entrée du programme ; celles qui sont renvoyées sont dites en sortie.

graph LR
%%{init: {'curve': 'basis'}}%%
val([données en entrée])--> fonc[[programme]] --> res([données en sortie])
classDef params fill:#00BFFF,stroke:#333
classDef foncs fill:#f96,stroke:#333
classDef results fill:#9f6,stroke:#333
class fonc foncs
class val params
class res results

La fonction print

Après traitement de données, un programme peut renvoyer les résultats vers différentes sorties :

  • dans une base de données (exemple : enregistrement d'une rentrée d'argent sur un compte bancaire) ;
  • dans un fichier (sauvegarde de résultats) ;
  • vers un périphérique (imprimante, émetteur, etc.) ;
  • plus spécifiquement vers la sortie standard, chez nous l'écran.

La fonction print est utilisée dans ce dernier cas.

Exercice

  1. Observez et exécutez les exemples présents dans l'éditeur ci-dessous.
    ###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
    (Ctrl+I)
    Entrer ou sortir du mode "deux colonnes"
    (Alt+: ; Ctrl pour inverser les colonnes)
    Entrer ou sortir du mode "plein écran"
    (Esc)
    Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
    Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
  1. Faîtes en sorte, en utilisant var1 et var2 d'avoir l'affichage Bonjour tout le monde sur une seule ligne.

À retenir

La fonction print permet d'afficher à l'écran des constantes ou le contenu de variables.

Dans un même print, les objets à afficher sont séparés par des virgules.

Exercice

Écrivez une instruction dans l'éditeur ci-dessous de façon à ce qu’il s'affiche exactement ceci :

2^100 = 1267650600228229401496703205376

dans la console.

Consigne : le grand nombre de droite doit être calculé par Python (pas de copié-collé...).

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Exercice

Modifiez le programme ci-dessous pour obtenir ce résultat :

Superman est le plus intelligent 🤩
Le plus fort est Superman et c'est aussi le plus beau !
Superman ! Superman ! Superman ! Superman ! Superman ! Superman !

Consignes : vous pourrez changer le nom à la première ligne seulement et le reste du programme devra s’adapter. N'ajoutez pas de print supplémentaire.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

La fonction input

Un programme peut aller chercher ses données dans une base de données (exemple : moteur de recherche), dans un fichier (exemple : ouverture d'un document par un traitement de texte) ou elles peuvent fournies par un humain (via le clavier ou la souris) ou un autre programme.

Tous ces modes seront étudiés cette année, commençons par le cas d'une interaction homme machine (IHM) via le clavier.

Pour entrer avec le clavier des données dans un programme, il faut utiliser la fonction input.

Voici la syntaxe de cette fonction :

nom_variable = input()

Lors de l'exécution, la variable nommée nom_variable contiendra la valeur entrée par l'utilisateur humain.

Exercice

Entrez ce script dans l'éditeur :

reponse = input()
print(reponse * 2)

Puis exécutez-le plusieurs fois en entrant du texte puis des nombres (il y a un bug, cliquez sur Annuler la deuxième fois que la fenêtre de Saisie s'ouvre).

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Que remarquez-vous ?

Attention

La fonction input renvoie toujours du texte. Si nous voulons récupérer un nombre, il faut convertir la valeur entrée. Par exemple, pour afficher le double d'un entier entré par l'utilisateur :

reponse = input()
reponse = int(reponse)
print(reponse * 2)
Remarque

Nous pouvons écrire cela de façon plus compacte :

reponse = int(input())
print(reponse * 2)

ou encore, en une seule ligne :

    print(int(input()) * 2)

mais nous perdons en lisibilité.

En pratique, le programmeur et l'utilisateur du programme sont rarement la même personne.

Il faudrait donc que l'utilisateur sache ce que le programme lui demande (un identifiant numérique ? une adresse mail ?), pour cela nous ajoutons un texte, soit avec deux instructions :

print("Entrez une valeur")
var = input()

soit avec une instruction :

var = input("Entrez une valeur")

À retenir

  • pour afficher (sortir) des valeurs : print(var1, var2, ...)
  • pour entrer des valeurs : var = input("un texte à destination pour l'utilisateur")
  • penser à convertir éventuellement le résultat de input avec les fonctions int ou float suivant les cas.

Exercice

Écrivez un programme qui demande le nom de l'utilisateur et qui, si par exemple le nom entré est "Martin", affiche dans la console le texte Bienvenue Martin !.

Votre programme devra pouvoir dire Bienvenue à n'importe qui !

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Exercice

Écrivez un programme qui demande à un utilisateur son année de naissance (exemple : l’utilisateur choisit 2006) puis l’année actuelle (exemple : 2022) et affiche ensuite le message : C’était il y a ... années (dans notre exemple : C’était il y a 16 années).

Votre programme devra pouvoir donner l'"âge" de n'importe qui bien sûr.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier