Fonctions et modules

Fonctions natives

Il existe des fonctions prêtes à l’emploi dans Python. On en a déjà vu plusieurs:

fonction description
print() affiche le résultat à l’écran
type() renvoie le type (classe) de l’objet
str(), float() et int() conversion d’un type vers un autre
del() supprime un ou plusieurs élément d’une liste

Par exemple, pour obtenir le type de la valeur 10 et affecter le résultat à une nouvelle variable, on écrit:

[1]:
resultat = type(10)

De manière générale, une fonction à des entrées et des sorties, et on l’appelle de la manière suivante:

sorties = nom_fonction(entrées)

La fonction len() permet d’obtenir la longueur d’une liste ou d’une chaîne, c’est-à-dire le nombre d’éléments contenus dans la liste, ou le nombre de caractères contenus dans la chaîne.

Les fonctions min() et max() renvoient respectivement le plus petit et le plus grand élement d’une liste qui contient des élements d’un même type. Si ces éléments sont des chaînes, alors ils sont classés dans l’ordre alphabétique (a < b < c < …).

Liste des fonctions natives

Vous pouvez trouver la liste des fonctions natives et leur description à l’adresse:

https://docs.python.org/fr/3.8/library/functions.html

Exercice

  1. Vous prévoyez un voyage en France qui passe par les villes suivantes: Le Mans, Nantes, Limoges, Toulouse, Montpellier, Lyon, Dijon, Nancy. Créer une liste villes qui contient le nom de ces villes.
  2. A l’aide des fonctions len() et print(), afficher le nombre de villes que vous prévoyez de visiter à l’écran.
[2]:
# création de la liste de destinations
villes = ["Le Mans", "Nantes", "Limoges", "Toulouse", "Montpellier", "Lyon", "Dijon"]

# affichage de la longueur de la liste
print(len(villes))
7

Aide

Vous connaissez le nom d’un fonction mais vous ne vous souvenez plus comment l’utiliser? Vous pouvez obtenr de l’aide (en anglais) grâce à une autre fonction, help(), ou bien en écrivant ? avant le nom de la fonction. Par exemple:

[3]:
help(len)
Help on built-in function len in module builtins:

len(obj, /)
    Return the number of items in a container.

L’aide nous renseigne sur les entrées et sorties de la fonction. Dans l’exemple, on traduit par:

entrée sortie provenance
un objet (obj) nombre d’éléments dans le conteneur fonction native (built-in)

Conteneur

En Python, on appelle conteneur (container) un objet ayant vocation à en contenir d’autres, comme les chaînes qui contiennent des caractères, et les listes qui contiennent n’importe quel objet.

Voici un autre exemple:

[4]:
help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

On voit ici qu’il y a plusieurs entrées. Les entrées obligatoires sont celles qui ne sont pas suivies du signe =. Les points … signifient que l’on peut écrire plusieurs valeurs. Les entrées optionnelles sont suivies du signe =, qui indique leur valeur par défaut.

Pour la fonction print(), il faut en entrée une ou plusieurs valeurs, séparée par une virgule. On peut ensuite spécifier, dans l’ordre que l’ont veut, les entrées optionnelles:

option valeur par défaut description
sep " " séparateur entre les valeurs
end "\n" caractère à écrire en fin de ligne

On verra les autres options possibles plus tard. Par exemple, on peut écrire:

[5]:
print("Le Mans", "Nantes", "Limoges", sep=", ", end=" (mes destinations)\n")
Le Mans, Nantes, Limoges (mes destinations)

Aide du site Python

Vous pouvez consulter l’aide du site Python en Français. Il y a des tutoriels, des aides pour l’installation, une description de la bibliothèque standard, entre autres choses.

Exercice

  1. Afficher l’aide de la fonction sorted() et comprendre son fonctionnement. Note: un itérable (iterable) est un objet capable de renvoyer ses éléments un à un, comme les listes et les chaînes.
  2. Afficher à l’écran les villes contenues dans la liste villes créée plus haut dans un ordre alphabétique descendant (de z vers a), grâce à l’option reverse=True de la fonction sorted(), et de la fonction print().
[6]:
# aide de la fonction sorted()
help(sorted)
Help on built-in function sorted in module builtins:

sorted(iterable, /, *, key=None, reverse=False)
    Return a new list containing all items from the iterable in ascending order.

    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.

[7]:
# affichage de la liste dans l'ordre alphabétique inverse
print(sorted(villes, reverse=True))
['Toulouse', 'Nantes', 'Montpellier', 'Lyon', 'Limoges', 'Le Mans', 'Dijon']

Méthodes de chaînes

Il existe beaucoup de méthodes pré-définies pour les chaînes de caractères. Nous en présentons quelques une ici. Pour avoir la liste complète, vous pouvez utiliser l’instruction help(str) ou bien consulter l’aide du site Python.

méthode description
str.lower() renvoit un texte en minuscule
str.upper() renvoit un texte en majuscule
str.capitalize() première lettre en majuscule
str.split() renvoie une liste des mots sépararés par des blancs
str.find(str) recherche une chaîne spécifiée en entrée
str.replace(str1,str2) substitue une chaîne par une autre
str.count(str) compte le nombre d’occurrences d’une chaîne
str.startswith(str) vérifie si une chaîne commence par une autre chaîne
str.strip() “nettoie les bords” d’une chaîne

