Aller au contenu principal

Les tableaux

👨‍🏫 Introduction

Objectif

Vous avez jusqu'à présent travaillé uniquement avec les types primitifs du langage Python : les booléens, les entiers, les flottants et les chaînes de caractères. Vous allez maintenant étudier votre premier type construit : les tableaux.

Type construit

Un type construit est un type de données capable de contenir plusieurs valeurs.

Important

Les productions réalisées dans le cadre de ce TP seront à rendre en fin de séance :

  • Envoyer obligatoirement vos fichiers sous forme d'une archive au format ZIP (et non 7zip ou 7z)
  • Effectuer le rendu uniquement depuis l'application Exercices de l'ENT, via l'exercice intitulé [6TP1] Rendu

Préparation

Afin de garder organisées les productions réalisées en TP, mettre à jour l'arborescence NSI selon l'ordinateur utilisé :

💻 Ordinateur portable
  1. Lancer l'explorateur de fichiers
  2. Se rendre dans le dossier Documents
  3. Créer le dossier NSI s'il n'existe pas
  4. Dans le dossier NSI, créer le dossier chapitre_06
  5. Dans le dossier chapitre_06, créer le dossier tp1_tableaux
🖥 Ordinateur fixe des salles informatiques
  1. Depuis le bureau, cliquer sur l'icône intitulée Zone personnelle
  2. Créer le dossier NSI s'il n'existe pas
  3. Dans le dossier NSI, créer le dossier chapitre_06
  4. Dans le dossier chapitre_06, créer le dossier tp1_tableaux

Téléchargement des fichiers

Pour effectuer ce TP, il est nécessaire de télécharger certains fichiers :

  1. Télécharger le fichier ZIP contenant les fichiers du TP : 📦 télécharger
  2. Ouvrir le fichier ZIP
  3. Copier/coller tous les fichiers dans le dossier NSI\chapitre_06\tp1_tableaux

✨ Partie 1 - Découverte des tableaux

Exercice 1 - Expérimentation

Dans la console Python, identifier les commandes permettant de répondre aux points listés ci-après. Les commandes trouvées devront être reportées dans le fichier ex1_console.py.

  1. Affecter à une variable nommée premiers, un tableau contenant les nombres premiers de 2 à 17 inclus
  2. Vérifier le contenu de la variable premiers
  3. Obtenir la taille du tableau premiers
  4. Obtenir la valeur d'indice 2 du tableau premiers
  5. Obtenir la valeur du 4ème élément du tableau premiers
  6. Obtenir la valeur du dernier élément du tableau premiers en utilisant la fonction len()
  7. Affecter la valeur 101 au premier élément du tableau premiers

Exercice 2 - Génération d'un tableau

Vos observations et conclusions seront à rédiger sous forme de commentaires Python dans le fichier nommé ex2_generation.py.

Génération d'un tableau

Tester les deux expressions ci-dessous dans la console Python :

# Première expression
[0] * 4

# Seconde expression
[0, 1] * 4
Question 1

Quel est l'effet de l'opérateur * entre un tableau et un entier ?

Exercice 3 - Stockage en mémoire

Écrire dans le fichier ex3_stockage.py le programme Python correspondant aux instructions ci-dessous. Attention, n'exécuter le programme que lorsque cela est explicitement demandé.

  1. Affecter à une variable v1 la chaîne de caractères "A"
  2. Affecter à une variable v2 la variable v1
  3. Affecter la chaîne de caractères "B" à la variable v2
  4. Afficher la valeur des variables v1 et v2 à l'aide d'un unique appel à la fonction print()
  5. Ajouter en commentaire la réponse à la question suivante puis exécuter le programme
Question 2

Quelles valeurs anticipez-vous pour les variables v1 et v2 ?

  1. Continuer le programme en affectant à une variable t1 un tableau contenant les 3 premières lettres de l'alphabet (attention, une seule lettre par élément du tableau)
  2. Affecter à la variable t2 la variable t1
  3. Affecter la chaîne de caractères "D" au premier élément de la variable t2
  4. Afficher la valeur des variables t1 et t2 à l'aide d'un unique appel à la fonction print()
  5. Ajouter en commentaire la réponse à la question suivante puis exécuter le programme
Question 3

Quelles valeurs anticipez-vous pour les variables t1 et t2 ?

Exercice 4 - Visualisation de la mémoire

Vous n'arrivez pas à interpréter le résultat de l'exercice précédent ? Afin de comprendre ce qui se déroule en mémoire, se rendre sur le site www.pythontutor.com. Choisir ensuite le langage Python, copier/coller le code ci-dessous et visualiser l'exécution pas-à-pas.

v1 = "A"
v2 = v1
v2 = "B"

t1 = ["A", "B", "C"]
t2 = t1
t2[0] = "D"
Question 4

Quelle explication donnez-vous maintenant au phénomène observé pour stockage en mémoire ? Répondre via un commentaire à la fin du fichier ex3_stockage.py.

🚗 Partie 2 - Parcours des tableaux

Exercice 5 - Parcours simples

Soit trois tableaux t1, t2 et t3 :

t1 = ['(\\(\\','(-.-)','c(")(")']
t2 = ["'___'","(0,0)","/)_)",' ""']
t3 = [" __", "<(o )___", " ( ._> /", " `---'"]

Nous souhaitons afficher le contenu de ces tableaux selon trois parcours différents : le parcours par valeur, le parcours par indice à l'aide d'une boucle bornée et une boucle non bornée. Le code devra être saisi dans le fichier ex5_parcours.py, les tableaux y sont déjà présents.

🛠 Mise en pratique

  • Afficher les valeurs du tableau t1 en utilisant un parcours par valeur.
  • Afficher les valeurs du tableau t2 en utilisant un parcours par indice à l'aide d'une boucle bornée.
  • Afficher les valeurs du tableau t3 en utilisant un parcours par indice à l'aide d'une boucle non bornée.

