Leçon 8

Matrices, tuples et dictionnaires

Dans le répertoire Python créez un dossier cours8. Il contiendra tous les fichiers de cette leçon.

Les matrices

Un matrice est représentée en python par une liste de listes.
Exemple : matrice=[[1,2,3],[4,5,6],[7,8,9]] équivaut à : $\left( \begin{array}{ccc}1&2&3\\4&5&6\\7&8&9\end{array}\right). $
C'est une matrice 3 lignes, 3 colonnes.
Ainsi pour désigner l'élément 1 de la matrice situé en première ligne, première colonne, nous utiliserons les indices (0,0), soit matrice[0][0].
matrice[0] désigne la liste [1,2,3] et matrice[0][0] le premier élément de cette liste.
De même matrice[1][2] désigne l'élément de la matrice situé à la ligne 2, colonne 3 soit 6.
Nous aurions aussi pu écrire matrice=[range(1,4),range(4,7),range(7,10)].

Création d'une matrice nulle par compréhesion.

Recopiez le code creation_matrice_nulle.py ci-dessous.


Création d'une matrice non nulle.

Ecrivez le script python creation_matrice_non_nulle.py ci_dessous :


En ligne 2 nous créons M une liste vide.
Nous avons une double boucle. La première en ligne 3 génère les lignes et la deuxième en ligne 5, les colonnes.
La ligne est complétée en ligne 6 et 7.
Une fois la ligne finie, on l'ajoute à la liste M en ligne 8, puis on la "vide" en ligne 4 pour constituer la ligne suivante.

Affichage d'une matrice

Exercice 1

Complétez le script python affiche_matrice.py ci-dessous qui affiche la matrice ligne par ligne comme ceci : $\begin{array}{ccc}1&2&3\\4&5&6\\7&8&9\end{array} $


Somme de deux matrices

Exercice 2

Ecrivez le script python sommes_matrices.py qui fait la somme de deux matrices : $$\quad\left( \begin{array}{ccc}1&2&3\\4&5&6\\7&8&9 \end{array}\right) \quad + \quad \left( \begin{array}{ccc}10&11&12\\13&14&15\\16&17&18 \end{array}\right) \quad = \quad \left( \begin{array}{ccc}11&13&15\\17&19&21\\23&25&27 \end{array}\right) $$ Ce script contiendra les fonctions creation_matrice(nlignes,ncolonnes), affiche_matrice(mat) écrites précédemment et vous rajouterez la fonction somme_matrices(matrice1,matrice2).
Le programme principal du script est donné ci-dessous :


Aide : Algorithme

Exercice 3

Ecrivez le script python qui

Exemple avec nbreLignes=3 et nbreColonnes=5

$$M=\left(\begin{array}{ccccc} 0&0&0&0&0\\0&0&0&0&0\\0&0&0&0&0\end{array}\right) \text{ donne } M=\left(\begin{array}{ccccc} 2&3&4&5&6\\3&4&5&6&7\\4&5&6&7&8\end{array}\right) $$
Aide : Algorithme

Exercice 4 : sommes des lignes.

Ecrivez le script python sommes_lignes_matrice.py qui calcule la somme de chaque ligne d'une matrice: $$\left( \begin{array}{ccc}1&2&3\\4&5&6\\7&8&9\end{array}\right) \text{ donne }[6,15,24]$$
Ce script utilisera les fonctions creation_matrice(nlignes,ncolonnes), affiche_matrice(mat) précédentes puis la fonction somme_lignes_matrice(matrice) qui retournera la liste sommes

Aide : Algorithme

Exercice 5 : sommes des colonnes.

Ecrivez le script python sommes_colonnes_matrice.py qui calcule la somme de chaque colonne d'une matrice: $$\left( \begin{array}{ccc}1&2&3\\4&5&6\\7&8&9\end{array}\right) \text{ donne } [12,15,18] $$

Aide : Algorithme

Exercice 6 : sommes des diagonales.

Ecrivez le script python sommes_diagonales_matrice.py qui calcule la somme de chaque diagonale d'une matrice carrée: $$\left( \begin{array}{ccc}1&2&3\\4&5&6\\7&8&9\end{array}\right) \text{ donne } [15,15]$$

Aide : Algorithme

Produit de deux matrices.

Exercice 7

Ecrivez le script python produit_matrices.py semblable à la somme de deux matrices mais qui fait le produit de deux matrices carrées : $$\quad\left( \begin{array}{cc}1&2\\3&4 \end{array}\right) \quad \times \quad \left( \begin{array}{cc}5&6\\7&8 \end{array}\right) \quad = \quad \left( \begin{array}{cc}19&22\\43&50 \end{array}\right) $$

Aide : Algorithme

Tri

Tri suivant la première colonne

Il y a deux façons de trier suivant la première colonne.
L'instruction sorted qui trie seulement pour l'affichage mais la liste est inchangée.
La méthode sort() qui modifie la liste en la triant.
Testez le code ci-dessous.

Tri suivant une colonne quelconque

