Quiz: P-uplets nommés et dictionnaires — 23 questions

Detailed questions and answers

1. Comment reconnaître un p-uplet nommé par rapport à un p-uplet classique ?

Les composantes sont accessibles via un descripteur au lieu d’un indice
Les composantes sont obligatoirement accessibles uniquement par des indices
Le p-uplet nommé est toujours modifiable après création
Le p-uplet nommé n’utilise jamais de descripteurs pour accéder aux valeurs

Les composantes sont accessibles via un descripteur au lieu d’un indice

Explanation

Un p-uplet nommé se caractérise par un accès par descripteur (champ) plutôt que par index, à la différence d’un p-uplet classique.

2. Si un dictionnaire contient les paires {"nom": "X", "prenom": "Monsieur", "age": 47}, quelle instruction permet d’obtenir la valeur du champ age ?

monsieurX.age
monsieurX["age"]
monsieurX[2]
monsieurX["age" + 1]

monsieurX["age"]

Explanation

Le champ age correspond à la clé "age", donc l’accès monsieurX["age"] renvoie 47. Les autres options utilisent un mauvais type d’accès (index, attribut ou clé erronée).

3. Pour traiter un CSV où chaque ligne est séparée par des points-virgules, quelle séquence d’opérations correspond au bon découpage des champs ?

strip() puis split(";") mais sans séparer les champs en liste
strip() pour enlever les espaces de fin, puis split(";") pour séparer les champs
split(";") puis strip() sur l’ensemble de la ligne sans découpage
split(",") puis strip() pour traiter les espaces de début

strip() pour enlever les espaces de fin, puis split(";") pour séparer les champs

Explanation

Il faut d’abord supprimer les espaces de fin avec strip(), puis découper les champs avec split(";") pour obtenir la liste des valeurs.

4. Si la première ligne d’un fichier CSV contient les noms des colonnes, que faut-il faire pour construire les dictionnaires des lignes suivantes ?

Ne pas lire la première ligne et démarrer directement à la deuxième ligne sans clés
La lire comme en-tête, la découper avec split(";"), puis utiliser chaque nom comme clé
Découper la première ligne mais ignorer les noms puis utiliser uniquement des indices numériques
La traiter comme une ligne d’élève et en faire un dictionnaire avec les mêmes clés

La lire comme en-tête, la découper avec split(";"), puis utiliser chaque nom comme clé

Explanation

Quand la première ligne est l’en-tête, on récupère les noms de colonnes pour servir de clés lors de la construction des dictionnaires des lignes suivantes. Traiter l’en-tête comme une donnée produit un dictionnaire incorrect.

5. Quelle est la formule correcte de la moyenne pour chaque élève si DS1 et DS2 comptent pour 1 et le projet compte pour 2 ?

(DS1 + DS2 + 2 * projet) / 3
(DS1 + DS2 + 2 * projet) / 4
(DS1 + DS2 + projet) / 3
(2 * DS1 + 2 * DS2 + projet) / 5

(DS1 + DS2 + 2 * projet) / 4

Explanation

La moyenne donnée utilise bien un coefficient 2 pour le projet et se divise par 4. Les autres formules donnent un coefficient ou un dénominateur qui ne correspond pas à la règle attendue.

6. Que fait la fonction notes_et_moyennes à chaque dictionnaire représentant un élève ?

Elle ajoute un champ nommé moyenne
Elle renvoie uniquement la moyenne totale du groupe
Elle supprime les clés DS1, DS2 et projet
Elle convertit DS1, DS2 et projet en entiers

Elle ajoute un champ nommé moyenne

Explanation

La fonction notes_et_moyennes complète chaque dictionnaire avec un champ moyenne. Les autres choix décrivent des actions différentes (conversion, suppression de clés, agrégation globale).

7. Un dictionnaire associe-t-il nécessairement une valeur à chaque élément possible de l’ensemble des clés C ?

Oui, il contient une valeur pour chaque élément de C
Non, il associe toujours une valeur à chaque élément de V plutôt qu’à une clé
Non, il n’associe une valeur qu’aux clés présentes dans le dictionnaire
Oui, mais seulement après avoir ajouté toutes les associations possibles

Non, il n’associe une valeur qu’aux clés présentes dans le dictionnaire

Explanation

Un dictionnaire ne garantit une association que pour les clés qui y sont réellement présentes. Il ne prévoit pas forcément une valeur pour chaque élément possible de C.

8. Quelle opération fondamentale permet de modifier l’association d’une clé à une valeur dans un dictionnaire ?

Lire les clés renvoyées par la structure
Supprimer une entrée sans remplacer sa valeur
Créer un dictionnaire vide
Ajout ou modification d’une association

Ajout ou modification d’une association

Explanation

Les opérations fondamentales incluent l’ajout ou la modification d’une association clé→valeur. Supprimer ne remplace pas la valeur, et la création seule ne modifie rien.

