Files
1ereNSI/representation_construits/chapitre_1/td/TD.ipynb
T

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

  1. Créer une liste contenant l'ensemble des noms des personnes dans la salle de TP
  2. Créer une liste contenant l'ensemble des entiers pairs entre 0 et 20 inclus,
  3. Afficher uniquement les entiers de la liste, construit à la question 2, qui sont multiples de 4.
  4. Créer une fonction aleatoire qui renvoie une liste de valeurs aléatoires. Elle prend 3 entiers en paramètre :
    • n : le nombre d'éléments de la liste
    • min : la valeur minimale possible
    • max : la valeur maximale possible
In [ ]:
# Question 1
In [ ]:
# Question 2
In [ ]:
# Question 3
In [ ]:
# Question 4

Exercice 2 : Parcours et Recherche

>>> groupe_1 = ['Alan', 'Brice', 'Chloé', 'Damien', 'Eléonore', 'Farid']
>>> groupe_2 = ['Damien', 'Killian', 'Margot', 'Tom', 'Hugo', 'Killian']
  1. Écrire une fonction indice qui prend en paramètre une liste de noms et un nom et permet d'obtenir l'indice du nom dans la liste.
  2. Écrire une fonction est_present qui prend en paramètre une liste et un nom et renvoie True si le nom est présent dans la liste, False sinon.
  3. Écrire une fonction indices qui prend en paramètre une liste de noms et un nom et permet d'obtenir l'ensemble des indices du nom dans la liste.
  4. Écrire une fonction compte qui prend en paramètre une liste de noms et un nom et permet d'obtenir le nombre d'occurrences du nom dans la liste.
In [ ]:
# Question 1
In [ ]:
# Question 2
In [ ]:
# Question 3
In [ ]:
# Question 4

Exercice 3 : Agrégation

>>> notes = [14.5, 13, 7, 10.25, 16, 12.5, 9.5]
  1. Écrire une fonction somme qui prend en paramètre une liste de flottants et renvoie la somme des valeurs de la liste.
  2. Écrire une fonction moyenne qui prend en paramètre une liste de flottants et renvoie la valeur moyenne de la liste.
  3. Écrire une fonction maximum qui prend en paramètre une liste de flottants et renvoie la valeur maximale de la liste.
In [ ]:
# Question 1
In [ ]:
# Question 2
In [ ]:
# Question 3

Exercice 4 : Manipulations sur les listes

Pour tester les fonctions de manipulations, nous utiliserons le Code Konamiwikipédia

>>> code = ["↑", "↑", "↓","↓", "←", "→", "←", "→", "B", "A"]
  1. Écrire une méthode inverser qui prend en paramètre une liste et a pour effet de bord d'inverser l'ensemble des valeurs de la liste.
  2. Écrire une fonction copie qui prend en paramètre une liste et renvoie une copie de la liste.
  3. Écrire une méthode dedoublonner qui prend en paramètre une liste et a pour effet de bord de supprimer les doublons d'une même valeur.
  4. Écrire une fonction tranche qui prend en paramètre une liste et deux entiers min et max, et renvoie la sous-liste entre min et max.
In [ ]:
# Question 1
In [ ]:
# Question 2
In [ ]:
# Question 3
In [ ]:
# Question 4

Exercice 5 : Matrice

  1. Écrire une fonction ligne qui 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.
  2. Écrire une fonction colonne qui 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.
  3. Écrire une fonction diagonale_nord_ouest qui 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].
  4. Écrire une fonction diagonale_nord_est qui 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].
In [ ]:
# Question 1
In [ ]:
# Question 2
In [ ]:
# Question 3
In [ ]:
# Question 4

Application - Carré magique

Fig 1. - Carré d'ordre 4
163213
510118
96712
415141

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.

Fig 1.1 - Carré magique avec sa constante égale à 34
163213→34
510118→34
96712→34
415141→34
↙ 34↓ 34↓ 34↓ 34↓ 34↘ 34

Écrire un prédicat est_magique qui prend une matrice d'entiers en paramètre et indique si le carré est magique ou non.

In [ ]:

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.

Fig.2.1 - Carré magique de lettres d'ordre 3
TEL
ETE
LES
Fig.2.2 - Carré magique de lettres d'ordre 5
CULTE
UNIES
LIONS
TENTA
ESSAI

Écrire un prédicat est_magique_lettres qui prend une matrice de caractères en paramètre et indique si le carré est magique de lettres ou non.

In [ ]:

Application - Pour aller plus loin

Fig.3 - Dessin d'une maison

Déclaration de la matrice correspondante à la Fig.1 :

matrice = [
  ['⚪', '⚪', '⚪', '⚫', '⚪', '⚪'],
  ['⚪', '⚪', '⚫', '⚪', '⚫', '⚪'],
  ['⚪', '⚫', '⚪', '⚪', '⚪', '⚫'],
  ['⚫', '⚫', '⚫', '⚫', '⚫', '⚫'],
  ['⚫', '⚪', '⚫', '⚪', '⚪', '⚫'],
  ['⚫', '⚫', '⚫', '⚫', '⚫', '⚫']
]
  1. Écrire une fonction miroir_vertical qui 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.
Fig.3.1 - Effet miroir vertical de la Fig.3
In [ ]:
# Question 1
  1. Écrire une fonction miroir_horizontal qui 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.
Fig.3.2 - Effet miroir horizontal de la Fig.3
In [ ]:
# Question 2
  1. Écrire une fonction rotation_horaire qui 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.
Fig.3.3 - Rotation horaire de la Fig.3
In [ ]:
# Question 3
  1. Écrire une fonction rotation_anti_horaire qui 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.
Fig.3.4 - Rotation anti-horaire de la Fig.3
In [ ]:
# Question 4

Pour 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.

Fig.4 - Dessin d'un bateau avec une mouette

Déclaration de la matrice correspondante à la Fig.4 :

matrice = [
  ['⚪', '⚪', '⚫', '⚪', '⚪', '⚪', '⚪'],
  ['⚪', '⚫', '⚫', '⚪', '⚫', '⚪', '⚫'],
  ['⚫', '⚪', '⚫', '⚪', '⚪', '⚫', '⚪'],
  ['⚪', '⚫', '⚫', '⚪', '⚪', '⚪', '⚪'],
  ['⚪', '⚪', '⚫', '⚪', '⚪', '⚪', '⚪'],
  ['⚫', '⚫', '⚫', '⚫', '⚫', '⚫', '⚫'],
  ['⚫', '⚪', '⚪', '⚪', '⚪', '⚪', '⚫'],
  ['⚪', '⚫', '⚫', '⚫', '⚫', '⚫', '⚪']
]