Index de l'article

Etape 2 - Fonction input() et type()

Pour jouer, j'ai besoin de faire saisir à l'utilisateur sa réponse, donc j'ai besoin de la fonction input(), mais attention input() renvoie toujours une valeur de type texte et cela génère des surprises!

Tester puis comprendre

# ceci est un script
c=input("Saisir un entier entre 2 et 12 c= ")
print(c)
print(c+c)
print(c*3)

print(type(c))

d=int(input("Saisir un entier entre 2 et 12 d= "))
print(d)
print(d+d)
print(d*3)

print(type(d))

Le script du dessus donne ce qu'il y a en dessous dans le shell:

CECI EST LE RESULTAT DU SCRIPT
>>> %Run test.py
Saisir un entier entre 2 et 12 c= 3
3
33
333
<class 'str'>
Saisir un entier entre 2 et 12 d= 4
4
8
12
<class 'int'>

Explication

Amusant hein ;)

  • Si l'utilisateur saisie 3 pour "c" alors puisque cette variable est de type 'str' (str = string = texte), la "somme" c+c "additionne" la lettre 3 avec la lettre 3 et donc donne 33 (Pas la peine d'allez voir le médecin) Même logique de concaténation pour le produit "c*3" qui donne 3 lettres c donc 333. Vous pourriez saisir une lettre pour "c" et vous obtiendriez le même genre de résultat!
  • Si l'utilisateur saisie 4 pour "d" à l'aide d'un input() alors nous avons le même problème de type "string" que pour "c" mais vous noterez la fonction int() qui englobe le input()! Cette fonction int() transforme un nombre type texte en nombre type entier. Cela tombe bien ;)
    Donc pour les calculs avec la variable "d" plus de problème ;)

 

Pièce(s) jointe(s)
Download this file (table.png)table.png[ ]918 kB