Information

Author(s) Maxime Jacques de Dixmude Slavic
Deadline No deadline
Submission limit No limitation

Tags

Sign in

Les bourses bien remplies

Complétons notre classe Vecteur() afin de permettre un joli affichage et d’additionner les vecteurs à l’aide de l’opérateur « + ».

class Vecteur:
    def __init__(self,x,y,z):
        self.x = x
        self.y = y
        self.z = z

    def __str__(self):
        ligne = "("+str(self.x)+","+str(self.y)+","+str(self.z)+")"
        return ligne

    def __add__(self,other):
        W = Vecteur(self.x+other.x,self.y+other.y,self.z+other.z)
        return W
  • La méthode __str__() (le nom est réservé) renvoie ici un bel affichage du vecteur. Par exemple avec V = Vecteur(1,2,3) alors :
print(V.__str__())

affiche (1,2,3).

Mais ce n’est pas comme cela qu’on l’utilise car une fois que la méthode __str__() est définie alors la commande :

print(V)

affiche aussi (1,2,3). C’est très pratique !

  • La méthode __add__() a exactement la même définition que la méthode addition() définie précédemment. Avec V1 = Vecteur(1,2,3) et V2 = Vecteur(1,0,-4) on pourrait l’utiliser par :
V3 = V1.__add__(V2)

Mais comme on a utilisé le nom réservé __add__() alors cela a défini l’opérateur « + » et il est beaucoup plus agréable d’écrire simplement :

V3 = V1 + V2

Implémentation

On va te demander d'implémenter la Classe Bourse qui a 3 attributs : or, argent et bronze. Ainsi que 1 méthode : echange() qui permet d'échanger ses pièces pour en avoir le moins possible. Le taux de change est le suivant : 1 pièce d'or vaut 100 pièces d'argent qui elle-même vaut 100 pièces de bronze. Voici des exemples d'utilisation de la classe Bourse :

maBourse = Bourse(1,34,23)
print("Dans ma bourse j'ai "+maBourse) #Dans ma bourse j'ai 1 pièce(s) d'or, 34 pièce(s) d'argent et 23 pièce(s) de bronze.
bourseParTerre = Bourse(0,65,89)
mabourse = mabourse + bourseParTerre
print("En rammassant la bourse que j'ai trouvé par terre j'ai "+ maBourse)#En rammassant la bourse que j'ai trouvé par terre j'ai 1 pièce(s) d'or, 99 pièce(s) d'argent et 112 pièce(s) de bronze.
mabourse.echange()
print("Après avoir échangé mes pièces, j'ai "+ mabourse)#Après avoir échangé mes pièces, j'ai 2 pièce(s) d'or, 0 pièce(s) d'argent et 12 pièce(s) de bronze.

PS: Pour tes attributs, appel les "gold, silver et bronze", d'une part ça t'évite d'utiliser le terme or car python le reconnaitra comme un ou et ne voudra pas compiler. Et d'autre part, on pourra mieux tester ton code.