From 17222e110bd5238422536539b2a37d932fe656a9 Mon Sep 17 00:00:00 2001 From: Julia Hauer Date: Sun, 15 Mar 2026 20:39:17 +0100 Subject: [PATCH] Menu Display --- .../{Basic_subclasses => basic_subclasses.py} | 5 +- src/Codewars/menu_display.py | 39 ++++++++++++++ .../OOP:Interfaces&Vererbung_uebung1.py | 22 ++++++++ .../OOP:Interfaces&Vererbung_uebung2.py | 22 ++++++++ src/Klassen2/auf_den_Hund_gekommmen.py | 51 +++++++++++++++++++ src/Klassen2/chorus.py | 31 +++++++++++ src/Klassen2/mro.py | 17 +++++++ src/Klassen2/ping.py | 24 +++++++++ 8 files changed, 210 insertions(+), 1 deletion(-) rename src/Codewars/{Basic_subclasses => basic_subclasses.py} (85%) create mode 100644 src/Codewars/menu_display.py create mode 100644 src/Klassen2/OOP:Interfaces&Vererbung_uebung1.py create mode 100644 src/Klassen2/OOP:Interfaces&Vererbung_uebung2.py create mode 100644 src/Klassen2/auf_den_Hund_gekommmen.py create mode 100644 src/Klassen2/chorus.py create mode 100644 src/Klassen2/mro.py create mode 100644 src/Klassen2/ping.py diff --git a/src/Codewars/Basic_subclasses b/src/Codewars/basic_subclasses.py similarity index 85% rename from src/Codewars/Basic_subclasses rename to src/Codewars/basic_subclasses.py index 3c74c6d..e4a57bb 100644 --- a/src/Codewars/Basic_subclasses +++ b/src/Codewars/basic_subclasses.py @@ -2,13 +2,16 @@ class Human: def __init__(self): pass + class Woman(Human): pass + class Man(Human): pass + def God(): adam = Man() eve = Woman() - return[adam, eve] + return [adam, eve] diff --git a/src/Codewars/menu_display.py b/src/Codewars/menu_display.py new file mode 100644 index 0000000..8e56fb8 --- /dev/null +++ b/src/Codewars/menu_display.py @@ -0,0 +1,39 @@ +class Menu: + def __init__(self, lst): + self.lst = lst + self.cursor_pos = 0 + + def to_the_right(self): + if self.cursor_pos < len(self.lst) - 1: + self.cursor_pos += 1 + else: + self.cursor_pos = 0 + + def to_the_left(self): + if self.cursor_pos > 0: + self.cursor_pos -= 1 + else: + self.cursor_pos = len(self.lst) - 1 + + def display(self): + result = [] + for i, char in enumerate(self.lst): + if i == self.cursor_pos: + result.append([f"{char}"]) + else: + result.append(f"{char}") + return str(result) + + +menu = Menu([1, 2, 3]) +print(menu.display()) +menu.to_the_right() +print(menu.display()) +menu.to_the_right() +print(menu.display()) +menu.to_the_right() +print(menu.display()) +menu.to_the_left() +print(menu.display()) +menu.to_the_left() +print(menu.display()) diff --git a/src/Klassen2/OOP:Interfaces&Vererbung_uebung1.py b/src/Klassen2/OOP:Interfaces&Vererbung_uebung1.py new file mode 100644 index 0000000..8db87e7 --- /dev/null +++ b/src/Klassen2/OOP:Interfaces&Vererbung_uebung1.py @@ -0,0 +1,22 @@ +class Robot: + def speak(self, mood="happy") -> str: + if mood == "happy": + return "Robo" + + +class Dog: + def speak(self): + return "Wuff" + + +class Cat: + def speak(self): + return "Miau" + + +def chorus(animals) -> None: + for a in animals: + print(a.speak()) + + +chorus([Dog(), Cat(), Robot()]) diff --git a/src/Klassen2/OOP:Interfaces&Vererbung_uebung2.py b/src/Klassen2/OOP:Interfaces&Vererbung_uebung2.py new file mode 100644 index 0000000..eeddf7b --- /dev/null +++ b/src/Klassen2/OOP:Interfaces&Vererbung_uebung2.py @@ -0,0 +1,22 @@ +from abc import ABC, abstractmethod + + +class Storage(ABC): + @abstractmethod + def save(self, key: str, value: str) -> None: + pass + + @abstractmethod + def load(self, key: str) -> str: + pass + + +class MemoryStorage(Storage): + def __init__(self): + self.storage = {} + + def save(self, key: str, value: str) -> None: + self.storage[key] = value + + def load(self, key: str) -> str: + return self.storage[key] diff --git a/src/Klassen2/auf_den_Hund_gekommmen.py b/src/Klassen2/auf_den_Hund_gekommmen.py new file mode 100644 index 0000000..9129a46 --- /dev/null +++ b/src/Klassen2/auf_den_Hund_gekommmen.py @@ -0,0 +1,51 @@ +from abc import ABC, abstractmethod + + +class Hund(ABC): + + anzahl_hunde = 0 + + def __init__(self, name: str, alter: int, gewicht: float): + self.name = name + self.alter = alter + self.gewicht = gewicht + Hund.anzahl_hunde += 1 + + def __repr__(self): + return f"Hund=(name='{self.name}', rasse='{self.__class__.__name__}' , alter={self.alter}, gewicht={self.gewicht}kg)" + + def __str__(self): + return f"Hund '{self.name}' ist ein '{self.alter}'-jaehriger '{self.__class__.__name__}' und wiegt '{self.gewicht}' kg." + + @abstractmethod + def bellen(self, n: int = 1) -> None: + pass + + def bday(self): + self.alter += 1 + print(f"Alles Gute '{self.name}'. Du bist jetzt '{self.alter}' Jahre alt.") + + def ist_welpe(self): + return self.alter < 2 + + +class Pudel(Hund): + + def bellen(self, n=1): + print(" ".join(["wau"] * n)) + + +class Labrador(Hund): + + def bellen(self, n=1): + print(" ".join(["wuff"] * n)) + + +hund1 = Labrador("Bello", 2, 15) +hund1.bday() +print(hund1.ist_welpe()) +hund2 = Pudel("Pudi", 7, 4) +hund1.bellen(8) +hund2.bellen(3) +print(repr(hund1)) +print(str(hund1)) diff --git a/src/Klassen2/chorus.py b/src/Klassen2/chorus.py new file mode 100644 index 0000000..bf43c14 --- /dev/null +++ b/src/Klassen2/chorus.py @@ -0,0 +1,31 @@ +from abc import ABC, abstractmethod + + +class Animal(ABC): + @abstractmethod + def speak(self) -> str: + return "..." + + def chorus(self, n: int) -> str: + if n <= 0: + raise ValueError("n muss positiv sein") + return " ".join(self.speak() for _ in range(n)) + + +class Dog(Animal): + def speak(self) -> str: + return "wuff" + + +class Cat(Animal): + def speak(self) -> str: + return "miau" + + +class Cow(Animal): + def speak(self) -> str: + return "muh" + + +Berta = Cow() +print(Berta.chorus(1)) diff --git a/src/Klassen2/mro.py b/src/Klassen2/mro.py new file mode 100644 index 0000000..715035d --- /dev/null +++ b/src/Klassen2/mro.py @@ -0,0 +1,17 @@ +class A: + pass + + +class B(A): + pass + + +class C(A): + pass + + +class D(B, C): + pass + + +print(D.mro()) diff --git a/src/Klassen2/ping.py b/src/Klassen2/ping.py new file mode 100644 index 0000000..76b4ced --- /dev/null +++ b/src/Klassen2/ping.py @@ -0,0 +1,24 @@ +class A: + def ping(self) -> None: + print("A") + + +class B(A): + def ping(self) -> None: + print("B") + super().ping() + + +class C(A): + def ping(self) -> None: + print("C") + super().ping() + + +class D(B, C): + def ping(self) -> None: + print("D") + super().ping() + + +D().ping()