9. Que se passe-t-il lorsqu’on lit une clé à laquelle aucune valeur n’est associée dans un dictionnaire ?

La valeur retournée est None
Une valeur par défaut est automatiquement renvoyée
La clé est supprimée automatiquement
Une erreur est déclenchée

Une erreur est déclenchée

Explanation

La lecture d’une clé sans valeur associée déclenche une erreur. Les autres options décrivent des comportements qui ne correspondent pas à la règle donnée.

10. En Python, comment associe-t-on une valeur v à une clé c dans un dictionnaire nommé d ?

d[c] = v
d.keys()[c] = v
d.add(c, v)
v = d[c]

d[c] = v

Explanation

En Python, on associe une valeur à une clé via l’affectation d[c] = v. Les autres écritures ne correspondent pas aux opérations indiquées pour les dictionnaires.

11. Que fait del d[c] si on veut supprimer l’entrée associée à la clé c ?

Elle supprime l’entrée mais déclenche une erreur si c n’est pas présente
Elle supprime toujours la valeur et renvoie la nouvelle taille du dictionnaire
Elle efface toutes les associations dont les clés commencent par c
Elle renvoie la valeur supprimée

Elle supprime l’entrée mais déclenche une erreur si c n’est pas présente

Explanation

La règle donnée distingue la suppression et le cas d’absence de clé : on ne doit pas supposer que del d[c] fonctionne sans c présent. d.pop(c) est celui qui supprime en renvoyant la valeur supprimée.

12. Par rapport à la complexité, quelle affirmation est correcte pour un dictionnaire Python ?

d.keys() est toujours en O(1) et c in d est en O(n)
c in d est en O(n) alors que del d[c] est en O(1)
Les opérations de base sont en gros en O(1), tandis que c in d.keys() peut être en O(n)
Les opérations de base sont en gros en O(n), et c in d.keys() en O(1)

Les opérations de base sont en gros en O(1), tandis que c in d.keys() peut être en O(n)

Explanation

Les opérations de base d’un dictionnaire Python sont en gros en O(1), tandis que c in d.keys() peut atteindre O(n). Les autres réponses inversent ou généralisent à tort les complexités.

13. Pour dépouiller une urne en un seul parcours, quel rôle joue le dictionnaire ?

Il associe chaque nom de candidat à son nombre de voix
Il remplace la nécessité de connaître les noms en créant un tableau indexé aléatoirement
Il trie systématiquement les candidats avant de compter
Il calcule la moyenne des voix par candidat à chaque tour

Il associe chaque nom de candidat à son nombre de voix

Explanation

Un dictionnaire associe chaque nom de candidat à son nombre de voix pour compter lors d’un seul parcours. On n’a pas besoin d’une liste préalable ou d’un tri préalable selon la procédure décrite.

14. Que fait la procédure incr_dico sur une clé c lors du comptage ?

Elle renvoie le nombre de voix actuel sans modifier le dictionnaire
Elle incrémente la valeur si c est présente et initialise à 1 si c est absente
Elle ajoute toujours une nouvelle clé avec la valeur 1, même si c existe déjà
Elle supprime la clé si sa valeur dépasse un seuil

Elle incrémente la valeur si c est présente et initialise à 1 si c est absente

Explanation

Incr_dico incrémente la valeur d’une clé déjà présente et met à 1 la valeur si la clé est absente. Les autres options décrivent des comportements non prévus pour cette procédure.

15. La fonction dépouillement gère-t-elle le cas de deux vainqueurs ex æquo ?

Oui, elle renvoie les deux noms ex æquo
Non, elle ne traite pas le cas de deux vainqueurs ex æquo
Non, elle attribue toujours une victoire à tous les candidats ayant le maximum
Oui, elle choisit automatiquement le premier parmi les deux sans le dire

Non, elle ne traite pas le cas de deux vainqueurs ex æquo

Explanation

La règle indique que la fonction dépouillement ne traite pas le cas de deux vainqueurs ex æquo. Les propositions qui supposent un renvoi de deux noms ou une distribution à tous contredisent cette règle.

16. Quelle propriété caractérise une fonction de hachage utilisée dans ce type de structure ?

Elle associe un nombre entier à tout objet persistant et son temps d’exécution est supposé en O(1).
Elle trie automatiquement les clés par ordre croissant lors de l’insertion.
Elle garantit que deux objets différents ont toujours des hachages distincts.
Elle ne peut être appliquée qu’aux clés non mutables, comme des nombres entiers.

Elle associe un nombre entier à tout objet persistant et son temps d’exécution est supposé en O(1).

Explanation

Une fonction de hachage associe un entier à un objet, avec un coût supposé constant (O(1)). Les collisions contredisent l’idée qu’il n’y aurait jamais de hachages identiques.

17. Dans une table de hachage, comment est déterminée la case où se stocke un couple clé-valeur ?

