Aller au contenu

Index des sujets 2022

Corrigé sujet 05 - Année : 2022

Sujet 05 - 2022

Exercice 1

Bug

La fonction à écrire s'appelle RechercheMinMax dans l'énoncé (avec le R majusucule) mais devient rechercheMinMax avec un r miniscule dans les appels.

1
2
3
4
5
6
7
8
def RechercheMinMax(tab):
    if tab==[]:
        return {'min':None,'max':None}
    mini,maxi = tab[0],tab[0]
    for elt in tab:
        if elt<mini: mini=elt
        if elt>maxi: maxi=elt
    return {'min' : mini, 'max' : maxi}

Commentaires

Encore une recherche classique de minimum et de maximum, le résultat est renvoyé sous la forme d'un dictionnaire.

Exercice 2

 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
36
37
38
39
class Carte:
    """Initialise Couleur (entre 1 a 4), et Valeur (entre 1 a 13)"""
    def __init__(self, c, v):
        assert 1<=c<=4, "La couleur est entre 1 et 4" 
        assert 1<=v<=13, "La valeur est entre 1 et 13" #(1)
        self.Couleur = c
        self.Valeur = v

    """Renvoie le nom de la Carte As, 2, ... 10, 
       Valet, Dame, Roi"""
    def getNom(self):
        if ( self.Valeur > 1 and self.Valeur < 11):
            return str( self.Valeur)
        elif self.Valeur == 11:
            return "Valet"
        elif self.Valeur == 12:
            return "Dame"
        elif self.Valeur == 13:
            return "Roi"
        else:
            return "As"

    """Renvoie la couleur de la Carte (parmi pique, coeur, carreau, trefle"""
    def getCouleur(self):
        return ['pique', 'coeur', 'carreau', 'trefle' ][self.Couleur - 1]

class PaquetDeCarte:
    def __init__(self):
        self.contenu = []

    """Remplit le paquet de cartes"""
    def remplir(self):
        self.contenu = [Carte(couleur,valeur) for couleur in range(1, 5) for valeur in range(1, 14)] #(2)

    """Renvoie la Carte qui se trouve à la position donnee"""
    def getCarteAt(self, pos):
        assert 0<=pos<52, "Le numéro de la carte doit être entre 0 et 51"
        if 0 <= pos < 52 :
            return self.contenu[pos]
  1. Ce sont les instructions assert permettant de vérifier que la couleur est entre 1 et 4 inclus et la valeur entre 1 et 13 inclus.
  2. On utilise une définition de liste par compréhension pour parcourir les couleurs et valeurs possibles.
  3. Un jeu de cartes contient 52 cartes, la position d'une carte est entre 0 et 51 inclus.

Attention

  • Le sujet demande d'ajouter des instructions assert dans la méthode getCarteAt mais cette méthode teste déjà que le numéro de la carte est entre les limites imposés. Le assert pourrait vérifier ici que pos est bien une variable de type int.
  • Les docstring devraient être placées juste après la ligne def de définition des méthodes et pas avant.
  • Il serait pertinent d'utiliser un dictionnaire afin d'associer valeur et nom de d'une carte : {1 : 'As', 2:'2', ...., 12: 'Dame',13 : 'Roi'}