sorted et sort() admettent un paramètre optionnel appelé key.
Grace à ce paramètre on va pouvoir sélectionner la colonne sur laquelle on va effectuer le tri, et ce à l'aide de la fonction lambda vue dans le chapitre sur les fonctions.
Complétez le code prédédent comme indiqué ci-dessous.

Tri d'un fichier CSV

Comma-separated values connu sous le sigle CSV, est un format informatique ouvert représentant des données tabulaires sous forme de valeurs séparées par des virgules (ou point virgule).
Un fichier CSV est un fichier texte. Chaque ligne du texte correspond à une ligne du tableau et les virgules correspondent aux séparations entre les colonnes. Les portions de texte séparées par une virgule correspondent ainsi aux contenus des cellules du tableau.
La programme ci-dessous utilise un fichier CSV qui liste les populations des communes du département 65 recensées en 2019.
Cliquez sur le lien : Fichier CSV
pour ouvrir le fichier CSV avec LibreOfficeCalc Enregistrez le fichier dans le même répertoire que le code python en format CSV.
Ouvez à nouveau le fichier avec un éditeur de texte.
Recopiez et testez le code ci-dessous.

Exercice 8

Dans cet exercice on veut interroger la table des villes des Hautes Pyrénnées. Après avoir saisi le nom d'une ville, le script affichera sa population, et si la ville n'exite pas il nous le dira.
Revopiez et compléltez le code ci-dessous

Exercice 9

Téléchargez le fichier lycees-occitanie.csv que vous trouverez ici : Données ouvertes
.

  1. Ecrire un script qui afichera le nom de la ville suivi du nom du lycée dans l'ordra alphabétique des villes
  2. Ecrire un script qui contiendra une fonction nommée trouverLycees(T,ville) qui donnera la liste des lycées de la ville saisie par l'utilisateur.

Les ensembles

Un ensemble est une collection non ordonnée sans élément dupliqué. Des utilisations basiques concernent par exemple des tests d'appartenance ou des suppressions de doublons.
Les ensembles savent également effectuer les opérations mathématiques telles que les unions, intersections, différences et différences symétriques.
Des accolades ou la fonction set() peuvent être utilisés pour créer des ensembles. Notez que pour créer un ensemble vide, {} ne fonctionne pas, cela crée un dictionnaire vide que nous verrons plus loin, on utilisera set().

Création d'un ensemble

Recopiez et testez les lignes ci-dessous

Testez print(e1[1]). Un message d'erreur apparaîtra dans la mesure où, contrairement aux listes ou aux chaînes de caractères, les ensembles ne sont pas indéxés.

Opérations sur les éléments d'un ensemble

Recopiez et testez les lignes ci-dessous

Opérations sur les ensembles

Recopiez et testez les lignes ci-dessous

Exercice

Définir deux ensembles X et Y à partir des mots "abracadabra" et "barbichette" puis affichez les résultats suivants :

Les tuples

Un tuple est assez semblable à une liste mais qui n'est pas modifiable. Les tuples sont donc préférables aux listes partout où l'on veut être certain que les données transmises ne soient pas modifiées par erreur au sein d'un programme. En outre, les tuples sont moins « gourmands » en ressources système (ils occupent moins de place en mémoire).
Du point de vue de la syntaxe, un tuple est une collection d'éléments séparés par des virgules.

Recopiez et testez les lignes ci-dessous

Une fonction retournant plusieurs valeurs les retournera sous la forme d'un tuple

L'instruction eval permet de saisir un tuple d'entiers

Exercices

Exercice 1

Ecrire une fonction nommée operations(a,b) qui retourne la somme a+b, la différence a-b, le produit axb et le quotient entier de a par b
Puis écrire un programme qui saisit un couple d'entiers (a,b)
Appeler la fonction operations(a,b) et demander quel résultat veut-on (a+b, a-b, axb, a/b).
En fonction de la réponse on affichera la valeur du tuple renvoyée par la fonction

Cpmlétez le code ci-dessous afin d'obtenir les l'affichage qui suit.





Exercice 2

Ecrire une fonction nommée valeurs(n) qui renvoie le tuple formé des valeurs 5 x i - 2 pour i allant de 0 à n.

Exercice 3

On considère la liste T = [(10, 20), (30, 40, 50, 60), (70, 80, 90)]

  1. Modifiez la liste T afin d'obtenir T = [[10, 20], [30, 40, 50, 60], [70, 80, 90]
  2. En partant de la liste T précédente obtenir la première liste T = [(10, 20), (30, 40, 50, 60), (70, 80, 90)]
  3. Ecrire un script qui à partir de la liste T et un entier v crée la liste de tuples avec le dernier élément de chaque tuple remplacé par v.
    Par exemple si T = [(10, 20), (30, 40, 50, 60), (70, 80, 90)] et v=100 alors la liste obtenue sera
    [(10, 100), (30, 40, 50, 100), (70, 80, 100)].

Les dictionnaires

