Complément - niveau basique¶
Occasionnellement, il peut être utile de poser une question à l’utilisateur.
Note à propos de la production de PDF
lorsqu’on produit une version PDF (ou html d’ailleurs) de ce complément, on le notebook est exécuté par une tâche automatique pour pouvoir afficher les résultats de chaque cellule
du coup si on ne fait rien de particulier les cellules qui font appel à input() bloquent puisque personne n’est là pour entrer une réponse à la question
c’est pourquoi on se livre à une petite gymnastique qui consiste à
ajouter avant l’appel à
input()une initialisationet à “sauter” l’exécution de la cellule qui fait vraiment le
input()lors des taches automatiques
La fonction input¶
C’est le propos de la fonction input. Par exemple :
# à nouveau ceci n'est pas indispensable mais
# pour la production du PDF il nous faut ruser un peu...
nom_ville = "Nancy"# et à nouveau ceci n'est pas exécuté pendant
# la production du PDF parce que c'est bloquant
nom_ville = input("Entrez le nom de la ville : ")print(f"nom_ville={nom_ville}")nom_ville=Nancy
Attention à bien vérifier/convertir¶
Notez bien que input renvoie toujours une chaîne de caractères (str). C’est assez évident, mais il est très facile de l’oublier et de passer cette chaîne directement à une fonction qui s’attend à recevoir, par exemple, un nombre entier, auquel cas les choses se passent mal :
>>> input("nombre de lignes ? ") + 3
nombre de lignes ? 12
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not intDans ce cas il faut appeler la fonction int pour convertir le résultat en un entier :
int(input("Nombre de lignes ? ")) + 3Limitations¶
Cette fonction peut être utile pour vos premiers pas en Python.
En pratique toutefois, on utilise assez peu cette fonction, car les applications “réelles” viennent avec leur propre interface utilisateur, souvent graphique, et disposent donc d’autres moyens que celui-ci pour interagir avec l’utilisateur.
Les applications destinées à fonctionner dans un terminal, quant à elles, reçoivent traditionnellement leurs données de la ligne de commande. C’est le propos du module argparse que nous avons déjà rencontré en première semaine.