IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours pour débutants : apprendre à programmer avec Python au lycée

Image non disponible


précédentsommairesuivant

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 Image non disponible définie par Image non disponible. Si l'on souhaite obtenir les valeurs prises par la fonction sur l'intervalle Image non disponible avec un pas de Image non disponible , voici ce que l'on peut faire :

 
Sélectionnez
1.
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

 
Sélectionnez
1.
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 à Image non disponible près. Pour cela, il suffit d'utiliser les possibilités de formatage de la fonction print comme cela.

 
Sélectionnez
1.
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 :

 
Sélectionnez
1.
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

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
>>> round(12.456, 1)   # arrondi de 12.456 au dixième
12.5
>>> a = 8.743159
>>> round(a, 2)        # arrondi de a au centième
8.74
>>> round(a)          # arrondi à l'unité
9

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.

 
Sélectionnez
1.
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 :

 
Sélectionnez
1.
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 :

 
Sélectionnez
1.
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 :

 
Sélectionnez
1.
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")

précédentsommairesuivant