Aller au contenu

Ep 14

le document

l'algorithme

Issue de : 23-NSI-32⚓

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-nltry:bksl-nl assert minpy-undetpy-undmax([0, 1, 4, 2, -2, 9, 3, 1, 7, 1]) == {'min': -2, 'max': 9}bksl-nl assert minpy-undetpy-undmax([0, 1, 2, 3]) == {'min': 0, 'max': 3}bksl-nl assert minpy-undetpy-undmax([3]) == {'min': 3, 'max': 3}bksl-nl assert minpy-undetpy-undmax([1, 3, 2, 1, 3]) == {'min': 1, 'max': 3}bksl-nl assert minpy-undetpy-undmax([-1, -1, -1, -1, -1]) == {'min': -1, 'max': -1}bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nlbksl-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 recuperer_carte afin de vérifier que le paramÚtre pos est correct.

On rappelle que l’instruction

🐍 Script Python
assert condition, message 
permet de vĂ©rifier que la condition est vraie. Si ce n’est pas le cas, le programme s’arrĂȘte et affiche le message d’erreur fourni.

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Carte:
    def __init__(self, c, v):
        """Initialise les attributs couleur (entre 1 et 4), 
        et valeur (entre 1 et 13). """
        self.couleur = c
        self.valeur = v

    def recuperer_valeur(self):
        """ Renvoie la valeur de la carte : 
        As, 2, ..., 10, Valet, Dame, Roi """
        valeurs = ['As','2', '3', '4', '5', '6', '7', '8', 
                   '9', '10', 'Valet', 'Dame', 'Roi']
        return valeurs[self.valeur - 1]

    def recuperer_couleur(self):
        """ Renvoie la couleur de la carte 
        (parmi pique, coeur, carreau, trĂšfle). """
        couleurs = ['pique', 'coeur', 'carreau', 'trĂšfle']
        return couleurs[self.couleur - 1]

class Paquet_de_cartes:
    def __init__(self):
        """ Initialise l'attribut contenu avec une liste des 52
        objets Carte possibles rangés par valeurs croissantes en
        commençant par pique, puis cƓur, carreau et trùfle. """
        ...
        ...
            ...
                ...

    def recuperer_carte(self, pos):
        """ Renvoie la carte qui se trouve Ă  la position pos 
        (entier compris entre 0 et 51). """
        ...
        ...

Exemple :

🐍 Script Python
>>> jeu = Paquet_de_cartes()
>>> carte1 = jeu.recuperer_carte(20)
>>> carte1.recuperer_valeur() \
    + " de " + carte1.recuperer_couleur()
    "8 de coeur"
>>> carte2 = jeu.recuperer_carte(0)
>>> carte2.recuperer_valeur() \
    + " de " + carte2.recuperer_couleur()
    "As de pique"
>>> carte3 = jeu.recuperer_carte(52)
AssertionError : paramĂštre pos 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 recupererpy-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 recupererpy-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-nl self.contenu = []bksl-nl for couleur in range(1, 5):bksl-nl for valeur in range(1, 14):bksl-nl self.contenu.append(Carte(couleur, valeur))bksl-nlbksl-nl def recupererpy-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-nltry:bksl-nl jeu = Paquetpy-unddepy-undcartes()bksl-nl carte1 = jeu.recupererpy-undcarte(20)bksl-nl assert carte1.recupererpy-undvaleur() + " de " + carte1.recupererpy-undcouleur() == "8 de coeur"bksl-nlbksl-nl carte2 = jeu.recupererpy-undcarte(0)bksl-nl assert carte2.recupererpy-undvaleur() + " de " + carte2.recupererpy-undcouleur() == "As de pique"bksl-nlbksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nlbksl-nlcarte3 = jeu.recupererpy-undcarte(52)bksl-nl