diff --git a/src/uebung_klassen_Dog.py b/src/uebung_klassen_Dog.py new file mode 100644 index 0000000..f3c0a58 --- /dev/null +++ b/src/uebung_klassen_Dog.py @@ -0,0 +1,41 @@ +class Hund: + anzahl_hunde = 0 + + def __init__(self, name: str, rasse: str, alter: int, gewicht: float): + self.name = name + self.rasse = rasse + self.alter = alter + self.gewicht = gewicht + Hund.anzahl_hunde += 1 + + def __repr__(self): + return ( + f"Hund(name='{self.name}', rasse='{self.rasse}'," + f"alter={self.alter}, gewicht={self.gewicht}kg" + ) + + def __str__(self): + return f"{self.name} ist ein {self.alter}-jähriger {self.rasse}" + + def bellen(self, anzahl=1): + print("Wuff!" * anzahl) + return + + def geburtstag(self): + self.alter += 1 + print( + f"Alles Gute zum Geburtstag, {self.name}! Du bist jetzt {self.alter} Jahre alt." + ) + return + + def ist_welpe(self): + return self.alter < 2 + + +hund1 = Hund("Bello", "Labrador", 3, 28.5) +hund2 = Hund("BBarky", "Puddel", 4, 28.5) + +print(repr(hund1)) +print(hund1) +print(hund1.__dict__) +print(hund1.ist_welpe()) diff --git a/src/uebungen_klassen_cw.py b/src/uebungen_klassen_cw.py new file mode 100644 index 0000000..cbca774 --- /dev/null +++ b/src/uebungen_klassen_cw.py @@ -0,0 +1,167 @@ +""" +Codewars Kata: +https://www.codewars.com/kata/54fe05c4762e2e3047000add +""" + + +class Ship: + def __init__(self, draft, crew): + self.draft = draft + self.crew = crew + + def is_worth_it(self): + crew_weight = self.crew * 1.5 + return self.draft - crew_weight > 20 + + +Titanic = Ship(15, 10) + +print(Titanic.is_worth_it()) + +""" +Codewars Kata: +https://www.codewars.com/kata/528d36d7cc451cd7e4000339 +""" + + +class Student: + all_students = [] + + def __init__(self, name, fives, tens, twenties): + self.name = name + self.fives = fives + self.tens = tens + self.twenties = twenties + Student.all_students.append(self) + + def total_amount(self): + return self.fives * 5 + self.tens * 10 + self.twenties * 20 + + +richest_student = None +multiple = False + +for s in Student.all_students: + if richest_student is None: + richest_student = s + elif s.total_amount() > richest_student.total_amount(): + richest_student = s + multiple = False + elif s.total_amount() == richest_student.total_amount(): + multiple = True + +if multiple: + print("all") +else: + print(richest_student.name) + +""" +Codewars Kata: +https://www.codewars.com/kata/5a03af9606d5b65ff7000009 +""" + + +class User: + def __init__(self, name: str, balance: int, checking_account: bool): + self.name = name + self.balance = balance + self.checking_account = checking_account + + def withdraw(self, amount): + if amount > self.balance: + raise ValueError("overdraw") + self.balance -= amount + return f"{self.name} has {self.balance}." + + def add_cash(self, amount): + self.balance += amount + return f"{self.name} has {self.balance}." + + def check(self, issuer, amount): + if amount > issuer.balance: + raise ValueError("bad check") + if not issuer.checking_account: + raise ValueError("non checking-account") + self.balance += amount + issuer.balance -= amount + return f"{self.name} has {self.balance} and {issuer.name} has {issuer.balance}." + + +""" +Codewars Kata: +https://www.codewars.com/kata/5941c545f5c394fef900000c +""" + + +class Warrior: + RANKS = [ + ("Greatest", 100), + ("Master", 90), + ("Champion", 80), + ("Conqueror", 70), + ("Elite", 60), + ("Sage", 50), + ("Veteran", 40), + ("Warrior", 30), + ("Fighter", 20), + ("Novice", 10), + ("Pushover", 1), + ] + + def __init__(self, level=1, rank="Pushover", experience=100, achievements=None): + self.level = level + self.rank = rank + self.experience = experience + self.achievements = achievements if achievements is not None else [] + + def battle(self, enemy): + if not enemy or enemy > 100: + return "Invalid level" + + level_diff = enemy - self.level + rank_diff = (enemy // 10 + 1) - (self.level // 10 + 1) + if level_diff >= 5 and rank_diff >= 1: + return "You've been defeated" + else: + self.xp_won(level_diff) + if level_diff > 0: + return "An intense fight" + elif level_diff > -2: + return "A good fight" + else: + return "Easy fight" + + def xp_won(self, diff: int): + xp_gained = 0 + if diff == -1: + xp_gained = 5 + elif diff == 0: + xp_gained = 10 + elif diff > 0: + xp_gained = diff**2 * 20 + + if xp_gained: + self.add_xp(xp_gained) + + def add_xp(self, xp_gained: int): + self.experience += xp_gained + + if self.experience > 10000: + self.experience = 10000 + + if self.level != self.experience // 100: + self.level = self.experience // 100 + + for rank_name, max_level in self.RANKS: + if max_level <= self.level: + self.rank = rank_name + break + + def training(self, training_arr): + description, xp_gained, min_level = training_arr + if self.level < min_level: + return "Not strong enough" + elif self.level >= min_level: + self.achievements.append(description) + self.add_xp(xp_gained) + return description