Comment lire les entrées de l'utilisateur comme des entiers en Python

Jinku Hu 30 janvier 2023
  1. Lire les entrées de l’utilisateur sous forme d’entiers en Python 2.x
  2. Lire les entrées de l’utilisateur comme des entiers en Python 3.x
Comment lire les entrées de l'utilisateur comme des entiers en Python

Dans ce tutoriel, nous allons apprendre à lire les entrées de l’utilisateur sous forme d’entiers en Python.

Lire les entrées de l’utilisateur sous forme d’entiers en Python 2.x

Python 2.7 a deux fonctions pour lire les entrées de l’utilisateur, c’est-à-dire raw_input et input.

raw_input lit l’entrée utilisateur comme une chaîne brute et sa valeur de retour est simplement string.

input récupère l’entrée utilisateur et ensuite évalue la chaîne et le résultat de l’évaluation est retourné.

Par exemple,

>>> number = raw_input("Enter a number: ")
Enter a number: 1 + 1
>>> number, type(number)
('1 + 1', <type 'str'>)

>>> number = input("Enter a number: ")
Enter a number: 1 + 1
>>> number, type(number)
(2, <type 'int'>)
Avertissement

Réfléchissez deux fois lorsque vous utilisez input en Python 2.x. Cela pourrait imposer des problèmes de sécurité car input évalue tous les types d’utilisateurs.

Disons que vous avez déjà importé os dans votre programme et qu’ensuite il demande une entrée utilisateur,

>>> number = input("Enter a number: ")
Enter a number: os.remove(*.*)

Votre entrée os.remove(*.*) est évaluée et elle efface tous les fichiers de votre dictionnaire de travail sans aucun préavis !

Lire les entrées de l’utilisateur comme des entiers en Python 3.x

raw_input est obsolète en Python 3.x et il est remplacé par input en Python 3.x. Il ne reçoit que la chaîne d’entrée de l’utilisateur mais ne l’évalue pas à cause du risque de sécurité comme décrit ci-dessus.

Par conséquent, vous devez explicitement convertir l’entrée utilisateur de la chaîne de caractères en nombres entiers.

>>> number = int(input("Enter a number: "))
Enter a number: 123
>>> number
123
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - Python Input