retour au chapitre

Quiz · Structures de données

auto-évaluation

0/14 questions réussie

Réponses conservées dans ce navigateur uniquement.

Objet, classe, interfacecours
contexte

Les questions portent sur la classe CompteBancaire du cours, dans sa version encapsulée :

class CompteBancaire:
    def __init__(self, solde_initial=0):
        self._solde = solde_initial

    def deposer(self, montant):
        if montant <= 0:
            raise ValueError("le montant doit être strictement positif")
        self._solde = self._solde + montant

    def retirer(self, montant):
        if montant <= 0:
            raise ValueError("le montant doit être strictement positif")
        if montant > self._solde:
            raise ValueError("solde insuffisant")
        self._solde = self._solde - montant

    def consulter(self):
        return self._solde

c = CompteBancaire(100)
  1. 1/3 · interface-implementation-c1voir dans le cours

    Dans c = CompteBancaire(100), à quel paramètre du __init__ la valeur 100 est-elle passée ?

  2. 2/3 · interface-implementation-c2voir dans le cours

    Dans c.deposer(50), à quoi correspond le paramètre self ?

  3. 3/3 · interface-implementation-c3voir dans le cours

    Que se passe-t-il à l'exécution de c.retirer(200) sur un compte au solde 50, dans la version encapsulée ?

Implémenter une structure : l'exemple de la file FIFOcours
  1. 1/2 · implementer-une-structure-c1voir dans le cours

    Dans une file FIFO, le prochain élément à sortir est…

  2. 2/2 · implementer-une-structure-c2voir dans le cours

    Pour défiler avec deux piles, on transvase l'entrée vers la sortie uniquement quand…

Listes, piles, files, dictionnairescours
  1. 1/2 · listes-piles-files-dict-c1voir dans le cours

    Une structure dans laquelle le dernier ajouté est le premier retiré est…

  2. 2/2 · listes-piles-files-dict-c2voir dans le cours

    Quelle structure offre la recherche par clé en O(1)\mathcal{O}(1) moyen ?

Un contrat, trois écritures : docstring, tests, assertionscours
  1. 1/7 · contrat-tests-assertions-c1voir dans le cours

    Pourquoi le test empile-t-il deux éléments avant d'appeler depiler() ?

  2. 2/7 · contrat-tests-assertions-c2voir dans le cours

    Quel assert éprouve la promesse « sommet() ne retire rien » ?

  3. 3/7 · contrat-tests-assertions-c3voir dans le cours

    Le jeu de tests, lancé sur une classe dont les méthodes n'ont pas de corps, échoue. Qu'en conclure ?

  4. 4/7 · contrat-tests-assertions-c4voir dans le cours

    PileC passe le jeu de tests. Qu'en conclure ?

  5. 5/7 · contrat-tests-assertions-c5voir dans le cours

    Quand assert not self.est_vide(), première ligne de depiler, lève une AssertionError, qui est mis en cause ?

  6. 6/7 · contrat-tests-assertions-c6voir dans le cours

    La ligne assert p.depiler() == "R", écrite après avoir empilé 7 puis "R", est…

  7. 7/7 · contrat-tests-assertions-c7voir dans le cours

    Remettre dans l'ordre les étapes d'écriture d'une structure à partir de son contrat :

    Glisser-déposer pour réordonner (ou utiliser les flèches).

    • 1. Écrire la docstring de chaque méthode
    • 2. Traduire chaque promesse en assert dans un jeu de tests
    • 3. Lancer le jeu de tests sur la classe vide et constater l'échec
    • 4. Écrire le corps des méthodes
    • 5. Relancer le jeu de tests jusqu'à ce qu'il passe