cours python gratuit FONCTION print() : LA FONCTION input()
C’est le cours python numéro 6 de la série des cours d’initiation à python.
L’ENTRÉE DU CLAVIER
Dans le cours python précédent, nous avons appris à imprimer des chaînes à partir du programme à l’aide de la fonction print(). Nous allons maintenant voir comment saisir des données dans le programme à l’aide du clavier de l’ordinateur.
NUOVO PROGRAMMA input_print.py
Ouvrons un nouveau fichier dans l’éditeur et écrivons :
# # CE PROGRAMME FAIT UN ACCUEIL PERSONNALISÉ
name = input("Comment tu t'appeles? ")
print("Bonjour; salut", name)
En démarrant le programme, nous verrons qu’il nous demandera (au ralenti) “Quel est votre nom?” . Nous tapons notre nom et appuyons sur Entrée. Cela devrait être le résultat (“Comment t’appelles-tu ?” et “Salut Luigi” sont écrits par le programme, tandis que “Luigi” est la réponse de l’utilisateur).
Comment tu t'appeles? Louis bonjour Luigi
La fonction input () prend une chaîne comme argument facultatif. La fonction imprime l’argument et arrête d’attendre que l’utilisateur tape quelque chose. Lorsque l’utilisateur appuie sur Entrée, la fonction renvoie une chaîne contenant les caractères écrits par l’utilisateur.
La chaîne que nous fournissons comme argument est généralement une invite, c’est-à-dire une question telle que “Entrez un numéro” ou “Comment vous appelez-vous ?”. On peut l’omettre, mais dans ce cas le programme s’arrêtera sans rien écrire, désorientant probablement l’utilisateur. La valeur renvoyée par input() est généralement stockée dans une variable.
Maintenant, il devrait être facile de comprendre ce que fait le programme : l’entrée () affiche l’invite “Comment t’appelles-tu ?” Puis s’arrête et attend que nous tapions notre nom et que nous appuyions sur Entrée. Ce que nous avons écrit est affecté au nom de la variable, qui est ensuite imprimé dans l’instruction suivante. Notez que l’entrée () ne revient pas à la ligne et ne laisse aucun espace après l’impression de l’invite, vous devez donc insérer un espace à la fin de la chaîne pour séparer la question de la réponse.
LES FONCTIONS INT() ET float()
Nous réitérons que la fonction input () renvoie une chaîne contenant les caractères que nous avons saisis. Il est facile de faire des erreurs conceptuelles comme celle-ci :
NEW PROGRAM matrimoniale_quadrato.py
Ouvrons un nouveau fichier dans l’éditeur et écrivons :
a = input ("Ecrire un nombre")
print ("Double de", a, "est", 2 * a)
print ("Le carré de", a, "est", a ** 2)
Essayons de lancer le programme et lorsque vous y êtes invité, nous tapons, par exemple, 5. Que se passe-t-il ? Horreur : le premier print() écrit que le double de 5 est 55, tandis que le second plante même le programme provoquant une TypeError !
Ce comportement peut s’expliquer si l’on repense au fait qu’à chaque variable est associé un type de données : dans la première instruction on affecte à a non pas le chiffre 5 mais la chaîne “5” (c’est-à-dire une chaîne qui contient le caractère 5 ). Ainsi, dans la deuxième instruction, lorsque Python trouve l’expression 2 * a, il ne multiplie pas deux nombres, mais multiplie un nombre par une chaîne (résultant en la concaténation “55”). Enfin, dans la troisième instruction, vous obtenez une erreur car il n’est pas possible de mettre une chaîne au carré.
Pour pallier ces situations, il existe des fonctions de conversion spécifiques :
Les fonctions int () et float () prennent un argument de n’importe quel type et renvoient un entier ou un flottant obtenu à partir des données de départ.
Pour le moment, nous nous intéressons principalement à la conversion des chaînes en nombres : ainsi, par exemple, “10” est une chaîne composée des deux caractères 1 et 0, tandis que int (“10”) convertit la chaîne en l’entier 10. C’est la chaîne qui doit être interprétable comme un nombre (entier ou flottant), sinon nous aurons une erreur.
Pour donner quelques exemples d’utilisation de ces fonctions, il est préférable d’écrire en IDLE (afin d’avoir une réponse immédiate sans avoir besoin de lancer un programme)
>>> a = "10" >>> b = "20" >>> a + b
'1020'
>>> int(a) + int(b)
30
>>> c = "3.14" >>> float(c)
3.14
>>> int(c)
Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> int(c) ValueError: invalid literal for int() with base 10: '3.14'
>>> c = "mamma" >>> int(c)
Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> int(c) ValueError: invalid literal for int() with base 10: 'mamma'
Commentons ce que nous avons écrit : nous avons d’abord attribué les deux chaînes « 10 » et « 20 » à a et b ; la première fois, en faisant l’addition on obtient 1020, c’est leur concaténation. La deuxième fois à la place, nous ajoutons les valeurs entières obtenues à partir des chaînes et en fait le résultat est 30. Ensuite, nous essayons de convertir la chaîne “3.14” en un nombre flottant et le résultat est correct. Si à la place nous essayons de le convertir en entier, nous obtenons une erreur car Python trouve le point décimal. De même, si nous essayons de convertir la chaîne “mom” en un entier
Notez la subtilité : nous n’obtenons pas de TypeError (c’est-à-dire une erreur dans le type de données) car il est parfaitement légal d’appeler int() avec une chaîne (c’est-à-dire “mom”) comme argument. Au lieu de cela, nous obtenons un nouveau type d’erreur ValueError (erreur dans la valeur de l’argument) car la fonction comprend que la chaîne que nous lui avons donnée est impossible à convertir.
Revenons donc à notre programme double_square.py et modifions la première ligne comme suit :
a = float(input("Ecrire un nombre"))
(attention aux deux parenthèses fermantes !) Donc tout fonctionne, car float() transforme la chaîne retournée par input() en un nombre, qui est affecté à a. Le seul problème est que nous devrons faire attention au type de nombre vers lequel nous voulons convertir la valeur : int ou float. Généralement, si nous devons accepter à la fois des entiers et des virgules, il est préférable d’utiliser float () qui fonctionne dans les deux cas. Si par contre on veut explicitement un entier, on peut utiliser int() qui, comme on l’a vu, provoque une erreur si on écrit un nombre avec un point décimal.
Prenons un autre exemple.
NOUVEAU PROGRAMME : metri_feet.py
print("CONVERSION MÈTRES - PIEDS")
m = float(input("Entrez les compteurs "))
ft = m / 0.3048
print(m, "m =", ft, "ft")
À présent, le fonctionnement du programme devrait être clair pour vous. En le prenant comme modèle, nous pouvons faire de nombreux exercices similaires :