Par la valeur hash(c) % d, où d est la longueur du tableau principal.
Par la valeur de la clé elle-même modulo la taille de chaque sous-liste.
Par la position de la clé dans la liste d’insertion.
Par un tri préalable des clés puis un placement séquentiel dans le tableau.

Par la valeur hash(c) % d, où d est la longueur du tableau principal.

Explanation

Chaque couple est rangé dans une case déterminée par hash(c) % d. Les autres choix confondent stockage avec tri ou avec un calcul non décrit.

18. Quel est le principe de base pour rechercher une clé dans une table de hachage ?

Comparer la clé avec toutes les clés déjà stockées, sans calcul de hachage.
Calculer le hachage de la clé pour déterminer la case où se trouve sa valeur.
Parcourir toutes les cases du tableau principal jusqu’à trouver la clé.
Calculer directement la position de la clé comme son index dans la table.

Calculer le hachage de la clé pour déterminer la case où se trouve sa valeur.

Explanation

On calcule le hachage pour retrouver la case où la valeur est stockée. Parcourir tout le tableau revient à ignorer le rôle du hachage.

19. Que se passe-t-il lorsque deux clés produisent la même case dans l’exemple d’une table de longueur 3 ?

La recherche de la seconde clé devient impossible pour toujours.
Elles sont stockées ensemble dans une liste de couples via une collision.
La seconde clé remplace automatiquement la première sans perte.
La table double immédiatement et redistribue toutes les clés sans collision.

Elles sont stockées ensemble dans une liste de couples via une collision.

Explanation

Deux clés peuvent aboutir à la même case et être regroupées dans une liste : c’est une collision. Le remplacement automatique n’est pas le comportement indiqué.

20. Comment le tri par dénombrement construit-il son résultat à partir d’un tableau d’entiers ?

En utilisant un pivot pour diviser le tableau en sous-parties triées.
En triant par comparaison (comme un tri fusion) sans comptage préalable des occurrences.
En échangeant progressivement des éléments pour les trier directement sur place.
En comptant les occurrences de chaque valeur puis en reconstruisant un nouveau tableau dans l’ordre croissant.

En comptant les occurrences de chaque valeur puis en reconstruisant un nouveau tableau dans l’ordre croissant.

Explanation

Le tri par dénombrement compte les occurrences puis reconstruit un tableau trié. Les autres options décrivent des stratégies de tri par échanges ou par comparaison.

21. Que fait exactement la fonction de comptage pendant le tri par dénombrement ?

Elle crée un dictionnaire valeur→nombre d’occurrences et détermine simultanément le minimum et le maximum.
Elle trie les valeurs dès la phase de comptage en les réarrangeant dans le tableau d’origine.
Elle crée une liste de toutes les valeurs possibles avec leur ordre, sans compter les occurrences.
Elle remplace chaque valeur du tableau par son nombre d’occurrences, puis renvoie le tableau.

Elle crée un dictionnaire valeur→nombre d’occurrences et détermine simultanément le minimum et le maximum.

Explanation

La fonction de comptage associe chaque valeur à son nombre d’occurrences et trouve aussi mini et maxi. Elle ne réarrange pas directement le tableau en triant par permutation.

22. Pendant la reconstruction, que se passe-t-il pour une valeur i qui se situe entre mini et maxi ?

Les valeurs absentes sont ignorées sans aucune consultation du dictionnaire.
La valeur i est ajoutée seulement si elle apparaît strictement plus que deux fois.
La valeur i est ajoutée dans le tableau résultat autant de fois que l’indique le dictionnaire.
La valeur i est ajoutée une seule fois, même si son occurrence est multiple.

La valeur i est ajoutée dans le tableau résultat autant de fois que l’indique le dictionnaire.

Explanation

La reconstruction parcourt [mini, maxi] et ajoute i autant de fois que son occurrence dans le dictionnaire. Les valeurs absentes correspondent à un comptage nul (ce qui revient à ne pas les ajouter).

23. Quelle complexité est annoncée pour le tri par dénombrement sur un tableau de n éléments, de minimum m et de maximum M ?

O(n log n)
O(n + M − m)
O(M·n)
O(M + n log n)

O(n + M − m)

Explanation

La complexité du tri par dénombrement est O(n + M − m). Les autres expressions ne correspondent pas à la formule donnée.

Review with flashcards

Memorize the answers with 45 flashcards on P-uplets nommés et dictionnaires.

Qu'est-ce qu'un p-uplet nommé en Python ?

Un p-uplet nommé a des composantes accessibles par un descripteur.

Quel avantage apporte l'utilisation de p-uplets nommés ?

Ils améliorent la lisibilité du code et réduisent les erreurs.

Python possède-t-il nativement un type p-uplet nommé ?

Non, Python ne possède pas nativement ce type.

See flashcards →

Study the revision sheet

Read the complete revision sheet on P-uplets nommés et dictionnaires.

See revision sheet →

Similar courses

Create your own quizzes

Import your course and AI generates quizzes with corrections in 30 seconds.

Quiz generator