Überprüfen ob Werte eines Objekts existieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Chrisu
User
Beiträge: 11
Registriert: Sonntag 13. September 2020, 09:05

Hy Leute!


Ich bin grade an einer Übung (Banksystem per Konsolen Programm) dran, und komme hier nicht weiter (Code noch nicht fertig, letzter elif Block, mit Kommentar).
Was bietet Python da für Möglichkeiten um zu Überprüfen ob es den Wert 'K1+K2' schon gibt?



Danke euch recht herzlich fürs aufklären!!

PS: ---->> Ich <<----- Anfänger ;)

Code: Alles auswählen

class Konto(object):

    def __init__(self, inhaber, alter, kontonummer,
                 kontostand,
                 kontokorrent=0):
        self.Inhaber = inhaber
        self.alter = alter
        self.Kontonummer = kontonummer
        self.Kontostand = kontostand
        self.Kontokorrent = kontokorrent

    def ueberweisen(self, ziel, betrag):
        if (self.Kontostand - betrag < -self.Kontokorrent):
            # Deckung nicht genuegend
            return False
        else:
            self.Kontostand -= betrag
            ziel.Kontostand += betrag
            return True

    def einzahlen(self, betrag):
        self.Kontostand += betrag

    def auszahlen(self, betrag):
        self.Kontostand -= betrag

    def kontostand(self):
        return self.Kontostand

def bankauswahl():
    print('\n### Willkommen bei Pythonbanking - Was möchten Sie tun? ###\n\n')
    print('Konto als Neukunde anlegen? Drücke 1')
    print('Ein weiteres Konto anlegen? Drücke 2')
    print('Konto bearbeiten? Drücke 3')
    print('Konto löschen? Drücke 4')
    print('Konten übersicht? Drücke 5')
    print('Programm beenden? Drücke die #-Taste\n')


while True:
    bankauswahl()
    option = input('Auswahl: ')

    if option == '1':
        K1 = Konto(input('Vor u. Nachname: '), input('Ihr Alter bitte: '),
                   input('Kontonummer: '), input('Kontostand: '))
        print('Glückwunsch! Sie haben folgendes Konto erfolgreich angelegt: ',K1.Inhaber, K1.Kontonummer)
        abfrage = input('Möchten Sie ein weiteres Konto anlegen? j/n ... ')
        if abfrage == 'n':
            continue
        else:
            K2 = Konto(input('Vor u. Nachname: '), input('Ihr Alter bitte: '),
                       input('Kontonummer: '), input('Kontostand: '))
            print('Glückwunsch! Sie haben folgendes Konto erfolgreich angelegt: ', K2.Inhaber, K2.Kontonummer)
            abfrage2 = input('Möchten Sie ein weiteres Konto anlegen? j/n ... ')
            if abfrage2 == 'n':
                continue
            else:
                print('Zur Zeit haben Sie die maximale Kontenkapazität erreicht!')

    
    
    # Abstand gelassen zur besseren Übersicht im Forum
    
    
    
    elif option == '2':
        if K2(Konto): # Wie kann ich überprüfen lassen ob "K2" schon in der Vorherigen Option angelegt wurde? Den so gehts natürlich nicht ... 
            print('Kontenkapazität erreicht!')
        else:
            K2 = Konto(input('Vor u. Nachname: '), input('Ihr Alter bitte: '),
                       input('Kontonummer: '), input('Kontostand: '))
            print('Glückwunsch! Sie haben folgendes Konto erfolgreich angelegt: ', K2.Inhaber, K2.Kontonummer)
            abfrage2 = input('Möchten Sie ein weiteres Konto anlegen? j/n ... ')
            if abfrage2 == 'n':
                continue



Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Chrisu: Da nummierierte Namen zu verwenden ist schon ein deutliches Zeichen, dass das falsch ist. Wenn Du mehrere Konten verwalten willst, dann gehören die in eine Datenstruktur. Beispielsweise eine Liste. Dann kannst Du auch mehr als zwei Konten verwalten.

`K1` und `K2` sind auch abgesehen von der Nummerierung schlechte Namen. Aufgrund der Grossschreibung müssten das Konstanten sein, und `k` ist eine kryptische Abkürzung. Wenn Du `konto` meinst, solltest Du das auch ausschreiben.

Mit ``continue`` sollte man sparsam umgehen, weil das unbedingte Sprünge im Programmablauf sind die man nicht an der Einrückung des Codes ablesen kann. Zudem sind die hier auch alle überflüssig weil ohne ``continue`` genau das gleiche passieren würde.

Edit: Auch die Attributnamen sollten kleingeschrieben werden und die `kontostand()`-Methode macht keinen Sinn. Den Wert kann man einfach über das Attribut abfragen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
Chrisu
User
Beiträge: 11
Registriert: Sonntag 13. September 2020, 09:05

Alles klar super danke für die Tipps, werde ich gleich umsetzen!!

Wie gesagt bin ich ja noch beim lernen und werds mir gleich merken! =)
Antworten