classCarte:"""Initialise Couleur (entre 1 a 4), et Valeur (entre 1 a 13)"""def__init__(self,c,v):assert1<=c<=4,"La couleur est entre 1 et 4"assert1<=v<=13,"La valeur est entre 1 et 13"#(1)self.Couleur=cself.Valeur=v"""Renvoie le nom de la Carte As, 2, ... 10, Valet, Dame, Roi"""defgetNom(self):if(self.Valeur>1andself.Valeur<11):returnstr(self.Valeur)elifself.Valeur==11:return"Valet"elifself.Valeur==12:return"Dame"elifself.Valeur==13:return"Roi"else:return"As""""Renvoie la couleur de la Carte (parmi pique, coeur, carreau, trefle"""defgetCouleur(self):return['pique','coeur','carreau','trefle'][self.Couleur-1]classPaquetDeCarte:def__init__(self):self.contenu=[]"""Remplit le paquet de cartes"""defremplir(self):self.contenu=[Carte(couleur,valeur)forcouleurinrange(1,5)forvaleurinrange(1,14)]#(2)"""Renvoie la Carte qui se trouve à la position donnee"""defgetCarteAt(self,pos):assert0<=pos<52,"Le numéro de la carte doit être entre 0 et 51"if0<=pos<52:returnself.contenu[pos]
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.
On utilise une définition de liste par compréhension pour parcourir les couleurs et valeurs possibles.
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'}
Commentaires
Encore une recherche classique de minimum et de maximum, le résultat est renvoyé sous la forme d'un dictionnaire.