Seite 1 von 1

if else - frage

Verfasst: Dienstag 6. Oktober 2020, 21:57
von albac4545
Ich lese ein Python-Buch vom Rheinwerk-Verlag, bin ziemlich am Anfang und es sollte im zu schreibenden Programm festgestellt werden, ob ein Steuersatz von 18 oder 22 Prozent ausgerechnet wird. [mit Idle Python 64-bit-Version, runtergeladen auf python.org] Merkwürdigerweise werden bei einem Gehalt von 2000 Euro anstatt der erwarteten 360 Euro 440 Euro ausgerechnet. Kann man da was dran ändern?

Re: if else - frage

Verfasst: Dienstag 6. Oktober 2020, 22:12
von __deets__
Wenn man den Code sehen würde, gesetzt in den Code-Tags (der </>-Knopf im vollständigen Editor), dann bestimmt.

Re: if else - frage

Verfasst: Dienstag 6. Oktober 2020, 22:43
von albac4545
Sorry, hab total vergessen, den Code einzufügen. Hier ist er:

sta = 0.18

stb = 0.22

print("Mit diesem Programm können Sie durch Eingabe Ihres monatlichen Gehalts feststellen, welcher Steuersatz zur Anwendung kommt. Bitte geben Sie Ihr monatliches Gehalt ein:")

x = input()

zahl = int(x)

a = zahl * sta

b = zahl * stb

if zahl > 2.500:
print("Es ergibt sich eine Steuer von", b)
else:
print("Es ergibt sich eine Steuer von", a)

Re: if else - frage

Verfasst: Mittwoch 7. Oktober 2020, 06:30
von Jankie
Hallo,

das Kernproblem liegt daran, dass 2.500 nicht 2500 ist, sondern 2,5. Somit ist 2000 größer als 2,5 und es wird nur b ausgegeben.
Variablen sollten aussagekräftige Namen haben, also statt sta sowas wie STEUERSATZ_ACHTZEHN (Komplett groß geschrieben da Konstanten laut PEP8 komplett groß geschrieben werden) oder ähnliches, sodass man direkt weiß was gemeint ist.
Die Eingabe in einen Integer umwandeln kannst du auch schon direkt beim input, musst also dann keine neue Variable benutzen (Was noch fehlt ist Exceptionhandling, also wenn jemand einen Buchstaben statt einer Zahl eingibt z.B.).
Es macht auch keinen Sinn beide Werte berechnen zu lassen, wenn nur einer davon verwendet wird, also würde ich die Berechnung auch noch in die Fallunterscheidung miteinbeziehen und die Berechnung in eine Funktion auslagern, die das monatliche Gehalt als Paramter übergeben bekommt und das Ergebnis per return zurückgibt.

Code: Alles auswählen

STEUERSATZ_ACHTZEHN = 0.18

STEUERSATZ_ZWEIUNDZWANZIG = 0.22

def berechne_steuer(monatliches_gehalt):
    if monatliches_gehalt > 2500:
        return monatliches_gehalt * STEUERSATZ_ACHTZEHN
    else:
        return monatliches_gehalt * STEUERSATZ_ZWEIUNDZWANZIG


def main():
    print("Mit diesem Programm können Sie durch Eingabe Ihres monatlichen Gehalts feststellen, welcher Steuersatz zur Anwendung kommt.")
    monatliches_gehalt = int(input("Bitte geben Sie Ihr monatliches Gehalt ein: "))
    steuer = berechne_steuer(monatliches_gehalt)
    print(f"Bei einem Gehalt von {monatliches_gehalt} ergibt sich eine Steuer von {steuer}")


if __name__ == "__main__":
    main()

Re: if else - frage

Verfasst: Mittwoch 7. Oktober 2020, 06:34
von albac4545
Danke!