Exercice 6 - Fonction somme

Nous souhaitons disposer de la fonction somme ayant pour paramètre un tableau d'entiers nommé entiers. Cette fonction calcule et renvoie la somme des entiers du tableau.

>>> somme([1, 2, 3])
6

🛠 Mise en pratique

  • Écrire le code de la fonction dans le fichier ex6_fonction.py
  • Écrire la docstring de la fonction
  • Écrire le(s) doctest(s) que vous jugerez pertinents
  • Écrire le code de lancement des doctests (le reprendre des précédents travaux pratiques)

🧠 Partie 3 - Problèmes

Les exercices de cette partie sont liés. L'ensemble du code devra être écrit dans un seul et unique fichier.

Exercice 7 - Les températures

En région parisienne, les températures moyennes en degrés, de janvier à décembre 2021, étaient les suivantes :

JFMAMJJASOND
4,66,55,610,011,314,415,717,614,510,37,35,2

🛠 Mise en pratique

Nous souhaitons étudier ces données en Python. Pour cela, les températures seront stockées sous forme d'un tableau de flottants.

  1. Créer un nouveau fichier Python
  2. Créer le tableau temperatures_2021 contenant l'ensemble des températures moyenne de 2021.
  3. Enregistrer votre code dans un fichier nommé meteo.py

Exercice 8 - Rapport des températures

Nous souhaitons afficher les températures à l'écran de la manière suivante :

Janvier : 4.6
Février : 6.5
[...]
Novembre : 7.3
Décembre : 5.2

🛠 Mise en pratique

  1. Écrire une fonction rapport prenant un tableau temperatures en paramètre
  2. Ajouter au corps de la fonction rapport, le tableau mois contenant le nom de chaque mois de l'année :
    ["Janvier", "Février", ..., "Novembre", "Décembre"]
  3. Ajouter un appel à la fonction rapport avec pour argument le tableau des températures de l'année 2021
  4. Ajouter au corps de la fonction rapport le code nécessaire pour n'afficher que les mois de l'année (donc sans les températures)
  5. Vérifier le bon fonctionnement de l'ensemble
  6. Modifier le code d'affichage des mois pour y ajouter la température propre à chacun. L'affichage doit être similaire à celui présenté en début d'exercice.

Exercice 9 - Moyenne annuelle

Nous souhaitons calculer la température moyenne annuelle. À cet effet, voici l'algorithme de calcul d'une moyenne à partir d'un tableau d'entiers ou de flottants :

Entrée : un tableau d'entiers ou de flottants tab
Sortie : le résultat du calcul de la moyenne

Début
| total ← 0
|
| pour chaque valeur v du tableau tab faire
| | total ← total + v
| fin pour chaque
|
| renvoyer total / taille(tab)
Fin

🛠 Mise en pratique

  1. Écrire une fonction moyenne implémentant cet algorithme.
  2. Modifier la fonction rapport pour à ajouter la ligne « Température moyenne annuelle : t » où t est la température moyenne renvoyée par la fonction moyenne

Exercice 10 - Maximum

Nous souhaitons connaître la température moyenne la plus élevée sur l'année. Pour cela nous aurions besoin d'une fonction renvoyant le maximum (la plus grande valeur) d'un tableau dont l'algorithme reste à définir :

Entrée : un tableau d'entiers ou de flottants tab
Sortie : le maximum

Début
|
| ?
|
| renvoyer ?
Fin

🛠 Mise en pratique

  • Écrire un algorithme permettant de trouver la plus grande valeur d'un tableau non vide d'entiers ou de flottants
  • Écrire une fonction maximum implémentant votre algorithme en ajoutant votre algorithme à la docstring.
  • Modifier la fonction rapport de façon à ajouter la ligne « Température moyenne maximale : t » où t est la température maximale renvoyée par la fonction maximum

Exercice bonus - Nombres premiers

Vous avez terminé les travaux pratiques ? Écrire la fonction premiers qui prend en paramètre un entier n et qui renvoie un tableau contenant les n premiers nombres premiers.

>>> premiers(5)
[2, 3, 5, 7, 11]

📦 Envoi du travail

Création du fichier ZIP

Pour faciliter le partage de plusieurs fichiers et dossiers, il est de regrouper l'ensemble dans un seul fichier au format ZIP. Lire les instructions selon l'ordinateur utilisés :

💻 Ordinateur portable (Windows 11)
  1. Lancer l'explorateur de fichiers
  2. Se rendre dans le dossier NSI\chapitre_06\
  3. Cliquer une seule fois avec le bouton gauche sur le dossier tp1_tableaux pour le sélectionner
  4. Cliquer avec le bouton droit sur le dossier tp1_conversions
  5. Choisir l'option Compresser dans le fichier ZIP
  6. Nommer le fichier nom_prenom_tableaux.zip
🖥 Ordinateur fixe des salles informatiques (Windows 10)
  1. Lancer l'explorateur de fichiers
  2. Se rendre dans le dossier NSI\chapitre_06\
  3. Cliquer une seule fois avec le bouton gauche sur le dossier tp1_tableaux pour le sélectionner
  4. Cliquer avec le bouton droit sur le dossier tp1_conversions
  5. Choisir l'option Envoyer vers puis Dossier compressé
  6. Nommer le fichier nom_prenom_tableaux.zip

Transmission du fichier ZIP

  1. Se connecter à l'ENT
  2. Accéder à l'application Exercices
  3. Cliquer sur l'exercice [6TP1] Rendu
  4. Choisir le fichier ZIP créé précédemment pour envoi
  5. Valider l'envoi du devoir