some fixes + 02/ex5 WIP

This commit is contained in:
2026-01-17 10:47:13 +01:00
parent 33e4e6ed3d
commit 29c20da5b3
4 changed files with 111 additions and 13 deletions

View File

@@ -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__":

View File

@@ -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");

View File

@@ -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:

View 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()