(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/
Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.
Le banquier, M Malin, rencontre le savetier, M Circonspect.
M Circonspect lui propose un marché : « Ce mois ci, qui compte 31 jours, je te propose le marché suivant : Je te verse : 20 000 € le 0ème jour (aujourd’hui), 30 000 € le 1er jour, 40 000 € le 2ème jour … etc… en ajoutant 10 000€ chaque jour. En échange, tu me donnes : 1 € le 0ème jour, 2 € le 1er jour, 4 € le 2ème jour, 8 € le 3ème jour, … etc… en doublant à chaque fois ce que tu m’as donné la veille. L’engagement dure sur un mois, es-tu prêt à signer le contrat ? ».
« Quel imbécile ! » se dit M Malin, qui accepta sans sourciller le contrat.
1. Expliquer ce que renvoient les fonctions ci-dessous.
def C(n):
a=20000
for k in range(n):
a = a+10000
return a
def cherche():
n=0
while C(n)<150000:
n=n+1
return n
C(14) , cherche()
(160000, 13)
2- Écrire une fonction M donnant la somme versée par M Malin le n ème jour.
def M(n):
a=1
for k in range(n):
a = a*2
return a
M(14)
16384
3- Écrire une fonction donnant le jour à partir duquel M Malin verse plus que M Circonspect.
def Comp(C,M):
n=0
while C(n)>M(n):
n=n+1
return n
Comp(C,M)
18
4- Écrire une fonction donnant la somme versée en tout par M Circonspect le n ème jour.
# Ecrire la fonction
def somme(C,n):
S=0
for k in range(n+1):
S=S+C(k)
return S
# Tester la fonction
somme(C,14)
1350000
Répondre aux questions 5,6,7 en utilisant/modifiant les fonctions précédentes.
5- Déterminer le premier jour au bout duquel M Circonspect versera plus de 125000 €.
6- Déterminer le premier jour au bout duquel M Malin versera plus de 180000 €.
7- Déterminer la somme versée en tout par M Malin le 15 ème jour.
# On peut adapter la fonction cherche:
def cherche2(C,seuil):
n=0
while C(n)<seuil:
n=n+1
return n
# 5 , 6 , 7
cherche2(C,125000) , cherche2(M,180000) , somme(M,15)
(11, 18, 65535)
8- Expliquer ce que renverra la fonction ci-dessous, appelée avec les arguments C ou M.
def val(Pers):
L=[]
for n in range(31):
L.append(Pers(n))
return L
val(C) , val(M)
([20000, 30000, 40000, 50000, 60000, 70000, 80000, 90000, 100000, 110000, 120000, 130000, 140000, 150000, 160000, 170000, 180000, 190000, 200000, 210000, 220000, 230000, 240000, 250000, 260000, 270000, 280000, 290000, 300000, 310000, 320000], [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824])
9- Ecrire une fonction qui reçoit une liste de valeurs et renvoie la somme de ces valeurs. Calculer la somme totale versée par M Malin.
def somme_liste(L):
S=0
for k in range(len(L)):
S=S+L[k]
return S
2147483647
somme_liste(val(M))
2147483647
(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/