mirror of
https://github.com/DavidGailleton/42-Piscine_Python.git
synced 2026-03-14 05:06:55 +01:00
some fixes + 02/ex5 WIP
This commit is contained in:
@@ -1,16 +1,16 @@
|
|||||||
class Plants:
|
class Plants:
|
||||||
name: str
|
name: str
|
||||||
height: int
|
height: int
|
||||||
age: int
|
days: int
|
||||||
|
|
||||||
def __init__(self, name, height, age):
|
def __init__(self, name, height, days):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.height = height
|
self.height = height
|
||||||
self.age = age
|
self.days = days
|
||||||
|
|
||||||
def print_plant(self):
|
def print_plant(self):
|
||||||
print(self.name.capitalize() + ":", self.height, end="")
|
print(self.name.capitalize() + ":", self.height, end="")
|
||||||
print("cm,", self.age, "days old")
|
print("cm,", self.days, "days old")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -1,30 +1,30 @@
|
|||||||
class Plants:
|
class Plants:
|
||||||
name: str
|
name: str
|
||||||
height: int
|
height: int
|
||||||
p_age: int
|
days: int
|
||||||
|
|
||||||
def __init__(self, name, height, age):
|
def __init__(self, name, height, days):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.height = height
|
self.height = height
|
||||||
self.p_age = age
|
self.days = days
|
||||||
|
|
||||||
def get_info(self):
|
def get_info(self):
|
||||||
print(self.name.capitalize() + ":", self.height, end="")
|
print(self.name.capitalize() + ":", self.height, end="")
|
||||||
print("cm,", self.p_age, "days old")
|
print("cm,", self.days, "days old")
|
||||||
|
|
||||||
def grow(self):
|
def grow(self):
|
||||||
self.height = self.height + 1
|
self.height = self.height + 1
|
||||||
|
|
||||||
def age(self):
|
def age(self):
|
||||||
self.p_age = self.p_age + 1
|
self.days = self.days + 1
|
||||||
self.grow()
|
self.grow()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
x = Plants("rose", 25, 1)
|
x = Plants("rose", 25, 1)
|
||||||
|
start = x.days;
|
||||||
x.get_info()
|
x.get_info()
|
||||||
i = 1
|
for n in range(1, 8):
|
||||||
while i < 8:
|
|
||||||
x.age()
|
x.age()
|
||||||
i = i + 1
|
|
||||||
x.get_info()
|
x.get_info()
|
||||||
|
print("Growth this week: +", x.days - start, "cm");
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ def garden_operations(case: str) -> None:
|
|||||||
dic["a"]
|
dic["a"]
|
||||||
|
|
||||||
|
|
||||||
def test_error_types():
|
def test_error_types() -> None:
|
||||||
try:
|
try:
|
||||||
garden_operations("ValueError")
|
garden_operations("ValueError")
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|||||||
98
02/ex5/ft_garden_management.py
Normal file
98
02/ex5/ft_garden_management.py
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
from logging import raiseExceptions
|
||||||
|
|
||||||
|
|
||||||
|
class Plant:
|
||||||
|
__name: str
|
||||||
|
__water: int
|
||||||
|
__sun: int
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_name(cls, name: str) -> None:
|
||||||
|
if not name or not name[0]:
|
||||||
|
raise ValueError("Name cannot be empty")
|
||||||
|
cls.__name = name
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_water(cls, water: int) -> None:
|
||||||
|
if water < 0:
|
||||||
|
raise ValueError("Water level cannot be negative")
|
||||||
|
cls.__water = water
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_sun(cls, sun: int) -> None:
|
||||||
|
if sun < 0:
|
||||||
|
raise ValueError("Sun level cannot be negative")
|
||||||
|
cls.__sun = sun
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_name(cls) -> str:
|
||||||
|
return cls.__name
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_water(cls) -> int:
|
||||||
|
return cls.__water
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_sun(cls) -> int:
|
||||||
|
return cls.__sun
|
||||||
|
|
||||||
|
def __init__(self, name: str, water: int, sun: int) -> None:
|
||||||
|
self.set_name(name)
|
||||||
|
self.set_water(water)
|
||||||
|
self.set_sun(sun)
|
||||||
|
|
||||||
|
|
||||||
|
class GardenManager:
|
||||||
|
__plants: list[Plant]
|
||||||
|
__water_tank_level: int
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_water_tank_level(cls) -> int:
|
||||||
|
return cls.__water_tank_level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_water_tank_level(cls, level: int) -> None:
|
||||||
|
cls.__water_tank_level = level
|
||||||
|
|
||||||
|
def add_plant(self, name: str, water: int, sun: int) -> None:
|
||||||
|
try:
|
||||||
|
new_plant = Plant(name, water, sun)
|
||||||
|
i = 0
|
||||||
|
for n in self.__plants:
|
||||||
|
i = i + 1
|
||||||
|
new_lst: list[Plant | None] = [None] * (i + 1)
|
||||||
|
i = 0
|
||||||
|
for n in self.__plants:
|
||||||
|
new_lst[i] = n
|
||||||
|
i = i + 1
|
||||||
|
new_lst[i] = new_plant
|
||||||
|
print("Added", name, "successfully")
|
||||||
|
except ValueError as err:
|
||||||
|
print(err)
|
||||||
|
|
||||||
|
def water_plants(self) -> None:
|
||||||
|
print("Watering plants...")
|
||||||
|
try:
|
||||||
|
print("Opening watering system")
|
||||||
|
for n in self.__plants:
|
||||||
|
if self.__water_tank_level <= 0:
|
||||||
|
raise Exception("Caught GardenError: Not enough water in tank")
|
||||||
|
n.set_water(n.get_water() + 1)
|
||||||
|
self.__water_tank_level = self.__water_tank_level - 1;
|
||||||
|
print("Watering", n.get_name(), "- success")
|
||||||
|
except Exception as err:
|
||||||
|
print(err);
|
||||||
|
finally:
|
||||||
|
print("Closing watering system (cleanup)")
|
||||||
|
|
||||||
|
def __init__(self) -> None:
|
||||||
|
self.__plants = []
|
||||||
|
self.__water_tank_level = 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
manager = GardenManager()
|
||||||
|
manager.set_water_tank_level(10)
|
||||||
|
manager.add_plant("Tomato", 2, 10)
|
||||||
|
manager.add_plant("Lettuce", 5, 7)
|
||||||
|
manager.water_plants()
|
||||||
Reference in New Issue
Block a user