Livre_silo 30 août 2013 16:32 Page 63
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
63
3 – Expressions : types et opérations
SAVOIR-FAIRE Convertir une expression numérique d’un type à un autre
Pour utiliser le nombre 42, on écrira 42 si l’on veut utiliser un entier et 42.0 ou simplement 42. si l’on veut un flottant.
On peut, en cas de besoin, convertir un entier en flottant en lui appliquant la fonction
float et un flottant en un entier par la fonction int. Attention : int(x) ne calcule pas
la partie entière de x mais le tronque, c’est-à-dire calcule la partie entière de |x|, puis
affecte le résultat du signe de x.
Enfin, si on utilise un entier dans une opération qui requiert un flottant (quotient
décimal ou racine carrée par exemple), Python effectue la conversion automatiquement. Il est tout de même recommandé d’écrire explicitement les conversions là où
on souhaite qu’ elles aient lieu, ne serait-ce que dans un souci de lisibilité.
Exercice 3.4 Les expressions 8.5/2.5, int(8.5)/int(2.5) et int(8.5/2.5) sont-elles équivalentes ?
Non et à deux titres. Au niveau des types d’abord, la dernière expression est un entier, alors que les deux
premières sont des flottants puisqu’elles sont le résultat de quotients décimaux /.
Ensuite, si on calcule leurs valeurs :
• Dans la première expression, le quotient 8.5/2.5 s’évalue à 3.4.
• Dans la seconde expression, int(8.5) et int(2.5) s’évaluent respectivement à 8 et 2. Ces valeurs sont
ensuite automatiquement reconverties en flottants pour effectuer la division, mais leur partie décimale
a été perdue au passage : 8.0/2.0 s’évalue à 4.0.
• Dans la troisième expression, on retrouve le quotient 8.5/2.5 de la première expression. Sa valeur 3.4
est ensuite tronquée pour obtenir l’entier 3.
On remarquera que, même en effectuant une conversion supplémentaire vers les entiers, les deux dernières expressions ne peuvent être rendues égales.
Exercice 3.5 *
1 Qu’affiche Python lorsqu’on lui demande de calculer 1 - 1./3 - 1./3 - 1./3 ? Expliquer.
2 Et quand on lui demande 1 - 0.2 - 0.2 - 0.2 - 0.2 - 0.2 ? Expliquer.
3 Quel est l’effet de la fonction round ? Que renvoie Python lorsqu’on lui demande de calculer
round(1.05,1), round(10.05,1), round(100.05,1) ? Expliquer.
Exercice 3.6 Quelle est la valeur des expressions suivantes, lorsqu’elle existe ?
• 1.5 + 1.5
• 1.5 - 1
• 3. * 7
• (1-2).
• .5-.3
• 4 / (9 - 3**2)
• float(7 // 2)
Vérifier les réponses dans un interpréteur.
Exercice 3.7 Les expressions int(a/b) et a//b sont-elles équivalentes pour toutes les valeurs entières de
a et de b ?
Le démontrer ou proposer un contre-exemple.
3.1.4 Booléens
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
63
3 – Expressions : types et opérations
SAVOIR-FAIRE Convertir une expression numérique d’un type à un autre
Pour utiliser le nombre 42, on écrira 42 si l’on veut utiliser un entier et 42.0 ou simplement 42. si l’on veut un flottant.
On peut, en cas de besoin, convertir un entier en flottant en lui appliquant la fonction
float et un flottant en un entier par la fonction int. Attention : int(x) ne calcule pas
la partie entière de x mais le tronque, c’est-à-dire calcule la partie entière de |x|, puis
affecte le résultat du signe de x.
Enfin, si on utilise un entier dans une opération qui requiert un flottant (quotient
décimal ou racine carrée par exemple), Python effectue la conversion automatiquement. Il est tout de même recommandé d’écrire explicitement les conversions là où
on souhaite qu’ elles aient lieu, ne serait-ce que dans un souci de lisibilité.
Exercice 3.4 Les expressions 8.5/2.5, int(8.5)/int(2.5) et int(8.5/2.5) sont-elles équivalentes ?
Non et à deux titres. Au niveau des types d’abord, la dernière expression est un entier, alors que les deux
premières sont des flottants puisqu’elles sont le résultat de quotients décimaux /.
Ensuite, si on calcule leurs valeurs :
• Dans la première expression, le quotient 8.5/2.5 s’évalue à 3.4.
• Dans la seconde expression, int(8.5) et int(2.5) s’évaluent respectivement à 8 et 2. Ces valeurs sont
ensuite automatiquement reconverties en flottants pour effectuer la division, mais leur partie décimale
a été perdue au passage : 8.0/2.0 s’évalue à 4.0.
• Dans la troisième expression, on retrouve le quotient 8.5/2.5 de la première expression. Sa valeur 3.4
est ensuite tronquée pour obtenir l’entier 3.
On remarquera que, même en effectuant une conversion supplémentaire vers les entiers, les deux dernières expressions ne peuvent être rendues égales.
Exercice 3.5 *
1 Qu’affiche Python lorsqu’on lui demande de calculer 1 - 1./3 - 1./3 - 1./3 ? Expliquer.
2 Et quand on lui demande 1 - 0.2 - 0.2 - 0.2 - 0.2 - 0.2 ? Expliquer.
3 Quel est l’effet de la fonction round ? Que renvoie Python lorsqu’on lui demande de calculer
round(1.05,1), round(10.05,1), round(100.05,1) ? Expliquer.
Exercice 3.6 Quelle est la valeur des expressions suivantes, lorsqu’elle existe ?
• 1.5 + 1.5
• 1.5 - 1
• 3. * 7
• (1-2).
• .5-.3
• 4 / (9 - 3**2)
• float(7 // 2)
Vérifier les réponses dans un interpréteur.
Exercice 3.7 Les expressions int(a/b) et a//b sont-elles équivalentes pour toutes les valeurs entières de
a et de b ?
Le démontrer ou proposer un contre-exemple.
3.1.4 Booléens
