From afd79d55146cc284058fcb60cd1d5f7f30f0ec53 Mon Sep 17 00:00:00 2001 From: Axy Date: Tue, 6 Jan 2026 15:54:33 +0100 Subject: [PATCH] up to ex 3 --- ex0/ft_garden_intro.py | 6 ++++-- ex1/ft_garden_data.py | 22 ++++++++++++++++++++ ex2/ft_plant_growth.py | 31 ++++++++++++++++++++++++++++ ex3/ft_plant_factory.py | 45 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 ex2/ft_plant_growth.py create mode 100644 ex3/ft_plant_factory.py diff --git a/ex0/ft_garden_intro.py b/ex0/ft_garden_intro.py index e1fe6e0..87d2926 100644 --- a/ex0/ft_garden_intro.py +++ b/ex0/ft_garden_intro.py @@ -1,7 +1,9 @@ if __name__ == "__main__": - name: str = "Rose" + print("=== Welcome to My Garden ===") + name: str = "rose" height_cm: int = 25 age_days: int = 30 - print(f"Plant: {name}") + print(f"Plant: {name.capitalize()}") print(f"Height: {height_cm}cm") print(f"Age: {age_days} days") + print("\n=== End of Program ===") diff --git a/ex1/ft_garden_data.py b/ex1/ft_garden_data.py index e69de29..206d32f 100644 --- a/ex1/ft_garden_data.py +++ b/ex1/ft_garden_data.py @@ -0,0 +1,22 @@ +class Plant: + def __init__(self, name: str, height_cm: int, age_days: int) -> None: + self.name = name + self.height_cm = height_cm + self.age_days = age_days + + def __repr__(self) -> str: + return ( + f"{self.name.capitalize()}: " + + f"{self.height_cm}cm, " + + f"{self.age_days} days old" + ) + + +if __name__ == "__main__": + print("=== Garden Plant Registry ===") + rose = Plant("rose", 25, 30) + sunflower = Plant("sunflower", 80, 45) + cactus = Plant("cactus", 15, 120) + print(rose) + print(sunflower) + print(cactus) diff --git a/ex2/ft_plant_growth.py b/ex2/ft_plant_growth.py new file mode 100644 index 0000000..1fefef0 --- /dev/null +++ b/ex2/ft_plant_growth.py @@ -0,0 +1,31 @@ +class Plant: + def __init__(self, name: str, height_cm: int, age_days: int) -> None: + self.name = name + self.height_cm = height_cm + self.age_days = age_days + + def __repr__(self) -> str: + return ( + f"{self.name.capitalize()}: " + + f"{self.height_cm}cm, " + + f"{self.age_days} days old" + ) + + def grow(self, by_cm: int): + self.height_cm += by_cm + + def age(self, by_days: int): + # We assume a growth rate of 1cm per day + self.grow(by_days) + self.age_days += by_days + + +if __name__ == "__main__": + print("=== Day 1 ===") + rose = Plant("rose", 25, 30) + initial_height = rose.height_cm + print(rose) + rose.age(6) + print("=== Day 7 ===") + print(rose) + print(f"Growth this week: +{rose.height_cm - initial_height}cm") diff --git a/ex3/ft_plant_factory.py b/ex3/ft_plant_factory.py new file mode 100644 index 0000000..5f1bb25 --- /dev/null +++ b/ex3/ft_plant_factory.py @@ -0,0 +1,45 @@ +class Plant: + def __init__(self, name: str, height_cm: int, age_days: int) -> None: + self.name = name + self.height_cm = height_cm + self.age_days = age_days + + def __repr__(self) -> str: + return ( + f"{self.name.capitalize()}: " + + f"{self.height_cm}cm, " + + f"{self.age_days} days old" + ) + + def grow(self, by_cm: int): + self.height_cm += by_cm + + def age(self, by_days: int): + # We assume a growth rate of 1cm per day + self.grow(by_days) + self.age_days += by_days + + +class PlantFactory: + def __init__(self): + self.plants = [] + + def create(self, name: str, height_cm: int, age_days: int) -> Plant: + plant = Plant(name, height_cm, age_days) + print( + f"Created: {plant.name.capitalize()} " + f"({plant.height_cm}cm, {plant.age_days} days)" + ) + self.plants += [plant] + return plant + + +if __name__ == "__main__": + print("=== Plant Factory Output ===") + factory = PlantFactory() + factory.create("rose", 25, 30) + factory.create("oak", 200, 365) + factory.create("cactus", 5, 90) + factory.create("sunflower", 80, 45) + factory.create("fern", 15, 120) + print(f"\nTotal Plants created: {len(factory.plants)}") -- 2.51.0