Académique Documents
Professionnel Documents
Culture Documents
Fonctions et boucles
I Écriture de fonctions élémentaires
1 x+y
Q1 Définir les fonctions inverse : x 7−→ et moyenne : (x, y) 7−→ .
x 2
Par exemple, si x vaut à 2, alors moyenne(x,inverse(x)) renvoie 1.25.
Q2 (a) Écrire les fonctions volume(r:float) -> float et aire(r:float) -> float qui
renvoient respectivement le volume d’une boule et l’aire d’une sphère de rayon r.
(b) Écrire un script qui affiche "Le volume de la boule est... et son aire est..." en utilisant
les fonctions précédemment écrites. Par exemple, si r vaut 2, alors volume(r) affiche
Le volume de la boule est 33.5103216... et son aire est 50.2654824....
Écrire une fonction DernierPositif qui prend en entrée un réel u0 et renvoie le rang n du
dernier terme strictement positif de cette suite.
IV Exercices complémentaires
Q11 Écrire une fonction distance(A:tuple, B:tuple) -> float d’argument deux couples de
nombres et qui renvoie la distance du point A au point B.
Quelle est la distance du point (1, 2) au point (3, 5) ?
Q12 Une somme intéressante
(a) Déclarer une fonction sommation qui prend en entrée une fonction g ainsi qu’un entier
n−1
X
n, puis qui renvoie la valeur de g(k).
k=0
(b) Calculer, à l’aide la fonction sommation, la valeur de la somme des 3 premiers nombres
impairs, puis des 100 premiers nombres impairs. Pouvait-on anticiper ce résultat ?
n−1
4(−1)k
(c) Calculer, à l’aide la fonction sommation, la valeur de un =
X
pour n = 100,
k=0 2k + 1
puis n = 10 000 et n = 1 000 000. Qu’est-ce que ces valeurs nous incitent à conjecturer ?
Corrigé
Q1
2 def inverse ( x : float ) -> float :
3 return 1/ x
4
5 def moyenne ( x : float , y : float ) -> float :
6 return ( x + y ) /2
7
8 x = 2
9 print ( moyenne (x , inverse ( x ) ) )
Q2 (a)
12 from math import pi
13
14 def volume ( r : float ) -> float :
15 return (4/3) * pi * r **3
16
17 def aire ( r : float ) -> float :
18 return 4* pi * r **2
(b)
21 r = 2
22 print ( " Le volume de la boule est {} et son aire est {} " . format (
volume ( r ) , aire ( r ) ) )
Q3
25 def mini2 ( a : float , b : float ) -> float :
26 if a <= b :
27 return a
28 else :
29 return b
Q4
32 def mini3 ( a : float , b : float , c : float ) -> float :
33 return mini2 (a , mini2 (b , c ) )
Q5
36 def mini4 ( a : float , b : float , c : float , d : float ) -> float :
37 return mini2 ( mini2 (a , b ) , mini2 (c , d ) )
Q6
40 def factorielle ( n ) :
41 f = 1
42 for i in range (2 , n +1) :
43 f = f * i
44 return f
45
46 def mystere ( n ) :
47 somme = 0
48 for k in range ( n +1) :
49 somme = somme + 1/ factorielle ( k )
50 return somme
51
52 print ( mystere (20) )
53 # La s é rie semble converger rapidement vers le nombre e .
Q7
56 def chaine_repetee ( n : int , s : str ) -> str :
57 ''' renvoie la chaine s repetee n fois . On suppose n >=0.
58 Si n =0 , renvoie la chaine vide . Si s = ' ' , renvoie '' quelle que soit
la valeur de n '''
59 c = ''
60 for i in range ( n ) :
61 c = c + s
62 return c
Q8
65 from math import log
66
Q9
77 def capital ( annee : int , placement : float ) -> float :
78 ''' on suppose ann é e >= 2021 et placement positif '''
79 annee0 = 2021
80 for i in range ( annee - annee0 +1) :
81 if annee %2 == 0:
82 placement = placement * 1.03
83 else :
84 placement = placement * 1.015
85 return placement
Q10
88 def DernierPositif ( u0 : float ) -> int :
89 if u0 <= 0:
90 return - float ( ' inf ') # l ' infini n é gatif
91 else :
92 u = u0
93 n = 0
94 while u >= 0:
95 u = u - 1/(1 + u **2)
96 n = n + 1
97 return n - 1
98
99 print ( " La plus petite valeur de n tel que un soit strictement positif
est " , DernierPositif (4) )
100 # On obtient 26 pour n =4.
Q11
103 def distance ( A : tuple , B : tuple ) -> float :
104 xA , yA = A
105 xB , yB = B
106 return (( xB - xA ) **2+( yB - yA ) **2) **0.5
107
108 A = (0 ,0)
109 B = (1 ,1)
110 print ( distance (A , B ) )
111 # On obtient sqrt (2) .
Q12
114 # questions a et b
115 def g ( k : int ) -> float :
116 return 2* k +1
117