Listes Min max Moy Rch
Poo
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