Nature">
Ap2examen 17 18-2
Ap2examen 17 18-2
Ap2examen 17 18-2
Exercice : (4 pts)
Soit le script Python ci-dessous. Donner le résultat exact de son exécution :
class Atome:
"""atomes simplifiés, choisis parmi les 10 premiers éléments """
__table =[None, ('hydrogène',0), ('hélium',2), ('lithium',4),
('béryllium',5), ('bore',6), ('carbone',6), ('azote',7),
('oxygène',8), ('fluor',10), ('néon',10)]
def __init__(self, nat):
"le n° atomique détermine le n. de protons, d'électrons et de
neutrons"
self.__np, self.__ne = nat, nat # nat = numéro atomique
self.__nn = Atome.__table[nat][1] # nb. de neutrons trouvés dans
# table
def __modif(self,v):
print("L'accesseur à n.de protons s'intervient")
self.__np=v
self.__ne=v
self.__nn=Atome.__table[v][1]
def __accesseur_ne(self):
print("L'accesseur à n. d'électrons s'intervient")
return self.__ne
def __mutateur_ne(self,v):
print("Le mutateur de n. d'électrons s'intervient")
self.__ne=v
ne=property(__accesseur_ne,__mutateur_ne)
np=property(fset=__modif)
def __str__(self):
return "Nom de l'élément :{}\n{} protons, {} électrons, {}\
neutrons".format(Atome.__table[self.__np][0],self.__np,self.__ne,self.__nn)
class Ion(Atome):
"""les ions sont des atomes qui ont gagné ou perdu des électrons"""
def __init__(self, nat, charge):
"le n° atomique et la charge électrique déterminent l'ion"
Atome.__init__(self, nat)
self.ne -=charge
self.charge = charge
def __str__(self):
return Atome.__str__(self)+" Particule électrisée.\
Charge ={}".format(self.charge)
def __del__(self):
print("Le destructeur de la classe Ion s'intervient")
a1 = Ion(3,1)
a2 = Atome(5)
print(a2)
a2.np=9
print(a2)
print(a1)
a1=100
print(a1)
1
Problème : (16 pts)
Dans ce problème on va informatiser en utilisant la programmation orientée objet
Python le jeu de domino.
Le principe de jeux est le suivant :
Un jeu de dominos classique est composé de 28 pièces dont chaque côté comporte un
certain nombre de petits points allant de 0 à 6.
Toutes les combinaisons de ces différents chiffres existent donc : 0-0, 0-1, 0-2, 0-3, 0-4,
0-5, 0-6, 1-1, 1-2, 1-3, etc.
Lorsqu’une pièce contient deux fois le même chiffre (0-0, 1-1, 2-2, 3-3, 4-4, 5-5, 6-6), cela
s’appelle un “double”.
Description de la partie :
Pour simplifier on va jouer avec 4 joueurs. Chaque joueur prendra 7 dominos en main.
Le joueur qui commence à jouer le premier c’est celui qui possède le domino 6-6 puisque c’est
la plus grande valeur de tous les dominos. Il l’a posera sur la table.
Le joueur suivant doit à son tour poser un domino ayant le même nombre de points sur au
moins un côté du domino précédemment posé.
Pour gagner un tour de domino, il suffit d’être le premier joueur à avoir posé tous ses
dominos. Il se peut que le jeu soit bloqué où aucun joueur a un domino à placer. Alors le joueur
ayant le moins de points est déclaré vainqueur.
Le comptage des points pour le vainqueur d’un tour se fait en comptant la somme des points
des dominos qui restent dans les mains des autres joueurs. Cette somme est ajoutée à son
score.
Travail demandé :
1.1) le constructeur admet deux paramètres Val1 et Val2 qui permettent de définir les
deux attributs privés coté1 et côté2. Ils seront initialisés respectivement par les deux
paramètres Val1 et Val2.
1.2) la méthode somme_points qui permet de retourner la somme des points d’une
pièce.
1.3) la méthode a_valeur qui accepte en paramètre une valeur Val et qui permet de
vérifier si l’un de deux côtés de la pièce possède cette valeur.
1.4) la méthode magique __repr__ qui permet de représenter une pièce de domino (voir
l’exemple).
1.5) les deux propriétés : côté1 et côté2 qui permettent de consulter les deux attributs
privés respectivement côté1 et côté2.
2
Exemple :
>>>P=Pièce (6,2)
>>>P (6,2)
>>>P.a_valeur(6) True
>>>P.a_valeur(5) False
3
pièces contenants au moins la valeur Val1 ou Val2. Ne rien faire si la liste des indices
est vide.
L’attribut L=[(1,1),(1,6),(6,6),(6,3)]
L’attribut droite=3
L’attribut gauche=1