TP de découverte des listes Python

publicité
M1 MEEF SD maths option info
Tableaux et listes en Python
1
Petits parcours
Exercice 1
1. Écrire une fonction qui calcule la somme des éléments d’un tableau de nombres (entiers ou flottants).
2. Écrire une fonction qui calcule la moyenne des éléments d’un tableau de nombres.
Exercice 2
1. Écrire une fonction qui calcule le maximum des éléments d’un tableau (non vide).
2. Modifier votre fonction pour qu’elle renvoie l’indice du maximum.
Dans le cas où il y a plusieurs éléments maximaux, quel indice renvoyez-vous ?
Exercice 3
1. Écrire une fonction qui teste si tous les éléments d’un tableau sont positifs (ou nuls).
2. Écrire une fonction qui teste si un tableau est rangé en ordre croissant (au sens large).
2
Recherches
Exercice 4
1. Écrire une fonction prenant en entrée un élément x et un tableau t, et renvoyant True ou False
selon que x est présent ou non dans t.
2. Écrire une fonction prenant en entrée x et un tableau t, et renvoyant :
— la première position de x dans t si x est présent ;
— None sinon.
Comment faire pour renvoyer la dernière position ? Donner deux possibilités !
3. Écrire une fonction prenant en entrée x et un tableau t, et renvoyant la liste (éventuellement vide)
des positions de x dans t.
3
Utilisation des listes
L’objet de cet exercice est d’utiliser les listes Python comme des piles plutôt que comme des tableaux.
On se servira donc essentiellement des fonctions pop et append.
Exercice 5 On veut simuler le comportement d’un navigateur Internet, autorisant les opérations suivantes :
— visiter une nouvelle page,
— revenir d’une page en arrière (si possible),
— aller une page en avant (après être revenu en arrière dans l’historique seulement).
Écrire un ensemble de fonctions simulant ces boutons.
On pourra pour cet exercice utiliser deux piles ; une page sera représentée simplement par une chaîne
de caractères, contenant par exemple son URL.
4
Chaînes de caractères
Exercice 6
1. Écrire une fonction prenant en entrée un motif m et un mot w (sous forme de chaînes de caractères), et testant si le motif m est présent dans w. Encore une fois, on renvoie une position de m
dans w si elle existe, ou None sinon.
Indication : Les chaînes de caractères permettent d’utiliser le slicing, c’est-à-dire de faire des
comparaisons du type w[i:j] = m.
>>> sous_mot (’titi’, ’tructititoto’)
4
>>> sous_mot (’tagada’, ’tructititoto’)
>>>
2. Reprogrammer la fonction précédente, mais en s’interdisant le slicing.
3. Écrire une fonction rechercher_remplacer qui prend en entrée un motif m, un mot w et un mot
de remplacement r (sous forme de chaînes de caractères), et qui renvoie un mot identique à w,
mais dans lequel la première occurrence de m a été remplacée par r.
Dans le cas où m est absent de w, on renvoie w inchangé.
5
Compréhension de liste
Exercice 7
Définir les listes suivantes par compréhension :
1. les carrés de tous les entiers compris entre 1 et 100 (inclus) ;
2. les couples (x, y) d’entiers positifs tels que x + y = 100 ;
3. les couples d’entiers de la forme (x, y) tels que x ≤ y et les deux entiers x et y sont tous deux
inférieurs à 10 (indication : il est plus facile de les ranger par y croissants) ;
4. les mêmes qu’à la question précédente, mais rangés par x croissants ;
5. les entiers compris entre 1 et 1000 qui ne sont multiples ni de 3 ni de 5.
6
Pour les rapides
Exercice 8 (Crible d’Eratosthène)
Pour déterminer l’ensemble des nombres premiers inférieurs à n, on peut créer un tableau de longueur
n + 1 (pour ne pas être embêté avec les décalages d’indices) contenant la valeur True à tous les indices
(tant qu’on n’a pas prouvé que n est composé, il est supposé premier), puis en « criblant » :
— tous les multiples (stricts) de 2 sont composés : on les passe à False dans le tableau ;
— tous les multiples (stricts) de 3 sont composés : on les passe à False dans le tableau ;
— pour 4, qui est composé (puisque t[4] == False), on laisse tomber (ses multiples sont déjà rayés) ;
— tous les multiples (stricts) de 5 sont composés : ...
— pour 6, qui est composé...
— etc.
√
On continue tant que le nombre par lequel on crible) n’a pas dépassé n.
1. Écrire une fonction prenant en entrée n et renvoyant la liste des entiers premiers inférieurs à n.
2. Quelle est la complexité de cette fonction ?
3. Combien d’entiers majorés par 107 sont premiers ?
Exercice 9 (Permutations dans des tableaux)
On peut voir une permutation de J0, n − 1K comme une liste de n entiers compris entre 0 et n − 1
dans laquelle chacun des entiers apparaît exactement une fois. Écrire alors :
— verifier_permutation qui vérifie si une liste correspond bien à une permutation.
— inverse qui calcule la réciproque d’une permutation.
— compose qui calcule la composée de deux permutations.
Téléchargement