02_Baumgartner_Chappatte.ipynb-4
October 24, 2016
Joris Chappatte et David Baumgartner
1 Série 1
Remarque: On utilisera Python 3.
1.1 Exercice 1
Question Compément Vrai Faux
a. x
b. x
a. x
c. Voir cell suivante x
d. x
e. Si l’on oublie le duck typing. . . x
f. x
g. x
h. Voir cell suivante x
In [1]: # point c.
1+4*3# si c'était évalulé de gauche à droite sans priorité des opérations, on aurait 15.
# point h.
x=lambda:0# est une fonction d'arité 2
1.2 Exercice 2
a. A= 15, B = 13
b. A= 5, B = 5
c. Non, car la troisième instruction «écrase» la valeur de A.
d. C<-AA<-BB<-C
ou
1
A <- A+B
B <- A-B
A <- A-B
1.3 Exercice 3
x**ydésigne la puissance, équivalent mathématique de xy, donc est équivalente à
x·x· · · · · x
| {z }
yfois
.
x//y désigne la division euclidenne (aussi dite entière), et compte donc le nombre de fois
que l’on peut « mettre au maximum ydans x»
x%y désigne le reste de la division euclidienne, donc c’est la soustraction de x - x//y.
On suppose que l’arithmétique sur les flottants fonctionne comme dans un monde parfait, et
que l’on n’a pas d’erreur d’arrondi (qui ne devraient a priori pas survenir dans ce genre de cas
non-critique, mais dépend des implémentations).
a. 15*4+2=60+2=62
b. 15*(4+2)=15*6=90
c. a=4;3**3+a 3**3+4=27+4=31
d. 4+3*3**2/2+7=4+3*9/2+7=4+27/2+7=4+13.5+7=17.5+7=24.5 (24 sur Python 2 car
27/2=13)
e. 4+3*3**2/2.0+7=4+3*9/2.0+7=4+27/2.0+7=4+13.5+7=17.5+7=24.5 (même
chose sur Python 2 car 27/2.0=13.5)
f. 4+3*3**2//2.0+7=4+3*9//2.0+7=4+27//2.0+7=4+13.0+7=17.0+7=24.0 (même
chose sur Python 2 car 27//2.0=13.0 (on note que c’est un flottant))
g. 79-5*7+3**2*2=79-5*7+9*2=79-35+9*2=79-35+18=44+18=62
h. (3*5**2 <= 150 / 2)=(3*25 <= 150/2)=(75 <= 150/2)=(75 <= 75.0)=True
i. 34%8=2
j. (35%8 != 43%8)=(3 != 43%8)=(3 != 3)=False
1. Pour Python 2, /est la division entière (car le diviseur est entier) et retourne donc un entier,
pour Python 3, c’est la division « réelle », et retourne donc un flottant
2. C’est la division réelle, car c’est une divsion par un flottant, autant sur Python 2 que Python
3
3. C’est euclidienne par 2.0, qui «compte» combien de fois au maximum l’on peut mettre 2.0
dans, en l’occurence 27.
2
1.4 Exercice 4
x y z Opération
7 – – x=7
7 2 – y=2
7 2 17 z=x+5*y
23 2 17 x=x*3+2
23 -2 17 y=-2
23 -2 44 z=z-2*y+x
23 4 44 y=4
11.0 4 44 x=z/y
1.5 Exercice 5
a. (250 == 750 / 3)=(250 == 250.0)=True
b. not (27/3 >= 9)=not (9.0 >= 9)=not True=False
c. ((True or False) == (False or False))=(True == False)=False
d. ((8 != 8) and True)=(False and True)=False
e. ((5%2==0)ˆTrue)=((1==0)ˆTrue)=(FalseˆTrue)=True
f. (not not (14%7 != 0) or True)=(not not (0 != 0) or True)=(not not
False or True)=(not True or True)=(False or True)=True
g. True and False or False and True or True and False or True=False
or False and True or True and False or True=False and True or True
and False or True=False or True and False or True=True and False or
True=False or True=True
1.6 Exercice 6
a. x>=5andx<11
b. (x < -3) or (x >= 7) or (x = 0)
c. (x%2 == 1) and (x >= 1) and (x < 20)
d. round(x*10**7) == round(math.pi/2*10**7)
e. Fonctionnement de XOR: XOR(A,B) est vrai si et seulement si A est différent de B.
(x or y) and not (x and y)
3
1.7 Exercice 7
a. Valide, mais déprécié par la PEP-08.
b. Valide
c. Valide, mais déprécié, les majuscules étant réservées aux classes.
d. Invalide, car il commence par un caractère numérique
e. Valide
f. Invalide, car c’est un mot-clef
g. Valide, mais déprécié (car classe)
h. Invalide, car il y a le symbole -, qui représente l’opérateur de soustraction, et Variable
commence par une majuscule
i. Invalide, car le symbole !est réservé.
La fonction type retrourne un type de l’objet (=“méthode d’instantiation” pour l’objet)
passé en premier paramètre si l’on fournit un seul argument. Si l’on fournit trois arguments,
type retourne un nouveau type d’objet: le premier argument étant le nom (obj.__name__)
du type (ou classe) à retourner, le second les types (ou classes) dont le type/la classe dérive,
et finalement les définitions des méthodes et attributs du type/de la classe retourné/e.
a. int
b. float
c. bool
d. bool
e. str
f. list
g. tuple
1.8 Exercice 8
1. truediv(neg(y), x)
2. add(2,truediv(mul(x,y),z))
3. mul(neg(4),truediv(sub(10,mul(5,3)),sub(mul(4,2),7)))
4. or_(not_(lt(mul(neg(12),13),mul(12,11))),ge(pow(11,10),pow(9,12)))
4
1.9 Exercice 9
In [2]: import math
def imc(mass, size):
assert size > 0
return mass/(size**2)
def size_inv_imc(imc, mass):
assert imc > 0
return math.sqrt(mass/imc)
def mass_inc_imc(imc, size):
return imc*(size**2)
size2 =lambda v: size_inv_imc(21.75, v)
mass2 =lambda v: mass_inc_imc(21.75, v)
t=[*map(size2, [20,40,60]), 1.8,2]
m=[*map(mass2, t)]
t1, t2, t3, t4, t5 =tuple(t)
m1, m2, m3, m4, m5 =tuple(m)
In [3]: %matplotlib inline
import matplotlib.pyplot as plt
plt.plot([t1, t2, t3, t4, t5], [m1, m2, m3, m4, m5])
plt.show()
5
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !