# %% Create Class from datetime import datetime import itertools #%% class kontos(): minimum_kontostand = 0 def __init__(self,kennung:int): self.kennung = kennung self.saldo = 0 self.buchungshistorie = {} def bareinzahlung(self,betrag): self.saldo += betrag self.buchungshistorie[datetime.today()] = ("Bareinzahlung",betrag) def letzte_buchung_prüfen(self,anzahl_buchungen): return dict(itertools.islice(sorted(self.buchungshistorie.items(),reverse=True), anzahl_buchungen)) def abbuchen_konto(self,betrag,konto_gutschrift,minimum_kontostand= minimum_kontostand): if self.saldo - minimum_kontostand > betrag: self.saldo -= betrag self.buchungshistorie[datetime.today()] = ("Belastung",-betrag,konto_gutschrift) else: print(betrag) raise ValueError def gutschrift(self,betrag,belastungskonto): self.saldo += betrag self.buchungshistorie[datetime.today()] = ("Gutschrift",betrag,belastungskonto) class jugendkonto(kontos): pass class privatkonto(kontos): abbuchgebühr = 0.01 def abbuchen_konto(self, betrag,konto_gutschrift,abbuchgebühr, minimum_kontostand=-1000): super().abbuchen_konto((1 + abbuchgebühr)*betrag,konto_gutschrift, minimum_kontostand) class sparkonto(kontos): pass class bankkonto(kontos): pass # %% class OO_Bank(jugendkonto,privatkonto,sparkonto,bankkonto): def __init__(self,saldo_konto) -> None: self.bankkonto = bankkonto(1) self.bankkonto.saldo = saldo_konto self.konto = {} self.kennummer_kontos = 10 def create_konto(self,kontotyp): if kontotyp == "Jugendkonto": self.konto[self.kennummer_kontos] = jugendkonto(self.kennummer_kontos) elif kontotyp == "Privatkonto": self.konto[self.kennummer_kontos] = privatkonto(self.kennummer_kontos) elif kontotyp == "Sparkonto": self.konto[self.kennummer_kontos] = sparkonto(self.kennummer_kontos) else: return "Der Kontotyp ist nicht vorhanden" self.kennummer_kontos +=1 def bareinzahlung(self, kennung, Barbetrag): if kennung in self.konto and Barbetrag > 0: self.konto[kennung].bareinzahlung(Barbetrag) else: print("Kennung unbekannt oder Barbetrag negativ") def check_saldo(self,kennung): return self.konto[kennung].saldo def konto_löschen(self,kennung): if self.check_saldo(kennung) == 0: del self.konto[kennung] else: return "Es hat noch Geld auf dem Konto" def letzte_buchung_prüfen(self, kennung,anzahl_buchungen=1): return self.konto[kennung].letzte_buchung_prüfen(anzahl_buchungen) def buchung_von_konto(self,kennung_belastungskonto:int,kennung_gutschrift_konto:int,betrag:float): try: self.konto[kennung_belastungskonto].abbuchen_konto(betrag,kennung_gutschrift_konto) self.konto[kennung_gutschrift_konto].gutschrift(betrag,kennung_belastungskonto) except: print("kontostand ist zu klein") if isinstance(self.konto[kennung_belastungskonto],privatkonto): self.bankkonto.gutschrift(privatkonto.abbuchgebühr * betrag,kennung_belastungskonto) # %% bank_object=OO_Bank(1000) # %% bank_object.create_konto("Jugendkonto") bank_object.create_konto("Privatkonto") bank_object.create_konto("Sparkonto") # %% bank_object.bareinzahlung(10,1000) bank_object.bareinzahlung(11,400) bank_object.bareinzahlung(12,700) #%% bank_object.check_saldo(11) # %% bank_object.buchung_von_konto(11,10,100) # %% bank_object.check_saldo(11) # %% bank_object.letzte_buchung_prüfen(11,2) # %% bank_object.bareinzahlung(11,400) # %% bank_object.bareinzahlung(11,700) bank_object.letzte_buchung_prüfen(11) # %% youth=jugendkonto(10) # %% youth.bareinzahlung(10000) # %% youth.abbuchen_konto(1000,11,0) # %%