Activité interactive · Seconde — int, float, str, bool
En Python, chaque valeur a un type. Le type, c'est la nature de la valeur : est-ce un nombre entier ? un nombre décimal ? du texte ? un vrai/faux ?
Il y a 4 types à connaître pour l'instant :
int
Entier
5 -3 100 0
float
Décimal
3.14 -0.5 2.0
str
Texte
"Bonjour" "42"
bool
Vrai / Faux
True False
strLe mot str vient de l'anglais string, qui signifie « chaîne de caractères ». En Python, tout ce qui est entre guillemets est un str, même si ça ressemble à un nombre : "42" est du texte, pas un nombre !
Quel est le type de la valeur 3.14 ?
float.2.0) est de type float. Le type int est réservé aux entiers : 2, 100, -7.Quelle est la différence entre 7 et "7" ?
7 (sans guillemets) est le nombre sept, on peut l'additionner. "7" (avec guillemets) est le caractère sept, c'est du texte. 7 + 3 = 10, mais "7" + "3" = "73" !Parmi ces valeurs, laquelle est de type bool ?
True.True et False (sans guillemets, avec une majuscule) sont les deux seules valeurs de type bool. "True" avec guillemets est du texte (str), et 1 est un entier (int).int vs floatLa différence entre int et float est simple : est-ce qu'il y a une virgule (un point en Python) ou pas ?
nb_eleves = 30 # int — un entier, pas de point
moyenne = 13.5 # float — un décimal, avec un point
prix = 2.0 # float aussi ! Le .0 suffit
3.14. Écrire 3,14 dans Python causera une erreur !
Un programme stocke la taille d'un élève en mètres (1,75 m) et son âge en années entières. Complète les types dans les commentaires.
taille = 1.75 # type :
age = 16 # type :
1.75 contient un point → c'est un float. 16 n'a pas de point → c'est un int.Que va afficher ce code ?
print(10 / 2)
5.0./ donne toujours un résultat de type float, même si le résultat est un entier. C'est pour ça qu'on obtient 5.0 et non 5. Ce petit point peut surprendre la première fois !str et nombresVoici le piège classique numéro 1 en Python. Observe bien la différence :
a = "5"
b = "3"
print(a + b)
# affiche : 53
a = 5
b = 3
print(a + b)
# affiche : 8
str, le + colle les textes côte à côte : "5" + "3" = "53" (comme assembler deux étiquettes). Sur des int, le + additionne : 5 + 3 = 8.
Que va afficher ce code ?
prenom = "Ali"
nom = "Baba"
print(prenom + nom)
AliBaba.+ entre deux str les colle sans ajouter d'espace. Pour avoir un espace, il faudrait écrire prenom + " " + nom, ce qui donnerait Ali Baba.Ce code va-t-il fonctionner ? Si non, pourquoi ?
age = "16"
print(age + 1)
"16") et un entier (1) avec +. Il affiche TypeError: can only concatenate str (not "int") to str. Pour que ça marche, il faut convertir "16" en entier : int("16") + 1 = 17.Maintenant c'est à toi de jouer. Clique sur chaque valeur pour la placer dans la bonne colonne.
Clique sur une valeur puis clique sur la colonne où elle appartient.
On peut transformer une valeur d'un type en un autre. C'est ce qu'on appelle une conversion.
int("15") # → 15 le texte "15" devient l'entier 15
float("3.14") # → 3.14 le texte devient un décimal
str(42) # → "42" le nombre 42 devient le texte "42"
Quand l'utilisateur tape quelque chose au clavier, Python reçoit toujours du texte (str). Si on veut faire un calcul avec ce qu'il a tapé, il faut convertir :
saisie = "8" # c'est du texte, pas un nombre
nombre = int(saisie) # on convertit en entier
print(nombre + 2) # affiche 10 ✔
"8" — du texte"8" en l'entier 88 + 2 = 10L'utilisateur a tapé "12" (du texte). Convertis-le en entier pour pouvoir lui ajouter 3.
saisie = "12"
nombre = (saisie)
print(nombre + 3) # doit afficher 15
int(). On écrit le texte à convertir entre les parenthèses.On veut convertir la chaîne "3.14" en un nombre décimal. Quelle fonction utiliser ?
texte = "3.14"
pi = (texte)
print(pi + 1) # doit afficher 4.140000000000001
"3.14" contient un point — c'est un décimal. La fonction pour convertir en décimal, c'est float().On veut afficher une phrase qui mélange du texte et un nombre. Complète pour convertir le nombre en texte afin de pouvoir le coller avec +.
score = 42
message = "Ton score : " + (score)
print(message) # doit afficher : Ton score : 42
str et un int directement. Il faut d'abord convertir le nombre en texte avec str().Que va afficher ce code ?
n = int("5")
print(n * 3)
15.int("5") convertit le texte "5" en l'entier 5. Ensuite 5 * 3 = 15. Si on n'avait pas converti (n = "5"), alors n * 3 aurait collé 3 fois le texte : "555".