Avant de s'attaquer aux fonctions, testons nos connaissances avec les listes.
Pour cela, essayons de réaliser les opérations demandées dans le programme Python ci-dessous :
- Créer une liste vide.
- Ajouter les valeurs 3, 7 et 4 dans la liste.
- Afficher la liste.
Et ensuite :
- Créer une liste contenant les valeurs 6, 2 et 1.
- Supprimer le dernier élément de la liste.
- Afficher la liste.
Et pour finir, il faut concaténer (avec +
) et afficher la liste
résultat
Cet exercice a pour but de montrer la transition tuples → listes.
Rédiger une fonction tuple_to_list(t)
qui prend un tuple en
paramètre et renvoie une liste contenant les mêmes éléments que le tuple en entrée, et dans le même
ordre.
def tuple_to_list(t):
"""
t - tuple : Tuple à transformer en liste
Sortie : liste de même taille que t, contenant les éléments de t.
>>> tuple_to_list( (1, 6, 3) )
[1, 6, 3]
"""
- Une piste ?
- Une autre piste ?
Il y a plusieurs méthodes possibles pour réaliser cette fonction.
Une méthode possible est de parcourir tous les éléments du tuple t
puis de les ajouter un par un dans une liste.
Comment parcourir un tuple ? Lisez votre cours !
Comment ajouter un élément dans une liste ? Lisez votre cours !
Cet exercice est important : il va servir de base aux trois exercices qui suivront. Il
va permettre d'avoir des listes aléatoires afin de tester les diverses focntions que nous allons créer.
- Rédiger une fonction
liste_alea(n, p)
qui renvoie une liste de n
entiers aléatoires choisis entre 1
et p
inclus.
-
Modifier la signature de la fonction pour que les paramètres par défaut soient
n=10
et p=100
.
La signature de la fonction ?
Il s'agit de la toute première ligne qui suit le mot-clef def
en Python. La signature d'une fonction comprend donc le
nom
de la fonction, mais aussi ses paramètres. On demande donc ici de réaliser une modification au
niveau des paramètres de la fonction.
- Entrer
print(liste_alea(7, 20))
dans le «Programme Principal».
À quelle situation pourrait correspondre la liste ainsi affichée ?
- Entrer
print(liste_alea(14, 6))
dans le «Programme Principal».
À quelle situation pourrait correspondre la liste ainsi affichée ?
##----- Importation des modules -----##
from random import *
##----- Définition des Fonctions -----##
def liste_alea(n, p):
"""
n - int : Nombre d'entiers à ajouter dans la liste
p - int : Valeur maximale des entiers dans la liste
Sortie : Liste de n entiers aléatoires pris entre 1 et p inclus.
"""
##----- Programme Principal -----##
- Une piste ?
- Une autre piste ?
On crée une liste vide puis on ajoute des éléments à la fin de
cette liste avec la méthode .append()
.
On génère un nouvel entier aléatoire, on l'ajoute à la liste ;
on génère un nouvel entier aléatoire, on l'ajoute à la liste ;
etc...
Rédiger une fonction somme(liste)
qui renvoie la somme des éléments de la liste
liste
. On admet que les éléments de
liste
sont tous numériques (mais
pas forcément des entiers...).
Dans le «programme principal», utiliser la fonction
liste_alea()
de l'exercice
précédent pour créer une liste aléatoire de
10
entiers compris entre
1
et 10
.
Afficher ensuite la somme des termes de cette liste pour
tester la fonction
somme()
.
##----- Définition des Fonctions -----##
def somme(liste):
"""
liste - list : Liste des nombres à additionner
Sortie : Somme des nombres de la listes.
>>> somme([1, 8, 5, 9])
23
"""
##----- Programme Principal -----##
- Un indice ?
- Truc/Astuce (après avoir terminé !!!)
Comme vous vous en doutez (si vous ne vous en doutez pas, travaillez vraiment parce que
vous avez du retard), il faut parcourir toutes les valeurs de la liste.
Vous pourrez, pour chaque valeur, l'additionner à une même valeur qui sera renvoyée à la fin
du programme.
P.S. : La somme des éléments d'une liste vide est 0.
La méthode pré-programmée en Python
qui permet
d'effectuer cette somme est sum()
:
test = liste_alea(10, 10)
print(test)
print(f'La somme des elements de cette liste est {sum(test)}')
Concevoir la fonction inserer(liste, position, element)
qui renvoie la liste liste
dans laquelle
l'élément element
a été inséré à
l'indice position
.
Attention ! Il faut bien vérifier que
l'élément peut être inséré. En effet, l'indice donné
par position
dépasse
peut-être la taille de la liste. Si tel est le cas, il est demandé
de renvoyer la valeur None
.
Dans le «programme principal», utiliser la fonction
liste_alea()
de l'exercice n°3
pour créer une liste aléatoire de 10
entiers compris entre 1
et
6
. Afficher ensuite cette liste
puis la même liste dans laquelle on a inséré la valeur
-1
à l'indice
4
.
##----- Définition des Fonctions -----##
def inserer(liste, position, element):
"""
liste - list
position - int : Indice où l'élément doit être inséré
element : Élément quelconque à insérer
Sortie : Une nouvelle liste où l'indice "position" contient la valeur de "element".
>>> inserer([3, 7, 1, 8], 2, -1)
[3, 7, -1, 1, 8]
>>> inserer([9, 5, 1], 5, 8)
None
>>> inserer([], 0, 3)
[3]
"""
##----- Programme principal -----##
- Une piste ?
- Une autre piste ?
- Truc/Astuce (après avoir terminé !!!)
Il existe deux façons de réaliser cet exercice.
La première est d'utiliser la méthode .append()
. Cela
nécessite donc de créer une nouvelle liste et de la remplir avec les éléments de l'ancienne
liste et le nouvel élément. Ce n'est pas la façon la plus simple !.
Dans cet exercice, il faut plutôt utiliser la concaténation «+
» entre deux listes.
Pensez à tester les positions extrêmes pour la fonction
inserer()
:
0
,
len(liste)-1
,
len(liste)
...
La méthode pré-programmée en Python
qui permet
d'effectuer cette insertion est
.insert(position, element)
:
test = liste_alea(10, 6)
print(test)
test.insert(4, -1)
print(f"L'insertion dans la liste donne {test}")
Attention ! Cette méthode (qui n'est pas une fonction) modifie directement la liste !