
Obtenir des données : la fonction `input()`
Apprenez à utiliser la fonction input() en Python pour rendre vos programmes interactifs en demandant et récupérant des informations auprès de l'utilisateur.
Le rôle de `input()` : rendre les programmes interactifs
Si la fonction `print()` permet à votre programme de parler, la fonction `input()` lui permet d'écouter. Pour qu'un programme soit véritablement interactif et adaptable, il doit pouvoir recevoir des informations de l'utilisateur pendant son exécution. C'est précisément le rôle de la fonction `input()` en Python. Elle met en pause l'exécution du script et attend que l'utilisateur saisisse une ligne de texte au clavier et valide cette saisie en appuyant sur la touche "Entrée".
Une fois que l'utilisateur a validé sa saisie, la fonction `input()` retourne le texte saisi sous forme d'une chaîne de caractères (`str`). Cette chaîne peut ensuite être stockée dans une variable pour être utilisée ultérieurement dans le programme, par exemple pour personnaliser un message, effectuer un calcul (après conversion), ou prendre une décision.
L'utilisation de `input()` transforme un script statique en une application capable de réagir dynamiquement aux entrées de l'utilisateur, ouvrant la voie à une multitude de possibilités : jeux simples, utilitaires de calcul personnalisés, scripts demandant des configurations, etc.
Syntaxe et utilisation de `input()` avec une invite (prompt)
La syntaxe de base de la fonction `input()` est très simple. Elle peut être appelée sans argument, mais il est fortement recommandé de lui passer un argument : une chaîne de caractères qui servira d'invite (ou "prompt" en anglais). Cette invite est affichée à l'utilisateur pour lui indiquer quel type d'information est attendu.
# Demander le nom de l'utilisateur
nom_utilisateur = input("Veuillez entrer votre nom : ")
# Demander l'âge de l'utilisateur
reponse_age = input("Quel âge avez-vous ? ")
# Afficher les informations recueillies (pour l'instant, ce sont des chaînes)
print(f"Bonjour, {nom_utilisateur} !")
print(f"Vous avez indiqué avoir {reponse_age} ans.") Dans cet exemple, lorsque la ligne `nom_utilisateur = input("Veuillez entrer votre nom : ")` est exécutée, le message "Veuillez entrer votre nom : " s'affiche dans la console, suivi d'un curseur clignotant. Le programme attend. Si l'utilisateur tape "Sophie" puis "Entrée", la variable `nom_utilisateur` contiendra alors la chaîne de caractères `"Sophie"`.Fournir une invite claire et concise est crucial pour une bonne expérience utilisateur. Sans invite, l'utilisateur verrait simplement un curseur clignotant et ne saurait pas ce que le programme attend de lui. Il est courant d'ajouter un espace à la fin de la chaîne de l'invite (comme dans `"Veuillez entrer votre nom : "`) pour que la saisie de l'utilisateur ne soit pas collée directement au texte de l'invite, améliorant ainsi la lisibilité.
Le type de retour de `input()` : toujours une chaîne de caractères (`str`)
Un aspect fondamental et absolument essentiel à comprendre à propos de la fonction `input()` est qu'elle retourne toujours une chaîne de caractères (`str`), quelle que soit la nature de ce que l'utilisateur tape. Même si l'utilisateur entre des chiffres, comme "123" ou "3.14", la valeur retournée par `input()` sera la chaîne `"123"` ou la chaîne `"3.14"`, et non les nombres `123` (type `int`) ou `3.14` (type `float`).
Cette caractéristique a des implications majeures. Par exemple, si vous essayez d'effectuer des opérations arithmétiques directement sur le résultat de `input()` sans conversion préalable, vous obtiendrez des résultats inattendus ou des erreurs :
nombre_str_1 = input("Entrez un premier nombre : ") # L'utilisateur tape 10
nombre_str_2 = input("Entrez un deuxième nombre : ") # L'utilisateur tape 5
# Tentative d'addition (erronée)
somme_incorrecte = nombre_str_1 + nombre_str_2
print(f"Résultat incorrect de l'addition : {somme_incorrecte}")
# Si l'utilisateur a tapé 10 et 5, affichera : Résultat incorrect de l'addition : 105
# Car il s'agit d'une concaténation de chaînes ("10" + "5" = "105")Ce comportement souligne la nécessité de valider et de convertir les entrées utilisateur lorsque vous attendez un type de données spécifique (comme un nombre). Nous aborderons les techniques de conversion (par exemple, utiliser `int()` ou `float()`) dans le sous-chapitre suivant. Pour l'instant, retenez bien que `input()` vous donne du texte, et c'est à vous, le programmeur, de traiter ce texte de manière appropriée en fonction de vos besoins.