• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Programm switcher Anweisung Python

Payno4

Schafhirte
Registriert
12 Februar 2015
Beiträge
127
Diamanten
300
Liebe Community,

ich bin neu in der Python Programmierung und habe ein kleines Programm erstellt, das eine Bank imitieren soll. Leider funktioniert bei mir die switcher Anweisung irgendwie nicht, er geht egal welche Zahl ich drücke alle Methoden durch. Gerne auch andere Anregungen, wenn euch bei meinem Code was auffällt. :)

Code:
from account import Account

class Bank:

    def __init__ (self, name):
        self.__name = name
        self.__cus = []

    def getName(self):
        return self.__name

    def getCustomers(self):
        return self.__cus

    """
    Erstellt einen neuen Account
    """
    def newAccount(self):
        name = input("Name: ")
        password = input("Password: ")
        c = Account(name, password)
        self.__cus.append(c)
        return True

    """
    Rückgabe ist der Platz in der Liste
    """
    def isCus(self, name):
        for c in range(len(self.__cus)):
            if self.__cus[c] == name:
                return c
        return False

    """
    Gibt den aktuellen Kontostand wieder
    """
    def checkBalance(self, name, password):
        cus = self.getCus(name, password)
        if isinstance(cus, int):
            return cus.getValue()

    """
    Gibt den Kunden als Klasse zurück und Fals falls Passwort falsch oder Name nicht vorhanden
    """
    def getCus(self, name, password):
        if isinstance(self.isCus(name), int):
            cus = self.__cus[self.isCus(name)]
            if cus.isPasswordCorrect(password):
                return self.__cus[self.isCus(name)]
            return False
        return False


#Einstiegspunkt <----

def quit():
    exit = True
   
def deposit():
    cus = bank.getCus(input("Youre name: "), input("Youre password: "))
    cus.deposit(int(input("How much do you want to deposit? ")))

bank = Bank("Die Bank")
exit = False
print("Let's go!")
while exit == False:
    eingabe = int(input("What do you want to do ? 0 Exit; 1 Add account; 2 View balance; 3 Deposit;\n"))
    #switcher funktioniert nicht
    switcher = {
        0: quit(),
        1: bank.newAccount(),
        2: print(bank.checkBalance(input("Youre name: "), input("Youre password: "))),
        3: deposit()
    }
    switcher.get(eingabe, "Error 1")

Code:
import uuid

class Account:

    def __init__ (self, name, password, value=0):
        self.__name = name
        self.__value = value
        self.__password = password
        self.__ID = uuid.uuid1()

    def getName(self):
        return self.__name

    def getValue(self):
        return self.__value

    def getID(self):
        return self.__ID

    def getPassword(self):
        return self.__password

    def withdraw(self, value):
        if value < self.__value:
            self.__value =- value
            return True
        else:
            return False

    def deposit(self, value):
        if value <= 0:
            return False
        else:
            self.__value =+ value

    def __str__(self):
        return "Dein Konto: " +self.__ID+ " -> " +self.__value

    def isPasswordCorrect(self, inp):
        if self.__password == inp:
            return True
        else:
            return False

Schon mal Danke im Voraus :)
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Das ist soweit auch korrekt.
Dein switcher Statement verweist nicht auf die Methoden, sondern auf die Rückgabewerte der Methoden. Je nachdem, welche Zahl du eingibst, wird aktuell der Rückgabewert der Methode ausgegeben, die Rückgabewerte sind allerdings schon vorher durch den Aufruf der Methoden berechnet worden.

Ich weiß nicht, ob du so ein switch case Szenario in Python einfach implementieren kannst, so geht es aber nicht so gut.
 

Payno4

Schafhirte
Registriert
12 Februar 2015
Beiträge
127
Diamanten
300
Das ist soweit auch korrekt.
Dein switcher Statement verweist nicht auf die Methoden, sondern auf die Rückgabewerte der Methoden. Je nachdem, welche Zahl du eingibst, wird aktuell der Rückgabewert der Methode ausgegeben, die Rückgabewerte sind allerdings schon vorher durch den Aufruf der Methoden berechnet worden.

Ich weiß nicht, ob du so ein switch case Szenario in Python einfach implementieren kannst, so geht es aber nicht so gut.
Danke für deine Antwort :) dann werd ich es wahrscheinlich mit if else machen müssen. Nur finde ich das sehr unelegant. Wenn jemand eine andere Idee hat gerne schreibenn:D
 
Oben