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")