Exercice

  1. Créer une variable ville = "TOULOUSE"
  2. Afficher le nom de la ville à l’écran avec la première lettre en capitale et le reste en minuscule
  3. Afficher à l’écran le nombre de fois que la lettre “o” apparaît dans le mot
[8]:
# création de la chaîne
ville = "TOULOUSE"

# affichage avec seulement la première lettre en capitale
print(ville.lower().capitalize())

# nombre d'occurence de la lettre o
print(ville.lower().count("o"))
Toulouse
2

Méthodes de liste

Il existe aussi beaucoup de méthodes pré-définies pour les listes. Nous en présentons quelques une ici. Pour avoir la liste complète, vous pouvez utiliser l’instruction help(list) ou bien consulter l’aide du site Python.

méthode description
s.index(x) indice de la première occurrence de x dans s
s.count(x) nombre total d’occurrences de x dans s
s.append(x) ajoute x à la fin de la séquence s
s.clear() supprime tous les éléments de s (comme del(s[:]))
s.copy() crée une copie de s (comme s[:])
s.extend(t) étend s avec le contenu de t
s.insert(i,x) insère x dans s à l’indice i
s.pop([i]) récupère l’élément à l’indice i et le supprime de s
s.remove(x) supprime le premier élément de s égal à x
s.reverse() inverse l’ordre des éléments de s

Argument optionnel

Un argument entre crochet, comme dans s.pop([i]), veut dire que l’on n’est pas obligé d’écrire explicitement cet argument. Si on ne l’écrit pas, alors il prend une valeur par défaut que l’on peut trouver dans l’aide de la fonction.

Exercice

On décide d’aller à Poitiers plutôt qu’à Limoges. Il faut donc substituer "Poitiers" à "Limoges" dans notre liste des destinations. De plus, on veut ajouter Paris comme destination finale.

  1. Créer la liste villes = ["Le Mans", "Nantes", "Limoges", "Toulouse", "Montpellier", "Lyon", "Dijon"]
  2. Affecter l’indice de la chaîne "Limoges" dans la liste villes à une variable i.
  3. Insérer la chaîne "Poitiers" dans la liste villes à l’indice i.
  4. Retirer la chaîne "Limoges" de la liste villes, et ajouter "Paris" à la fin de la liste.
  5. Afficher la liste villes à l’écran.
[9]:
# création de la liste
villes = ["Le Mans", "Nantes", "Limoges", "Toulouse", "Montpellier", "Lyon", "Dijon"]

# indice de l'élément "Limoges"
i = villes.index("Limoges")

# insertion de la chaîne "Poitiers"
villes.insert(i,"Poitiers")

# suppression de la chaîne "Limoges"
villes.remove("Limoges")

# ajout de la chaîne "Paris" en fin de liste
villes.append("Paris")

# affichage de la liste
print(villes)
['Le Mans', 'Nantes', 'Poitiers', 'Toulouse', 'Montpellier', 'Lyon', 'Dijon', 'Paris']

Importer un module

Les modules sont des bibliothèques de fonctions. Il existe de nombreux modules pour le calcul scientifique, que nous verrons dans la suite du cours. La bibliothèque Python propose quelques modules numériques et mathématiques.

Pour importer un module dans notre programme, par exemple le module math, il suffit d’écrire:

[10]:
import math

On peut alors utiliser les fonctions du module ``math` <https://docs.python.org/fr/3/library/math.html>`__ en écrivant:

[11]:
math.pi
[11]:
3.141592653589793
[12]:
math.sin(3 * math.pi / 4)
[12]:
0.7071067811865476

On peu aussi changer le nom du module dans notre programme:

[13]:
import math as mt

On accède alors aux fonctions avec le nouveau nom:

[14]:
mt.e
[14]:
2.718281828459045
[15]:
mt.log(mt.e)
[15]:
1.0

Exercice

  1. Importer le module random en lui donnant le nom rd.
  2. Afficher à l’écran un chiffre aléatoire entre 0 et 1 à l’aide de la fonction ``random()` <https://docs.python.org/fr/3/library/random.html>`__ du module random.
[16]:
# import du module random
import random as rd

# affichage d'un nombre aléatoire entre 0 et 1
print(rd.random())
0.5079299333449618

Import séléctif

Finalement, on peut importer seulement quelques fonctions d’un module en les nommant. On n’a alors pas besoin de spécifier le module quand on les utilise:

[17]:
from math import cos, radians # radian(x) convertit l'angle x de degrés en radians

angle = 360 # degrés
print(cos(radians(angle)))
1.0

Exercice

  1. Importer les fonctions mean() et median() du module statistics.
  2. Lire leurs descriptions dans l’aide du module statistics.
  3. Créer une liste nombres = [7.2, 1.5, 9.3, 6.9, 14.2, 2.5, 87.2]
  4. Afficher à l’écran la moyenne et la médiane de la liste nombres.
[18]:
# import des fonction mean() et random() du module statistics
from statistics import mean, median

# création de la liste
nombres = [7.2, 1.5, 9.3, 6.9, 14.2, 2.5, 87.2]

# affichage de la moyenne et de la médiane
print("Moyenne: " + str(mean(nombres)))
print("Médiane: " + str(median(nombres)))
Moyenne: 18.400000000000002
Médiane: 7.2