21 KiB
TD : Les Listes
Ce TD va nous permettre de manipuler les listes en Python.
1. Rappel
Pour créer une liste en python, la syntaxe est la suivante :
>>> l = []
Pour ajouter un élément à une liste, on utilise la méthode append :
>>> l.append('NSI')
>>> l.append('ANGLAIS')
>>> l
['NSI', 'ANGLAIS']
Pour accéder à un élément, on utilise son indice :
>>> l[0]
'NSI'
>>> l[1]
'ANGLAIS'
Il est également possible de créer une liste avec un ensemble d'éléments :
>>> l = ['NSI', 'ANGLAIS', 'PHYSIQUE']
>>> l
['NSI', 'ANGLAIS', 'PHYSIQUE']
Il est possible d'obtenir la taille d'une liste, i.e le nombre d'éléments grâce à la méthode len :
>>> len(l)
3
2. Exercices
Exercice 1 : Création de listes
- Créer une liste contenant l'ensemble des noms des personnes dans la salle de TP
- Créer une liste contenant l'ensemble des entiers pairs entre 0 et 20 inclus,
- Afficher uniquement les entiers de la liste, construit à la question 2, qui sont multiples de 4.
- Créer une fonction
aleatoirequi renvoie une liste de valeurs aléatoires. Elle prend 3 entiers en paramètre :n: le nombre d'éléments de la listemin: la valeur minimale possiblemax: la valeur maximale possible
# Question 1# Question 2# Question 3# Question 4Exercice 2 : Parcours et Recherche
>>> groupe_1 = ['Alan', 'Brice', 'Chloé', 'Damien', 'Eléonore', 'Farid']
>>> groupe_2 = ['Damien', 'Killian', 'Margot', 'Tom', 'Hugo', 'Killian']
- Écrire une fonction
indicequi prend en paramètre une liste de noms et un nom et permet d'obtenir l'indice du nom dans la liste. - Écrire une fonction
est_presentqui prend en paramètre une liste et un nom et renvoie True si le nom est présent dans la liste, False sinon. - Écrire une fonction
indicesqui prend en paramètre une liste de noms et un nom et permet d'obtenir l'ensemble des indices du nom dans la liste. - Écrire une fonction
comptequi prend en paramètre une liste de noms et un nom et permet d'obtenir le nombre d'occurrences du nom dans la liste.
# Question 1# Question 2# Question 3# Question 4Exercice 3 : Agrégation
>>> notes = [14.5, 13, 7, 10.25, 16, 12.5, 9.5]
- Écrire une fonction
sommequi prend en paramètre une liste de flottants et renvoie la somme des valeurs de la liste. - Écrire une fonction
moyennequi prend en paramètre une liste de flottants et renvoie la valeur moyenne de la liste. - Écrire une fonction
maximumqui prend en paramètre une liste de flottants et renvoie la valeur maximale de la liste.
# Question 1# Question 2# Question 3Exercice 4 : Manipulations sur les listes
Pour tester les fonctions de manipulations, nous utiliserons le Code Konamiwikipédia
>>> code = ["↑", "↑", "↓","↓", "←", "→", "←", "→", "B", "A"]
- Écrire une méthode
inverserqui prend en paramètre une liste et a pour effet de bord d'inverser l'ensemble des valeurs de la liste. - Écrire une fonction
copiequi prend en paramètre une liste et renvoie une copie de la liste. - Écrire une méthode
dedoublonnerqui prend en paramètre une liste et a pour effet de bord de supprimer les doublons d'une même valeur. - Écrire une fonction
tranchequi prend en paramètre une liste et deux entiersminetmax, et renvoie la sous-liste entreminetmax.
# Question 1# Question 2# Question 3# Question 4Exercice 5 : Matrice
- Écrire une fonction
lignequi prend en paramètre une matrice et un indice de ligne en entrées et renvoie une liste avec l'ensemble des valeurs de la ligne. - Écrire une fonction
colonnequi prend en paramètre une matrice et un indice de colonne en entrées et renvoie une liste avec l'ensemble des valeurs de la colonne. - Écrire une fonction
diagonale_nord_ouestqui prend en paramètre une matrice et renvoie une liste avec l'ensemble des valeurs de la diagonale. La première valeur est celle à l'indice [0][0] et la dernière celle correspondant à l'indice [len(matrice) - 1][len(matrice) - 1]. - Écrire une fonction
diagonale_nord_estqui prend en paramètre une matrice et renvoie une liste avec l'ensemble des valeurs de la diagonale. La première valeur est celle à l'indice [0][len(matrice) - 1] et la dernière celle correspondant à l'indice [len(matrice) - 1][0].
# Question 1# Question 2# Question 3# Question 4Application - Carré magique
| 16 | 3 | 2 | 13 |
| 5 | 10 | 11 | 8 |
| 9 | 6 | 7 | 12 |
| 4 | 15 | 14 | 1 |
En mathématiques, un carré magique d’ordre n est composé de n^2 entiers strictement positifs, écrits sous la forme d’un tableau carré. Ces nombres sont disposés de sorte que leurs sommes sur chaque rangée, sur chaque colonne et sur chaque diagonale principale soient égales. On nomme alors constante magique la valeur de ces sommes.
| 16 | 3 | 2 | 13 | →34 | |
|---|---|---|---|---|---|
| 5 | 10 | 11 | 8 | →34 | |
| 9 | 6 | 7 | 12 | →34 | |
| 4 | 15 | 14 | 1 | →34 | |
| ↙ 34 | ↓ 34 | ↓ 34 | ↓ 34 | ↓ 34 | ↘ 34 |
Écrire un prédicat
est_magiquequi prend une matrice d'entiers en paramètre et indique si le carré est magique ou non.
Carré magique de lettres
Un carré magique de lettres, également appelé « mots carrés », est une forme de mots croisés disposé en carré, ne comportant pas de case noire et constitué de mots valides dans une langue définie. Ils peuvent, par définition, être lus horizontalement et verticalement et présentent dans ces deux sens les mêmes mots.
| T | E | L |
| E | T | E |
| L | E | S |
| C | U | L | T | E |
| U | N | I | E | S |
| L | I | O | N | S |
| T | E | N | T | A |
| E | S | S | A | I |
Écrire un prédicat
est_magique_lettresqui prend une matrice de caractères en paramètre et indique si le carré est magique de lettres ou non.
Application - Pour aller plus loin
| ⚪ | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ |
| ⚪ | ⚪ | ⚫ | ⚪ | ⚫ | ⚪ |
| ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚫ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚫ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
Déclaration de la matrice correspondante à la Fig.1 :
matrice = [
['⚪', '⚪', '⚪', '⚫', '⚪', '⚪'],
['⚪', '⚪', '⚫', '⚪', '⚫', '⚪'],
['⚪', '⚫', '⚪', '⚪', '⚪', '⚫'],
['⚫', '⚫', '⚫', '⚫', '⚫', '⚫'],
['⚫', '⚪', '⚫', '⚪', '⚪', '⚫'],
['⚫', '⚫', '⚫', '⚫', '⚫', '⚫']
]
- Écrire une fonction
miroir_verticalqui prend en paramètre une matrice et a pour effet de bord de réaliser l'effet miroir vertical sur les valeurs de la matrice.
| ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ |
| ⚪ | ⚫ | ⚪ | ⚫ | ⚪ | ⚪ |
| ⚫ | ⚪ | ⚪ | ⚪ | ⚫ | ⚪ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚫ | ⚪ | ⚪ | ⚫ | ⚪ | ⚫ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
# Question 1- Écrire une fonction
miroir_horizontalqui prend en paramètre une matrice et a pour effet de bord de réaliser l'effet miroir horizontal sur les valeurs de la matrice.
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚫ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚫ |
| ⚪ | ⚪ | ⚫ | ⚪ | ⚫ | ⚪ |
| ⚪ | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ |
# Question 2- Écrire une fonction
rotation_horairequi prend en paramètre une matrice et renvoie une matrice dont les valeurs correspondent à la rotation dans le sens horaire des valeurs de la matrice.
| ⚫ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ |
| ⚫ | ⚪ | ⚫ | ⚫ | ⚪ | ⚪ |
| ⚫ | ⚫ | ⚫ | ⚪ | ⚫ | ⚪ |
| ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚫ |
| ⚫ | ⚪ | ⚫ | ⚪ | ⚫ | ⚪ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚪ | ⚪ |
# Question 3- Écrire une fonction
rotation_anti_horairequi prend en paramètre une matrice et renvoie une matrice dont les valeurs correspondent à la rotation dans le sens anti-horaire des valeurs de la matrice.
| ⚪ | ⚪ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚪ | ⚫ | ⚪ | ⚫ | ⚪ | ⚫ |
| ⚫ | ⚪ | ⚪ | ⚫ | ⚪ | ⚫ |
| ⚪ | ⚫ | ⚪ | ⚫ | ⚫ | ⚫ |
| ⚪ | ⚪ | ⚫ | ⚫ | ⚪ | ⚫ |
| ⚪ | ⚪ | ⚪ | ⚫ | ⚫ | ⚫ |
# Question 4Pour valider vos fonctions, vous pouvez réaliser sur papier les opérations miroir et de rotation sur la Fig.4 et vérifier que les résultats obtenus sont conformes.
| ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ |
| ⚪ | ⚫ | ⚫ | ⚪ | ⚫ | ⚪ | ⚫ |
| ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚫ | ⚪ |
| ⚪ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ |
| ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚫ |
| ⚪ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚪ |
Déclaration de la matrice correspondante à la Fig.4 :
matrice = [
['⚪', '⚪', '⚫', '⚪', '⚪', '⚪', '⚪'],
['⚪', '⚫', '⚫', '⚪', '⚫', '⚪', '⚫'],
['⚫', '⚪', '⚫', '⚪', '⚪', '⚫', '⚪'],
['⚪', '⚫', '⚫', '⚪', '⚪', '⚪', '⚪'],
['⚪', '⚪', '⚫', '⚪', '⚪', '⚪', '⚪'],
['⚫', '⚫', '⚫', '⚫', '⚫', '⚫', '⚫'],
['⚫', '⚪', '⚪', '⚪', '⚪', '⚪', '⚫'],
['⚪', '⚫', '⚫', '⚫', '⚫', '⚫', '⚪']
]