X. Exemples▲
X-A. Tableau de valeurs▲
On peut facilement obtenir le tableau de valeurs d'une fonction sur un intervalle borné avec un certain pas.
Considérons la fonction définie par . Si l'on souhaite obtenir les valeurs prises par la fonction sur l'intervalle avec un pas de , voici ce que l'on peut faire :
2.
3.
4.
5.
6.
7.
8.
9.
from
math import
sqrt
def
g
(
x):
return
sqrt
(
x**
4
+
1
)
x =
2
while
x <
3.1
:
print
(
"g("
,x,") ="
,g
(
x))
x =
x +
0.1
En exécutant ce script, voici ce que l'on obtient
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
g
(
2
) =
4.12310562562
g
(
2.1
) =
4.52195754071
g
(
2.2
) =
4.94222621902
g
(
2.3
) =
5.38368832679
g
(
2.4
) =
5.8461611336
g
(
2.5
) =
6.32949445059
g
(
2.6
) =
6.83356422374
g
(
2.7
) =
7.35826745912
g
(
2.8
) =
7.90351820394
g
(
2.9
) =
8.46924435826
g
(
3.0
) =
9.05538513814
On peut ne pas trouver très beaux les espaces après et avant les parenthèses, puis vouloir que les arrondis à près. Pour cela, il suffit d'utiliser les possibilités de formatage de la fonction print comme cela.
2.
3.
4.
5.
6.
7.
8.
9.
from
math import
sqrt
def
g
(
x):
return
sqrt
(
x**
4
+
1
)
x =
2
while
x <
3.1
:
print
(
"g({:0.1f}) = {:0.2f}"
.format
(
x, g
(
x)))
x =
x +
0.1
Et on obtient :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
g
(
2.0
) =
4.12
g
(
2.1
) =
4.52
g
(
2.2
) =
4.94
g
(
2.3
) =
5.38
g
(
2.4
) =
5.85
g
(
2.5
) =
6.33
g
(
2.6
) =
6.83
g
(
2.7
) =
7.36
g
(
2.8
) =
7.90
g
(
2.9
) =
8.47
g
(
3.0
) =
9.06
Évidemment dans les deux cas, le signe = est affiché, mais il s'agit bien entendu d'une approximation. On peut signaler au passage l'existence de la fonction round() qui donne l'arrondi à la précision demandée
X-B. Intervalle de fluctuation▲
On peut demander d'écrire un programme qui permet de déterminer l'intervalle de fluctuation au seuil de 95 % à partir d'une liste de valeurs, connaissant évidemment le centre de l'intervalle. Voici une proposition avec une précision de l'ordre du millième.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
# -*- coding:utf-8 -*-
# première entrée : la série en liste
serie =
[0.674
, 0.679
, 0.681
, 0.692
, 0.705
, 0.711
, 0.718
, 0.718
, 0.732
, 0.760
]
# deuxième entrée : le centre de l'intervalle
centre =
0.7
# le nombre de valeurs
effectif_total =
float(
len(
serie)) # float() inutile à partir de la version 3
# initialisation du rayon de l'intervalle
rayon =
0
# initialisation du taux de valeurs dans l'intervalle
taux =
0
# boucle où on augmente le rayon d'un intervalle centré sur la valeur centre
# jusqu'à atteindre le taux de 95%
while
taux <
0.95
:
# initialisation de la variable qui compte
# le nombre d'éléments dans l'intervalle
effectif =
0
for
valeur in
serie:
if
centre -
rayon <=
valeur <=
centre +
rayon:
effectif +=
1
taux =
effectif /
effectif_total
rayon +=
0.001
# pour une précision au millième
print
(
"[
%0.3f
,
%0.3f
]"
%(
centre -
rayon, centre +
rayon))
X-C. Un jeu de dé▲
On lance un dé. Si le numéro est 1, 5 ou 6, alors c'est gagné, sinon c'est perdu. Écrire un programme simulant ce jeu d'abord sans utiliser de liste puis en utilisant une liste. Voici une première proposition :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
# -*- coding:utf-8 -*-
from
random import
randint
d =
randint
(
1
, 6
)
print
(
d)
if
d ==
1
:
print
(
"gagné"
)
else
:
if
d ==
5
:
print
(
"gagné"
)
else
:
if
d ==
6
:
print
(
"gagné"
)
else
:
print
(
"perdu"
)
En utilisant elif
, on peut simplifier le script comme ceci :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
# -*- coding:utf-8 -*-
from
random import
randint
d =
randint
(
1
, 6
)
print
(
d)
if
d ==
1
:
print
(
"gagné"
)
elif
d ==
5
:
print
(
"gagné"
)
elif
d ==
6
:
print
(
"gagné"
)
else
:
print
(
"perdu"
)
Et maintenant en utilisant une liste, on peut faire encore plus simple :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
# -*- coding:utf-8 -*-
from
random import
randint
d =
randint
(
1
, 6
)
print
(
d)
if
d in
[1
, 5
, 6
]:
print
(
"gagné"
)
else
:
print
(
"perdu"
)