Aller au contenu

Ep 32

▶ TĂ©lĂ©charger le sujet en pdf.

EXERCICE 1⚓

Écrire une fonction min_et_max qui prend en paramĂštre un tableau de nombres tab non vide, et qui renvoie la plus petite et la plus grande valeur du tableau sous la forme d’un dictionnaire Ă  deux clĂ©s min et max.

Les tableaux seront représentés sous forme de liste Python.

L’utilisation des fonctions natives min, max et sorted, ainsi que la mĂ©thode sort n’est pas autorisĂ©e.

Exemples :

🐍 Script Python
    >>> min_et_max([0, 1, 4, 2, -2, 9, 3, 1, 7, 1])
    {'min': -2, 'max': 9}
    >>> min_et_max([0, 1, 2, 3])
    {'min': 0, 'max': 3}
    >>> min_et_max([3])
    {'min': 3, 'max': 3}
    >>> min_et_max([1, 3, 2, 1, 3])
    {'min': 1, 'max': 3}
    >>> min_et_max([-1, -1, -1, -1, -1])
    {'min': -1, 'max': -1}
RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def minpy-undetpy-undmax(tab):bksl-nl d = {}bksl-nl d['min'] = tab[0]bksl-nl d['max'] = tab[0]bksl-nl for val in tab:bksl-nl if val < d['min']:bksl-nl d['min'] = valbksl-nl if val > d['max']:bksl-nl d['max'] = valbksl-nl return dbksl-nlbksl-nl



EXERCICE 2⚓

On dispose d’une classe Carte permettant de crĂ©er des objets modĂ©lisant des cartes Ă  jouer.

Compléter la classe Paquet_de_cartes suivante en respectant les spécifications données dans les chaßnes de documentation.

Ajouter une assertion dans la méthode get_carte afin de vérifier que le paramÚtre pos est correct.

Exemple :

🐍 Script Python
    >>> jeu = Paquet_de_cartes()
    >>> carte1 = jeu.get_carte(20)
    >>> print(carte1.get_valeur() + " de " + carte1.get_couleur())
    8 de coeur
    >>> carte2 = jeu.get_carte(0)
    >>> print(carte2.get_valeur() + " de " + carte2.get_couleur())
    As de pique
    >>> carte3 = jeu.get_carte(52)
    AssertionError : paramĂštre pas invalide

RĂ©ponse

Complétez le code ci-dessous

###
class Carte:bksl-nl def py-undpy-undinitpy-undpy-und(self, c, v):bksl-nl """ Initialise les attributs couleur (entre 1 et 4), et valeur (entre 1 et 13). """bksl-nl self.couleur = cbksl-nl self.valeur = vbksl-nlbksl-nl def getpy-undvaleur(self):bksl-nl """ Renvoie la valeur de la carte : As, 2, ..., 10, Valet, Dame, Roi """bksl-nl valeurs = ['As','2', '3', '4', '5', '6', '7', '8', '9', '10', 'Valet', 'Dame', 'Roi']bksl-nl return valeurs[self.valeur - 1]bksl-nlbksl-nl def getpy-undcouleur(self):bksl-nl """ Renvoie la couleur de la carte (parmi pique, coeur, carreau, trÚfle). """bksl-nl couleurs = ['pique', 'coeur', 'carreau', 'trÚfle']bksl-nl return couleurs[self.couleur - 1]bksl-nlbksl-nlclass Paquetpy-unddepy-undcartes:bksl-nl def py-undpy-undinitpy-undpy-und(self):bksl-nl """ Initialise l'attribut contenu avec une liste des 52 objets Carte possiblesbksl-nl rangés par valeurs croissantes en commençant par pique, puis coeur,bksl-nl carreau et tréfle. """bksl-nl # A compléterbksl-nlbksl-nl def getpy-undcarte(self, pos):bksl-nl """ Renvoie la carte qui se trouve à la position pos (entier compris entre 0 et 51). """bksl-nl # A compléterbksl-nlbksl-nl



Solution

###
class Carte:bksl-nl def py-undpy-undinitpy-undpy-und(self, c, v):bksl-nl """ Initialise les attributs couleur (entre 1 et 4), et valeur (entre 1 et 13). """bksl-nl self.couleur = cbksl-nl self.valeur = vbksl-nlbksl-nl def getpy-undvaleur(self):bksl-nl """ Renvoie la valeur de la carte : As, 2, ..., 10, Valet, Dame, Roi """bksl-nl valeurs = ['As','2', '3', '4', '5', '6', '7', '8', '9', '10', 'Valet', 'Dame', 'Roi']bksl-nl return valeurs[self.valeur - 1]bksl-nlbksl-nl def getpy-undcouleur(self):bksl-nl """ Renvoie la couleur de la carte (parmi pique, coeur, carreau, trÚfle). """bksl-nl couleurs = ['pique', 'coeur', 'carreau', 'trÚfle']bksl-nl return couleurs[self.couleur - 1]bksl-nlbksl-nlclass Paquetpy-unddepy-undcartes:bksl-nl def py-undpy-undinitpy-undpy-und(self):bksl-nl """ Initialise l'attribut contenu avec une liste des 52 objets Carte possiblesbksl-nl rangés par valeurs croissantes en commençant par pique, puis coeur,bksl-nl carreau et tréfle. """bksl-nl self.contenu = [Carte(c, v) for c in range(1, 5) for v in range(1, 14)] bksl-nlbksl-nl def getpy-undcarte(self, pos):bksl-nl """ Renvoie la carte qui se trouve à la position pos (entier compris entre 0 et 51). """bksl-nl assert 0 <= pos <= 51, 'paramÚtre pos invalide'bksl-nl return self.contenu[pos]bksl-nlbksl-nl