diff --git a/src/main.py b/src/main.py new file mode 100644 index 0000000..0a316b3 --- /dev/null +++ b/src/main.py @@ -0,0 +1,17 @@ +from models.home import Home + + +def main(): + home: Home = Home() + print(home) + home.sort_by_age() + print(f"\n{home}\n") + print(f"\n{home.pets[0].is_polite()}\n") + tuple_of_pets_for_friendship: tuple = (home.pets[1], home.pets[2], home.pets[3]) + friends = home.pets[0].are_friends(*tuple_of_pets_for_friendship) + for pet in friends: + print(f"this is friend {pet.name}") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/models/home.py b/src/models/home.py new file mode 100644 index 0000000..ce9c60a --- /dev/null +++ b/src/models/home.py @@ -0,0 +1,27 @@ +from models.pet import Pet +from models.kind import Kind + +class Home: + def __init__(self): + self.pets: list[Pet] = [ + Pet("Buddy", Kind.DOG, "Golden Retriever", 2, "Hello, I'm Buddy!", 30.0), + Pet("Lucy", Kind.CAT, "Siamese", 1, "Hello, I'm Lucy!", 10.0), + Pet("Bella", Kind.BIRD, "Parrot", 3, "Hello, I'm Bella!", 0.5), + Pet("Nemo", Kind.FISH, "Clownfish", 1, "Hello, I'm Nemo!", 0.1) + ] + + + def adopt(self, pet: Pet) -> None: + self.pets.append(pet) + + + def __str__(self) -> str: + return "\n".join([str(pet) for pet in self.pets]) + + + + def sort_by_age(self) -> None: + for n in range(len(self.pets) - 1, 0, -1): + for i in range(n): + if self.pets[i].age > self.pets[i + 1].age: + self.pets[i].age, self.pets[i + 1].age = self.pets[i + 1].age, self.pets[i].age diff --git a/src/models/kind.py b/src/models/kind.py new file mode 100644 index 0000000..b9aa1fd --- /dev/null +++ b/src/models/kind.py @@ -0,0 +1,7 @@ +from enum import Enum + +class Kind(Enum): + DOG = "DOG" + CAT = "CAT" + BIRD = "BIRD" + FISH = "FISH" \ No newline at end of file diff --git a/src/models/pet.py b/src/models/pet.py new file mode 100644 index 0000000..f13bb77 --- /dev/null +++ b/src/models/pet.py @@ -0,0 +1,30 @@ +from models.kind import Kind + + +class Pet: + def __init__(self, name: str, kind: Kind, breed: str, age: int, greeting: str, mass: float): + self.name:str = name + self.breed: str = breed + self.kind: Kind = kind + self.age:int = age + self.greeting: str = greeting + self.mass:float = mass + + + def are_friends(self, *other_pets) -> list: + friends: list[Pet] = [] + for pet in other_pets: + if type(pet) is Pet and abs(self.age - pet.age) <= 2: + friends.append(pet) + else: + continue + + return friends + + + def is_polite(self) -> bool: + return "hello" in self.greeting.lower() + + + def __str__(self): + return f"{self.name} is a {self.kind} ({self.breed}) and is {self.age} years old. {self.greeting}"