CW Uebungen zu Klassen + Unterricht Code vom Freitag
This commit is contained in:
parent
3fb385438c
commit
9af621b9ba
41
src/uebung_klassen_Dog.py
Normal file
41
src/uebung_klassen_Dog.py
Normal file
@ -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())
|
||||||
167
src/uebungen_klassen_cw.py
Normal file
167
src/uebungen_klassen_cw.py
Normal file
@ -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
|
||||||
Loading…
x
Reference in New Issue
Block a user