You are on page 1of 6

Chapitre 5 : Modules et packages prdfinis

1. Modules
Python offre de trs nombreuses bibliothques de fonctions pr-dfinies pour raliser
des tches courantes. On a dj vu les fonctions input et print. Dautres fonctions sont
groupes dans ce qui sappelle des modules.

1.1. Gnralits sur les modules

Contrairement aux fonctions print et input qui sont accessibles directement, pour pouvoir
utiliser une fonction dun module, il est ncessaire dimporter la fonction explicitement. Par
exemple, pour utiliser la fonction sin (sinus) du module math:

>>> print(sin(1.0)) # la fonction "sin" n'est pas connue


Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sin' is not defined
>>> from math import sin
>>> print(sin(1.0))
0.841470984808

La ligne from math import sin indique que la fonction sin est importe du module math. Si on
souhaite importer toutes les fonctions du module math on peut crire:

from math import *

Cette faon dimporter toutes les fonctions est pratique quand on utilise linterprte interactif,
mais peu recommande dans les programmes, car elle nuit aux performances et la
lisibilit. La mthode recommande est la suivante:

>>> import math


>>> sin(1.0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sin' is not defined
>>> math.sin(1.0)
0.8414709848078965

import math importe le module math, mais les fonctions du module ne sont pas accessibles
directement. Il faut alors utiliser le prfixe math. pour dsigner la fonction. Cette mthode
permet davoir des modules diffrents qui contiennent chacun une fonction du mme nom:

>>> import math as m


>>> dir(m)
>>> math.sin(1.0)
0.8414709848078965
>>> m.sin(1.0)
0.8414709848078965

>>> from math import pi, sin


>>> print(Valeur de Pi :, pi, sinus(pi/4) :, sin(pi/4))
Valeur de Pi : 3.14159265359 sinus(pi/4) : 0.707106781187

1
1.2. Le module math

Le module math offre les fonctions et les constantes mathmatiques usuelles, rsumes dans
ce tableau:

Python mathmatiques
math.factorial(n)
math.fabs(x)
math.exp(x)
math.log(x)
math.log10(x)
math.pow(x, y)
math.sqrt(x)
math.sin(x)
math.cos(x)
math.tan(x)
math.asin(x)
math.acos(x)
math.atan(x)
math.pi
math.e

1.3. Le module random

Le module random permet de gnrer des nombres alatoires.

La fonction random du module random permet dobtenir un nombre virgule flottante alatoire
entre 0.0 et 1.0:

>>> import random


>>> random.random()
0.7392909195741119
>>> random.random()
0.797230861864632
>>> random.random()
0.2865265733632034
>>> random.random()
0.31356767875077696

La fonction randrange(n) permet dobtenir un nombre entier alatoire compris entre 0 (inclus)
et n (exclus):

>>> import random


>>> random.randrange(3)
1
>>> random.randrange(3)
0
>>> random.randrange(3)
0
>>> random.randrange(3)
2

2
>>> random.randrange(3)
0
>>> random.randrange(3)
0
>>> random.randrange(3)
2

Ces nombres sont en fait produits par un algorithme dterministe. Les lecteurs curieux
souhaitant comprendre la gnration de nombres pseudo-alatoires trouveront plus de
dtails dans le web (ex: articles dans Wikipdia).

1.4. Autres modules

On nutilisera pas dautres modules que math et random dans ce cours dintroduction, mais,
pour vous donner une ide de ce qui est disponible, voici une liste de modules trs
couramment utiliss:

io: entres/sorties, fichiers, ...


time: date et heure
re: expressions rgulires (outils pratiques pour la manipulation de texte)
tkinter: interfaces graphiques (fentres, boutons, ...)
numpy, scipy: calculs mathmatiques (matrices, optimisation de fonctions, rgression,
statistiques, ...)
matplotlib: trac de courbes mathmatiques

Pour une liste plus exhaustive, vous pouvez consulter The Python Standard Library

2. Exercices

1. crivez un programme qui affiche 15 nombres alatoires entre 0 et 5 inclus.


2. crivez un programme qui demande lutilisateur un entier n, et qui affiche la
moyenne de n tirages alatoires entre 0 et 5 (inclus).
3. Jeu du nombre mystre: le programme choisit un nombre alatoire entre 0 et 99
inclus, et le fait deviner lutilisateur. Lutilisateur doit entrer un nombre, et le
programme lui indique sil est trop grand, ou trop petit. Si lutilisateur trouve la bonne
valeur, il a gagn et le programme sarrte. Par exemple:

>>>
Entrez un nombre: 40
Ce nombre est trop petit
Entrez un nombre: 60
Ce nombre est trop grand
Entrez un nombre: 52
Ce nombre est trop grand
Entrez un nombre: 46
Bravo, vous avez trouv!

4. Modifiez le programme prcdent pour quil compte le nombre dessais, et lindique


la fin:

>>>
Entrez un nombre: 40
Ce nombre est trop petit
3
Entrez un nombre: 60
Ce nombre est trop grand
Entrez un nombre: 52
Ce nombre est trop grand
Entrez un nombre: 46
Bravo, vous avez trouv!
Nombre de tentatives: 4

5. On souhaite estimer la probabilit que la somme de deux ds dans un tirage soit


gale 7. Pour ce faire, on va simuler de nombreux tirages de deux ds, et mesurer
quelle frquence la somme vaut 7.
o crire une fonction un_tirage(), qui ne prend pas de paramtres. Cette fonction
tire deux ds, et renvoie leur somme.
o Faites une boucle qui appelle n fois un_tirage(), et qui affiche le rsultat. Essayez
avec n = 20, par exemple.
o Modifiez la boucle pour quelle naffiche pas chaque rsultat, mais quelle compte le
nombre de tirages gaux 7. la fin de la boucle, indiquez la frquence
exprimentales des 7. Pour une estimation prcise, utilisez n = 1000, ou n = 10000.
o Comparez avec la valeur thorique.
6. Faites un programme inverse pour le jeu du nombre mystre: lutilisateur choisit un
nombre, et le programme essaie de le deviner. Lutilisateur indique au programme si
le nombre quil propose est trop grand ou petit:

>>>
Je propose 50
Ce nombre est il correct (=), petit (p), ou grand (g)? g
Je propose 25
Ce nombre est il correct (=), petit (p), ou grand (g)? p
Je propose 38
Ce nombre est il correct (=), petit (p), ou grand (g)? g
Je propose 32
Ce nombre est il correct (=), petit (p), ou grand (g)? =

Eh bien, je suis super content davoir trouv!

4
CORRECTION DES EXERCICES
EX1
from random import randrange
i = 1
while i <= 15:
print(randrange(6))
i = i + 1
EX2
from random import randrange

n = int(input('Entrez un nombre: '))

somme = 0
i = 0
while i <= n:
somme = somme + randrange(6)
i = i + 1

print('Moyenne =', somme / n)


EX3
from random import randrange
nm = randrange(100)
n = -1
while n != nm:
n = int(input('Entrez un nombre: '))
if n < nm:
print('Ce nombre est trop petit')
if n > nm:
print('Ce nombre est trop grand')
print('Bravo, vous avez trouv!')
EX4
from random import randrange
nm = randrange(100)
n = -1
essais = 0
while n != nm:
n = int(input('Entrez un nombre: '))
essais = essais + 1
if n < nm:
print('Ce nombre est trop petit')
if n > nm:
print('Ce nombre est trop grand')
print('Bravo, vous avez trouv!')
print('Nombre d''essais:', essais)
EX5
from random import randrange

def un_tirage():
return randrange(6) + randrange(6) + 2

n = 10000
i = 1
tirages7 = 0
while i <= n:
t = un_tirage()
if t == 7:
tirages7 = tirages7 + 1
i = i + 1

print('frquence de 7:', tirages7 / n)

5
# La probabilit est 1/6
EX6
min = 0
max = 100

while True:
n = (min + max) // 2
print('Je propose', n)

r = input('Ce nombre est il correct (=), petit (p), ou grand (g)? ')

if r == '=':
print('Eh bien, je suis super content d''avoir trouv!')
break
if r == 'p':
min = n + 1
if r == 'g':
max = n

You might also like