Sujet 5 - NSI 2022
Sujet NSI 2022 - Sujet 5
Exercice 1
- Sujet
- Correction
Écrire une fonction rechercheMinMax qui prend en paramètre un tableau de nombres
non triés tab, 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.
Exemples :
>>> tableau = [0, 1, 4, 2, -2, 9, 3, 1, 7, 1]
>>> resultat = rechercheMinMax(tableau)
>>> resultat
{'min': -2, 'max': 9}
>>> tableau = []
>>> resultat = rechercheMinMax(tableau)
>>> resultat
{'min': None, 'max': None}
def rechercheMinMax(tab):
if tab == []:
return {'min': None, 'max': None}
d = {}
d['min'] = tab[0]
d['max'] = tab[0]
for val in tab:
if val < d['min']:
d['min'] = val
if val > d['max']:
d['max'] = val
return d
Exercice 2
- Sujet
- Correction
On dispose d’un programme permettant de créer un objet de type PaquetDeCarte,
selon les éléments indiqués dans le code ci-dessous.
Compléter ce code aux endroits indiqués par #A compléter, puis ajouter des
assertions dans l’initialiseur de Carte, ainsi que dans la méthode getCarteAt().
class Carte:
"""Initialise Couleur (entre 1 a 4), et Valeur (entre 1 a 13)"""
def __init__(self, c, v):
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):
??? = [ ??? for couleur in range(1, ???) for valeur in range( 1, ???)]
"""Renvoie la Carte qui se trouve a la position donnee"""
def getCarteAt(self, pos):
if 0 <= pos < ??? :
return ???
Exemple :
>>> unPaquet = PaquetDeCarte()
>>> unPaquet.remplir()
>>> uneCarte = unPaquet.getCarteAt(20)
>>> print(uneCarte.getNom() + " de " + uneCarte.getCouleur())
8 de coeur
Attention, le code proposé ne respecte pas les standards de notation :
- il ne faut pas de majuscules sur les noms des attributs
- la docstring se place à l'intérieur de la fonction et non au dessus.
class Carte:
"""Initialise Couleur (entre 1 à 4), et Valeur (entre 1 à 13)"""
def __init__(self, c, v):
assert c in range(1,5)
assert v in range(1,14)
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]
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)]
"""Renvoie la Carte qui se trouve à la position donnée"""
def getCarteAt(self, pos):
if 0 <= pos < len(self.contenu) :
return self.contenu[pos]