Tableaux 2D
Introduction
On considère tab = [[−9, 23, 4, 9], [22, 16, −3, 0], [5, 6, 1, 8]].
- Que vaut
tab[2]? - Que vaut
tab[1][2]? - Que vaut
len(tab)? - Que vaut
len(tab[0])? -
Un des éléments de
tabvaut4.Donner une instruction pour le remplacer par
14. 6. Expliquer précisément ce que fait la fonction suivante :🐍 Code Python 1 2 3 4 5 6
def mystere(tab): """ [[int]] -> None """ m, n = len(tab), len(tab[0]) for i in range(m): for j in range(n): tab[i][j] = 2*tab[i][j]
Nombre d'occurrences
-
Écrire une fonction
nombre_occurrencesqui prend en argument un tableau 2D d'entierstabet un entiereet qui renvoie le nombre de fois que l'élémenteest présent danstab.🐍 Code Python 1 2 3 4
def nombre_occurrences(tab, e): """ [[int]], int -> int Renvoie le nombre d'occurrences de e dans tab """ pass🐍 Code Python 1 2 3
tab = [[3, 3, 3], [3, 2, 1], [0, 1, 2], [2, 1, 3]] for e in range(5): print(nombre_occurrences(tab, e), end = ' ')⚙️ Résultat1 3 3 5 0 -
Écrire une fonction
nombre_occurrences_colqui prend en argument un tableau 2D d'entierstab, un entierjcorrespondant à un indice de colonne et un entiereet qui renvoie le nombre de fois que l'élémenteest présent dans la colonne d'indicejdetab.🐍 Code Python 1 2 3 4
def nombre_occurrences_col(tab, j, e): """ [[int]], int, int -> int Renvoie le nombre d'occurrences de e dans la colonne j """ pass🐍 Code Python 1 2 3
tab = [[3, 3, 3], [3, 2, 1], [0, 1, 2]] for j in range(len(tab[0])): print(nombre_occurrences_col(tab, j, 3), end = ' ')⚙️ Résultat2 1 1 -
Écrire de même une fonction
nombre_occurrences_lig.🐍 Code Python 1 2 3
def nombre_occurrences_lig(tab, i, e): """ [[int]], int, int -> int Renvoie le nombre d'occurrences de e dans la ligne i """
Gestion automatiques de notes
Cherchant à généraliser son système de gestion automatique de notes, un professeur de NSI décide de stocker toutes les notes des devoirs d'une classe dans un tableau 2D. Si un élève est absent à un devoir, on utilise la valeur spéciale -1.
| 🐍 Code Python | |
|---|---|
1 2 3 4 5 6 | |
Ainsi, ce professeur a réalisé 5 évaluations au cours de ce trimestre. Alfred a été présent à 3 des 5 évaluations, et a obtenu la note de $5/20$ lors de la première évaluation. Charline a été présente à toutes les évaluations et a obtenue sa meilleure note $18/20$ lors du dernier devoir. Le premier élément de chaque ligne est toujours le prénom de l'élève. On suppose que tous les prénoms de la classe sont différents.
Dans toutes les questions, les listes notes représentent l'ensemble des notes d'une classe. On suppose que les listes notes sont de taille au moins 1.
-
Écrire une fonction
nombre_elevesqui prend en argument une listenoteset qui renvoie le nombre d'élèves dont est composée la classe. Si la classe est la liste vide alors la fonction renverra-1.🐍 Code Python 1 2 3 4
def nombre_eleves(notes): """ [[str | int]] -> int Renvoie le nombre d'élèves de la classe """ pass🐍 Code Python 1print(nombre_eleves(trimestre1NSI))⚙️ Résultat4 -
Écrire une fonction
nombre_notesqui prend en argument une listenoteset qui renvoie le nombre d'évaluations passées par les élèves de cette classe.🐍 Code Python 1 2 3 4
def nombre_notes(notes): """ [[str | int ]] -> int Renvoie le nombre d'évaluations passées par les élèves """ pass🐍 Code Python 1print(nombre_notes(trimestre1NSI))⚙️ Résultat5 -
-
Écrire une fonction
nombre_absences_indicequi prend en argument une listenotes, un indice de ligneiet qui renvoie le nombre d'absences de l'élève d'indicei.🐍 Code Python 1 2 3 4
def nombre_absences_indice(notes, i): """ [[str | int]], int -> int Renvoie le nombre d'absences de l'élève d'indice i """ pass🐍 Code Python 1 2
for i in range(nombre_eleves(trimestre1NSI)): print(nombre_absences_indice(trimestre1NSI, i), end = ' ')⚙️ Résultat2 1 0 1 -
Écrire une fonction
nombre_absencesqui prend en argument une listenotes, une chaine de caractèreeleveet qui renvoie le nombre d'absences deeleve. Sieleven'est pas présent dansnotes, la fonction renverra-1.🐍 Code Python 1 2 3 4
def nombre_absences(notes, eleve): """ [[str | int]], str -> int Renvoie le nombre d'absences de eleve """ pass🐍 Code Python 1print(nombre_absences(trimestre1NSI, "Brice"))⚙️ Résultat1 -
Challenge. Lorsque les élèves ont manqué trop d'évaluations, leur moyenne est considérée comme non représentative et ceux-ci doivent passer une épreuve de rattrapage dont le résultat se substitue à la moyenne trimestrielle. Ce professeur décide qu'une moyenne est non représentative quand strictement plus de une évaluation sur 3 a été manquée.
Écrire une fonction
convocation_rattrapagequi prend en argument une listenoteset qui renvoie la liste des prénoms des élèves à convoquer au rattrapage. Il est possible d'écrire et d'utiliser d'autres fonctions intermédiaires si besoin.🐍 Code Python 1 2 3 4
def convocation_rattrapage(notes): """ [[ str | int ]] -> [str] Renvoie la liste des élèves à convoquer au rattrapage """ pass🐍 Code Python 1print(convocation_rattrapage(trimestre1NSI))⚙️ Résultat['Alfred']
-
-
-
Écrire une fonction
moyenne_devoirqui prend en argument une listenotes, un numéro de devoir (1, 2, $\ldots$), et qui renvoie la moyenne de la classe à ce devoir.Attention. Les élèves absents ne sont pas compabilisés dans le calcul de la moyenne du devoir. On utilisera la fonction
roundpour arrondir au centième de point.🐍 Code Python 1 2 3 4
def moyenne_devoir(notes, n): """ [[str | int]], int -> int Renvoie la moyenne du devoir numero n """ pass🐍 Code Python 1 2
for n in range(1, nombre_notes(trimestre1NSI) + 1): print(moyenne_devoir(trimestre1NSI, n), end = ' ')⚙️ Résultat12.5 13.67 9.5 12.25 16.0En effet, seuls Alfred et Charline étaient présent au troisième devoir. Ils ont obtenu $4/20$ et $15/20$, la moyenne de la classe à ce devoir est donc de $9,5/20$.
-
Écrire une fonction
pire_devoirqui prend en argument une listenoteset qui renvoie le numéro du devoir dont la moyenne est la plus faible. On renverra-1si aucun devoir n'est présent dans la listenotes.🐍 Code Python 1 2 3 4
def pire_devoir(notes): """ [[str | int]] -> int Renvoie le numéro du devoir dont la moyenne est la plus faible """ pass🐍 Code Python 1print(pire_devoir(trimestre1NSI))⚙️ Résultat3 -
Challenge. Lors du calcul de la moyenne trimestrielle, ce professeur utilise la méthode suivante :
- tous les devoirs ont le même coefficient ;
- afin de ne pas pénaliser les élèves, il ne compte pas le devoir le moins bien réussi par la classe dans le calcul de la moyenne trimestrielle ;
- la moyenne de chaque élève est calculée par rapport au nombre d'évaluations qu'il a réalisé, non par rapport au nombre d'évaluations totales ;
- si un élève a une moyenne non représentative, la note trimestrielle est de
-1.
Écrire une fonction
moyennesqui prend en argument une listenoteset qui renvoie la liste des moyennes des élèves, arrondie au centième de point.🐍 Code Python 1 2 3 4
def moyennes(notes): """ [[str | int]] -> int Renvoie la moyenne des élèves de la classe """ pass🐍 Code Python 1print(moyennes(trimestre1NSI))⚙️ Résultat[['Alfred', -1], ['Brice', 18.75], ['Charline', 16.0], ['David', 10.0]]
-