Python / input() / Utiliser une saisie dans une variable

En Python, input() lit une ligne de l’entrée standard et renvoie une chaîne. name = input() permet de l’utiliser dans une variable. Même une saisie composée de chiffres doit être convertie avec int() ou float() avant un calcul. Le saut de ligne final est supprimé, mais les autres espaces sont conservés.

Lire une ligne et l’utiliser

Ces exemples nécessitent seulement Python 3. Leurs résultats ont été vérifiés avec une entrée standard fournie à Python 3.12.14. Enregistrez chaque exemple complet en UTF-8 dans input_demo.py, puis lancez python input_demo.py dans un terminal, ou python3 selon votre environnement. Remplacez le contenu pour chaque exemple indépendant.

Après le lancement, saisissez JB puis Entrée. Aucune invite n’est affichée ici : attendre sans sortie visible est normal.

name = input()
print(f"Hello, {name}!")
print(type(name).__name__)

Les blocs de résultats montrent uniquement la sortie du programme, sans l’écho des caractères saisis dans le terminal.

Hello, JB!
str

Le paramètre prompt de la documentation d’input() permet d’afficher une consigne avec input("Name: "). Cette consigne ne fait pas partie du résultat. L’entrée standard peut aussi provenir d’un fichier ou d’un autre programme.

Convertir le texte numérique

Saisissez 0012 sur une ligne, puis 1.25 sur la suivante. Chaque appel lit sa propre ligne ; ne regroupez pas les deux valeurs.

text = input()
print(repr(text))
print(text + "1")
number = int(text)
print(number + 1)
price = float(input())
print(price * 2)
'0012'
00121
13
2.5

repr() rend la chaîne visible avec ses guillemets. Ajouter "1" au texte produit 00121 ; ajouter 1 après conversion en entier donne 13. Les zéros initiaux disparaissent lors de la conversion. Conservez donc les codes postaux et identifiants en texte lorsque leur forme compte.

int("1.25") et int("hello") lèvent ValueError. Utilisez float lorsque les nombres flottants conviennent ; cet exemple emploie un point décimal. Les symboles monétaires et virgules de groupement ne sont pas nettoyés automatiquement. Pour des calculs monétaires décimaux exacts, le choix du type demande une attention distincte des flottants binaires.

Redemander une valeur incorrecte

Une conversion réussie ne garantit pas une valeur acceptable. Ce programme demande un âge non négatif. Saisissez successivement hello, -1 et 20, chacun sur une ligne :

while True:
    try:
        text = input()
    except EOFError:
        print("Input ended.")
        break
    try:
        age = int(text)
    except ValueError:
        print("Enter a whole number.")
        continue
    if age < 0:
        print("Enter 0 or greater.")
        continue
    print(f"Accepted: {age}")
    break
Enter a whole number.
Enter 0 or greater.
Accepted: 20

ValueError traite le texte non convertible ; une condition séparée refuse les entiers négatifs. Une ligne vide échoue également à la conversion. break termine la boucle après acceptation. Suivez les principes de gestion des exceptions en ciblant les erreurs prévues. EOF arrête la boucle au lieu de provoquer des demandes sans fin.

Espaces et lignes vides

Saisissez deux espaces, JB, puis deux espaces. Pour la deuxième ligne, appuyez uniquement sur Entrée.

text = input()
print(repr(text))
print(repr(text.strip()))
empty = input()
print(repr(empty))
print(empty == "")
'  JB  '
'JB'
''
True

input() conserve les espaces autour de JB. str.strip() renvoie une nouvelle chaîne sans espaces périphériques, sans modifier l’original. Ne l’appliquez pas systématiquement lorsque ces espaces sont significatifs. Une ligne vide donne "", pas None. Décidez si une ligne contenant seulement des espaces doit aussi être considérée comme vide.

Deux valeurs sur une ligne

Découpez la chaîne puis convertissez chaque élément. Saisissez 10 20 sur une seule ligne :

parts = input().split()
if len(parts) != 2:
    print("Enter exactly two integers.")
else:
    try:
        left, right = map(int, parts)
    except ValueError:
        print("Use whole numbers.")
    else:
        print(left + right)
30

split() sans séparateur regroupe les espaces consécutifs. Le programme exige exactement deux éléments avant de les transmettre à int avec map. 10 seul ou trois valeurs déclenchent le message de quantité ; 10 hello déclenche celui sur les entiers. Cet exemple s’arrête après une erreur ; ajoutez une boucle comme précédemment si une nouvelle tentative est nécessaire.

EOFError et consoles sans saisie

EOF signifie End of File, la fin du flux d’entrée. Sans données restantes, input() lève EOFError au lieu de renvoyer une ligne vide. Le code tente deux lectures. Un flux contenant uniquement un saut de ligne produit :

for index in range(2):
    try:
        text = input()
    except EOFError:
        print("EOF")
        break
    print(repr(text))
''
EOF

La première lecture obtient une chaîne vide, la deuxième atteint EOF. Pour reproduire cela en terminal, appuyez d’abord sur Entrée puis envoyez la fin d’entrée à la lecture suivante. Les consoles Windows utilisent généralement Ctrl+Z suivi d’Entrée, et macOS/Linux Ctrl+D sur une ligne vide. Le terminal ou l’IDE peut traiter ces touches différemment.

Si le panneau de sortie de l’IDE n’accepte pas de saisie, utilisez un terminal ou une console adaptée. Avec un fichier ou un juge en ligne, vérifiez que toutes les lignes nécessaires sont fournies. L’attente d’une entrée et EOF sont deux situations distinctes. Convertir une saisie numérique ne nécessite pas de l’exécuter avec eval().