diff --git a/src/codewars/MenuDisplay.py b/src/codewars/MenuDisplay.py new file mode 100644 index 0000000..e5af845 --- /dev/null +++ b/src/codewars/MenuDisplay.py @@ -0,0 +1,37 @@ +class Menu: + def __init__(self, selects: list): + self.selects = selects + self.cursor = 0 + + def to_the_right(self): + self.cursor = (self.cursor + 1) % len(self.selects) + + def to_the_left(self): + self.cursor = (self.cursor - 1) % len(self.selects) + + def display(self): + return ( + "[" + + ", ".join( + [ + f"'{s}'" if i != self.cursor else f"['{s}']" + for i, s in enumerate(self.selects) + ] + ) + + "]" + ) + + +if __name__ == "__main__": + menu = Menu(["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]) + + print(menu.display()) + menu.to_the_right() + print(menu.display()) + menu.to_the_left() + menu.to_the_left() + menu.to_the_left() + print(menu.display()) + menu.to_the_left() + menu.to_the_left() + print(menu.display()) diff --git a/src/codewars/__main__.py b/src/codewars/__main__.py new file mode 100644 index 0000000..8ccf9e1 --- /dev/null +++ b/src/codewars/__main__.py @@ -0,0 +1,4 @@ +from codewars.lastDigitOfHugeNumber import last_digit + +if __name__ == "__main__": + print(last_digit([1, 2, 3, 4, 5])) diff --git a/src/dog.py b/src/dog.py index 257c1c4..d9bdf4a 100644 --- a/src/dog.py +++ b/src/dog.py @@ -1,16 +1,15 @@ -class Dog: +from abc import ABC, abstractmethod + + +class Dog(ABC): amount_of_dogs = 0 name: str - race: str age: int weight: float bark_sound: str - def __init__( - self, name: str, race: str, age: int, weight: float, bark_sound: str - ) -> None: + def __init__(self, name: str, age: int, weight: float, bark_sound: str) -> None: self.name = name - self.race = race self.age = age self.weight = weight self.bark_sound = bark_sound @@ -18,10 +17,11 @@ class Dog: Dog.amount_of_dogs += 1 def __str__(self): - return f"{self.name} is a {self.age} year old {self.race}" + return f"{self.name} is a {self.age} year old {self.__class__.__name__}" + @abstractmethod def bark(self, times: int = 1) -> str: - return f"{self.name} says:" + (f" {self.bark_sound}" * times) + pass def birthday(self) -> str: self.age += 1 @@ -30,21 +30,35 @@ class Dog: def is_puppy(self) -> bool: return self.age < 2 + def __eq__(self, other): + return self.name == other.name + class Shepperd(Dog): - race: str = "shepperd" bark_sound: str = "Woo!" def __init__(self, name: str, age: int, weight: float) -> None: - Dog.__init__(self, name, Shepperd.race, age, weight, Shepperd.bark_sound) + Dog.__init__(self, name, age, weight, Shepperd.bark_sound) + + def bark(self, times: int = 1) -> str: + return f"{self.name} says:" + (f" {self.bark_sound}" * times) class Poodle(Dog): - race: str = "poodle" bark_sound: str = "Wow!" def __init__(self, name: str, age: int, weight: float) -> None: - Dog.__init__(self, name, Poodle.race, age, weight, Poodle.bark_sound) + Dog.__init__(self, name, age, weight, Poodle.bark_sound) + + def bark(self, times: int = 1) -> str: + return f"{self.name} says:" + (f" {self.bark_sound}" * times) + + +class Bulldog(Dog): + bark_sound: str = "WUUUU!" + + def __init__(self, name: str, age: int, weight: float) -> None: + Dog.__init__(self, name, age, weight, Bulldog.bark_sound) dog1 = Shepperd("Bello", 5, 22.5) @@ -53,7 +67,8 @@ print(dog1.bark()) print(dog1.birthday()) print(Dog.amount_of_dogs) -dog2 = Poodle("Barky", 10, 20) +dog2 = Poodle("Bello", 10, 20) print(dog2.bark(3)) print(dog2.is_puppy()) print(Dog.amount_of_dogs) +print(dog2 == dog1)