Vidéo 9 : Fonctionnalités standard

\(\newcommand{\ds}{\displaystyle}\) \(\newcommand{\Frac}{\ds\frac}\) \(\renewcommand{\r}{\mathbb{ R}}\) \(\newcommand{\C}{\mathbb{ C}}\) \(\newcommand{\n}{\mathbb{ N}}\) \(\newcommand{\z}{\mathbb{ Z}}\) \(\newcommand{\Q}{\mathbb{ Q}}\) \(\newcommand{\N}{\mathbb{ N}}\) \(\newcommand{\n}{\mathbb{ N}}\) \(\newcommand{\ol}{\overline}\) \(\newcommand{\abs}[1]{\left| \,{#1} \right|}\) \(\newcommand{\pv}{\;;\;}\) \(\newcommand{\ens}[1]{\left\{ {#1} \right\}}\) \(\newcommand{\mens}[1]{\setminus\left\{ {#1} \right\}}\) \(\newcommand{\Par}[1]{\left({#1}\right)}\)

Vidéo 9 : Fonctionnalités standard

Les fonctions built-in

Python propose, par défaut, des fonctions prêtes à l’emploi (les fonctions dites « built-in ») et qui permettent de faire des opérations courantes en programmation : afficher, trier une liste, trouver le plus grand nombre d’une liste, calculer la longueur d’une chaîne de caractères, etc.

Exemple

1
print(max(81, 12, 31, 82, 65))
2
82
  • Ligne 1 : max est une fonction built-in. Elle renvoie le plus grand élément des nombres qu’on lui transmet.

La fonction built-in la plus utilisée est probablement la fonction print.

La bibliothèque standard

Le langage Python intègre la possibilité, par exemple, de trier une liste d’entiers :

1
print(sorted([5,19,14,12,21]))
2
[5, 12, 14, 19, 21]
  • Ligne 1 : la liste 5,19,14,12,21 n’est pas triée.
  • Ligne 2 : la liste [5, 12, 14, 19, 21] est triée.

À l’inverse de la fonction de tri sorted, certaines fonctions, comme la partie entière d’un nombre, ne peuvent être utilisées directement par le langage Python mais sont disponibles si on fait appel à ce qu’on appelle la « bibliothèque standard » de Python.

Ainsi, voici comment on peut calculer en Python des parties entières :

1
2
3
4
from math import floor

print(floor(4.21))
print(floor(-4.21))
5
6
4
-5
  • Ligne 1 : on doit importer la fonction floor du « module » math de la bibliothèque standard.
  • Lignes 3 et 4 : on appelle la fonction de partie entière floor importée du module math.

La notion de bibliothèque standard

La bibliothèque standard de Python est livrée avec le langage Python mais ne fait pas partie du langage en tant que tel. Elle étend les possibilités du langage.

Les fonctionnalités de la bibliothèque standard sont regroupées en entités que l’on appelle des modules. Ainsi, les fonctionnalités mathématiques sont disponibles dans le module math.

Pour accéder depuis du code Python à une fonctionnalité d’un module de la bibliothèque standard, il faut importer cette fonctionnalité dans le code Python par une instruction d’importation (cf. ligne 1 ci-dessus).

La bibliothèque standard contient beaucoup d’autres modules que le module math. Voici quelques exemples de modules disponibles :

Module Fonctionnalité
math Fonctions mathématiques
random Manipuler des nombres aléatoires
decimal Résultats exacts avec les nombres décimaux
datetime Gestion des dates, des durées
os.path, shutil Manipuler le système de fichiers
Tkinter Interfaces graphiques

Un module de la bibliothèque standard est dit module standard.

De nombreuses fonctionnalités de la bibliothèque standard concernent des questions spécialisées et/ou techniques et sont réservés à des programmeurs de niveau avancé voire professionnel.

Importation facile et complète

<< La bibliothèque standard

Il est possible d’importer toutes les « fonctionnalités » d’un module et d’y accéder directement avec une syntaxe d’importation spécifique. Par exemple :

1
2
3
4
5
6
7
from math import *

print(floor(421.2020))
print(pi)
print(e)
print(sin(0))
print(cos(0))
 8
 9
10
11
12
421
3.141592653589793
2.718281828459045
0.0
1.0
  • Ligne 1 : la syntaxe permettant l’accès complet et immédiat. C’est une instruction import/from.
  • Lignes 3-7 : on accède directement (sans notation particulière) à toutes les fonctionnalités du module. Par exemple, pour accéder à la fonction floor, il suffit d’écrire floor et l’interpréteur Python reconnaît que ce nom provient du module math importé ligne 1.

Le Hasard en Python

Un nombre aléatoire est un nombre tiré au hasard. Plus généralement, l’adjectif aléatoire se réfère à ce qui est le résultat du hasard.

Le module standard random gère l’aléatoire en Python.

Le code ci-dessous génère un entier aléatoire entre 1 et 49, comme pour un tirage d’une boule au loto :

1
2
3
4
from random import randint

a = randint(1,49)
print(a)
5
42
  • Ligne 1 : la bibliothèque standard Python dispose d’un module de création d’objets aléatoires. Ce module s’appelle random. Le module random « possède » une fonction randint. La ligne 1 permet au programme de faire appel à la fonction randint.
  • Ligne 3 : le tirage est effectué grâce à la fonction randint. La fonction randint renvoie ici un nombre (aléatoire) entre 1 et 49, bornes comprises.
  • Lignes 4 et 5 : le résultat du tirage aléatoire.

Fonction randrange

Dans l’exemple ci-dessous, on effectue un tirage aléatoire de 6 entiers \(\mathtt{n}\) vérifiant \(\mathtt{1 \leq n < 50}\) (comme au loto en France) :

1
2
3
4
5
6
7
8
from random import randrange

print(randrange(1, 50))
print(randrange(1, 50))
print(randrange(1, 50))
print(randrange(1, 50))
print(randrange(1, 50))
print(randrange(1, 50))
 9
10
11
12
13
14
14
15
47
45
38
12

La fonction randrange est une fonction du module random. L’usage de la fonction randrange nécessite donc une instruction d’importation, cf. ligne 1 ci-dessus.

Un appel randrange(a, b) renvoie un entier aléatoire n tel que \(\mathtt{a\leq n < b}\)\(\mathtt{a}\) et \(\mathtt{b}\) ont des valeurs entières (on notera que la borne en \(\mathtt{b}\) est stricte)

Pour effectuer un tirage par pile ou face, on utilisera randrange(2).

De même, pour simuler un dé, on utilisera randrange(6) :

1
2
3
4
5
from random import randrange

# Tirage de dé à 6 faces
de_1_6 = 1+randrange(6)
print(de_1_6)
6
3

Fonction randint

La fonction randint fournie par le module standard random génère un entier aléatoire entre deux bornes entières a et b, bornes incluses.

1
2
3
from random import randint

print(randint(1, 49))
4
40

Un appel randint(a, b) se fait toujours avec deux arguments, entiers et renvoie un entier aléatoire \(\mathtt{n}\) tel que \(\mathtt{a\leq n\leq b}\).

Pour effectuer un tirage par pile ou face, on utilisera randint(1, 2).

De même, pour simuler un dé, on utilisera randint(1,6) :

1
2
3
4
5
from random import randint

# Tirage de dé à 6 faces
de_1_6 = randint(1, 6)
print(de_1_6)
6
3