cave/cave.py

117 lines
3.9 KiB
Python
Raw Normal View History

2018-02-03 16:58:40 +00:00
2018-02-05 21:24:27 +00:00
import pickle
2018-02-03 18:22:49 +00:00
class Etageres(object):
2018-02-03 16:58:40 +00:00
def __init__(self):
2018-02-05 20:16:16 +00:00
self.etageres = []
self.nbetagere = 0
2018-02-05 21:24:27 +00:00
self.couleur = ["rouge","blanc","rose"]
2018-02-05 20:52:28 +00:00
@classmethod
def load_etageres(cls,file):
with open(file, 'rb') as data:
return pickle.load(data)
2018-02-05 20:16:16 +00:00
def add_etagere(self, largeur, hauteur):
self.nbetagere += 1
self.etageres.append(Etagere(largeur, hauteur, self))
2018-02-05 20:52:28 +00:00
2018-02-05 20:16:16 +00:00
def nbbouteille(self):
i = 0
for etagere in self.etageres:
2018-02-05 20:16:16 +00:00
for bouteille in etagere:
i += 1
2018-02-05 20:16:16 +00:00
return i
2018-02-05 20:16:16 +00:00
def nbbouteillecouleur(self, couleur):
i = 0
for etagere in self.etageres:
2018-02-05 20:16:16 +00:00
for bouteille in etagere:
if bouteille.couleur == couleur:
i += 1
return i
2018-02-05 20:16:16 +00:00
def remove_etagere(self, etagere):
self.etageres.remove(etagere)
self.nbetagere -= 1
return "etagere {} suprimer".format(etagere.num_etagere)
2018-02-05 21:24:27 +00:00
def save_etageres(self,file):
with open(file, 'wb') as output:
pickle.dump(self,output)
2018-02-05 20:16:16 +00:00
def __iter__(self):
return iter(self.etageres)
2018-02-03 16:58:40 +00:00
2018-02-03 18:22:49 +00:00
class Etagere(object):
2018-02-05 20:16:16 +00:00
def __init__(self, largeur, hauteur, etageres):
self.num_etagere = etageres.nbetagere
self.largeur = largeur
self.hauteur = hauteur
self.etageres = etageres
self.bouteilles = []
def add_bouteille(self, pos_largeur, pos_hauteur, couleur, appelation, millesime):
for bouteille in self.bouteilles:
2018-02-05 20:16:16 +00:00
if (pos_hauteur > self.hauteur or pos_largeur > self.largeur or pos_largeur < 1 or pos_largeur < 1):
return "bouteille positioné en dehors des emplacement"
2018-02-05 20:52:28 +00:00
if (pos_largeur == bouteille.pos_largeur and pos_hauteur == bouteille.pos_hauteur):
return "une bouteille existe déja a cette emplacement"
self.bouteilles.append(Bouteille(pos_largeur, pos_hauteur, couleur, appelation, millesime, self))
return "OK"
2018-02-03 18:22:49 +00:00
2018-02-05 20:16:16 +00:00
def remove_bouteille(self, pos_largeur, pos_hauteur):
i = 0
for bouteille in self.bouteilles:
2018-02-05 20:16:16 +00:00
if (pos_largeur == bouteille.pos_largeur and pos_hauteur == bouteille.pos_hauteur):
self.bouteilles.remove(bouteille)
return "bouteille suprimé"
else:
i += 1
return "aucune bouteille troucé a cette emplacement"
2018-02-03 18:22:49 +00:00
def __repr__(self):
2018-02-05 20:16:16 +00:00
return "etagére numéros {} de largeur {} et de hauteur {} et contient {} bouteille(s) ".format(self.num_etagere, self.largeur, self.hauteur, len(self.bouteilles))
def __iter__(self):
return iter(self.bouteilles)
2018-02-03 16:58:40 +00:00
2018-02-05 20:16:16 +00:00
2018-02-03 18:22:49 +00:00
class Bouteille(object):
2018-02-05 20:16:16 +00:00
def __init__(self, pos_largeur, pos_hauteur, couleur, appelation, millesime, etagere):
self.pos_largeur = pos_largeur
self.pos_hauteur = pos_hauteur
2018-02-05 21:24:27 +00:00
if (couleur not in etagere.etageres.couleur):
etagere.etageres.couleur.append(couleur)
2018-02-05 20:16:16 +00:00
self.couleur = couleur
2018-02-05 21:24:27 +00:00
2018-02-05 20:16:16 +00:00
self.millesime = millesime
self.appelation = appelation
self.etagere = etagere
2018-02-03 16:58:40 +00:00
2018-02-05 20:16:16 +00:00
def __repr__(self):
return "bouteille: pos_largeur {} , pos_hauteur {}, couleur {} , appelation {}, millesime {} \n".format(self.pos_largeur, self.pos_hauteur, self.couleur, self.appelation, self.millesime)
2018-02-05 18:37:13 +00:00
2018-02-05 20:16:16 +00:00
new = Etageres()
new.add_etagere(30, 3)
print(new.etageres[0].add_bouteille(28, 2, "rouge", "saint emilion", 2005))
2018-02-05 21:24:27 +00:00
print(new.etageres[0].add_bouteille(24, 1, "pisse", "gewurtz", 2010))
2018-02-05 20:16:16 +00:00
print(new.etageres[0].add_bouteille(23, 2, "rouge", "saint emilion", 2006))
print(new.etageres[0].bouteilles)
print("vos etagére contiennes {} bouteille".format(new.nbbouteille()))
print("vos etagére contiennes {} bouteille de rouge".format(
new.nbbouteillecouleur("rouge")))
2018-02-05 21:24:27 +00:00
new.save_etageres("test.pkl")
print(new.couleur)
print(new.remove_etagere(new.etageres[0]))
2018-02-05 20:52:28 +00:00
del new