Les dictionnaires sont des ensembles de paires clé: valeur, les clés devant être uniques (au sein d'un dictionnaire). Une paire d'accolades crée un dictionnaire vide : {}. Placer une liste de paires clé: valeur séparées par des virgules à l'intérieur des accolades ajoute les valeurs correspondantes au dictionnaire ; c'est également de cette façon que les dictionnaires sont affichés.
On va créer un dictionnaire où la clé sera un pays et la valeur associée la capitale du pays.
Recopiez et testez les lignes ci-dessous après chaque print().

Exercices

Exercice 1

1. Créer un dictionnaire magasin qui pour chaque clé produit associe la valeur prix correspondant à la table ci-dessous.

Nom du produit Prix TTC
Sabre Laser 229
Mitendo DX 127.30
Coussin Linux 74.50
Slip Goldorak 29.90
Station Nextpresso 184.60

2. Ecrire un script Python afin d'afficher tout les produits du magasin.

3. Ecrire un script Python afin d'afficher tout les prix du magasin.

4. Modifier votre script Python afin de saisir un produit et afficher si ce produit est en magasin. Si c'est le cas il faudra afficher son prix.

5. Modifier votre script afin d'afficher un produit à partir d'un prix saisi.

6. Modifier votre script Python afin d'afficher tous les produits qu'un utilisateur peut acheter à partir d'une somme d'argent saisie au clavier.
Exemple : si l'utilisateur saisit 100 euros, la machine répondra Cousin Linux ou Slip Goldorak.

Exercice 2

Dans cet exercice on va compter le nombre de fois que chaque mot sont répétés dans le texte Le tour du monde en quatre vingt jours de Jules Verne.
Pour cela vous allez enregistrer le texte en cliquant sur le lien Le tour du monde en quatre vingt jours dans le même répertire que votre code python.
Recopiier le code ci-dessous

Remarque : s'il y a un problème d'encodage modifiez votre code précédent comme ci-dessous.

On va maintenant compléter le code précédent en créant un dictionnaire où chaque mot (une clé) sera associé au nombre de fois qui sera contenu das le texte.
Compléter le code ci-dessous

Exercice 3

Compléter le script précédent où l'utilisateur entre un nombre et le script affiche tous les mots de longueur ce nombre.

Exercice 4

Compléter le script précédent où l'utilisateur entre un nombre et le script affiche tous le mot de longueur ce nombre le plus répété.

Opérations sur les tables

Fichiers CSV et dictionnaires

Dans ce paragraphe nous allons manipuler les fichiers CSV à l'aide des dictionnaires.
Créez la table ci-dessous et enregistrez la au format csv sous le nom Table1.csv

Recopiez le code ci-dessous

En ligne 3 le fichier fichierDico est créé en utilisant des dictionnaires.
En ligne 4 on affiche une liste de dictionnaires.

Modifier le script précédent comme indiqué ci-dessous afin d'afficher chaque ligne qui est un dictionnaire

Exercice 1

Dans cet exercice on veut obtenir la moyenne d'une matière.
Complétez le script ci-dessous :

Exercice 2

Dans cet exercice vous réaliserez un script qui affiche la moyenne d'un élève.

Exercice 3

Téléchargez le fichier des lycées de la région Occitanie : lycees_occitanie.csv
Ecrivez un script qui crée la table des lycées d'une ville puis qui affiche les nom de ces lycée.
Exxemple pour Tarbes on obtiendra l'affichage ci-dessous

Sélectionner des lignes en fonction d'un critère

Dans ce paragraphe nous allons afficher les lignes des élèves vérifiant un critère.
Dans le code ci-dessous on cherche les élèves qui ont une note de maths supérieure à 16.
Recopier et tester le code ci-dessous.

Modifiez le critère dans le code et testez le.

Sélectionner des colonnes

Dans ce paragraphe on va construire une table réduite avec les attributs de notre choix.
Recopiez et testez le code ci-dessous

Modifiez la liste des attributs dans le code et testez le.

Fusion de deux tables ayant un même attribut

Dans ce paragraphe nous souhaitons fusionner les deux tables, nommées table1.csv et table2.csv, ci-dessous ayant un même attribut qui est Nom.

Pour obtenir la table suivante

Pour cela on va

  1. Créer une nouvelle table vide
  2. Pour chaque ligne1 de la table 1 trouver la ligne2 de la table 2 associée
  3. Créer une nouvelle ligne qui sera la ligne 1 complétée par les clés et valeurs de la ligne 2 sans l'attribut commun

Complétez le code ci-dessous

Création d'un fichier csv

Ici on souhaite écrire un script Python afin d'obtenir un fichier csv comme décrit ci-dessous, version texte puis version tableur.

Recopiez et testez le code ci-dessous. Vous irez ouvrir monFichier.csv

Exercice 4

Créez le fichier csv de de la table L obtenue précédemment par la fusion des tables T1 et T2

Exercice 5

Créez les deux tables ci-dessous avec LibreOffice.calc puis enregistrez-les au format CSV.

tableNSI1 tableNSI2

Créez un code Python afin d'obtenir la table tableNSI3 fusion des deux tables précédentes où la meilleure des 2 notes de NSI est conservée.