Problem mit if else Anweisungen
Verfasst: Donnerstag 25. Mai 2023, 19:43
Hallo Allerseits
Ich bin blutiger Anfänger und bitte daher bei folgender Frage um Nachsicht.
Ich habe versucht mein erstes eigenes Programm, einen Gehaltsrechner, zu schreiben, jedoch bin ich leider auf ein Problem gestoßen, welches ich leider nicht selbst beheben kann. Code lautet wie folgt:
def calc_pay_jahr_n(lohnsteuer): # für Lohnsteuer pro Jahr
return lohn_jahr_b - lohnsteuer
def calc_pay_monat_n(): # für Monatslohn netto
return round(lohn_jahr_n / 12 - float(calc_percent()), 2)
def calc_percent(): # für Reststeuer
if Kirche == "Ja" or "ja":
return round(lohn_monat_b / 100 * 19.925, 2) + round(Lohnsteuer / 12 * 0.009, 2)
else:
return round(lohn_monat_b / 100 * 19.925, 2)
def print_solution(lohn_jahr_p, lohn_monat_p): # Printfunktion für Ergebnis
print("Sie verdienen im Jahr daher abzüglich der Lohnsteuer " + lohn_jahr_p + " Euro")
print("Daraus ergibt sich abzüglich der restlichen Abgaben ein Monatslohn von " + lohn_monat_p + " Euro Netto")
Kirche = input("Sind sie Mitglied in der Kirchgemeinde? Antwort hier eintragen (Ja oder nein): ")
lohn_stunde = input("Bitte geben sie hier ihren Lohn pro Stunde an: ")
lohn_tag = input("Bitte geben sie die Anzahl der Stunden ein, die sie pro Tag arbeiten: ")
lohn_monat_b = int(lohn_tag) * 5 * 4 * float(lohn_stunde)
lohn_jahr_b = int(lohn_monat_b) * 12
if float(lohn_stunde) < 12.50:
print("Sie verdienen unter Mindestlohn. Wir würden ihnen empfehlen, sich einen fairer bezahlten Job zu suchen")
else:
print("Ihr Lohn pro Monat beträgt " + str(lohn_monat_b) + " Euro Brutto")
print("Daraus ergibt sich ein Jahreslohn von " + str(lohn_jahr_b) + " Euro brutto")
if lohn_jahr_b >= 20000: # Steuer für Lohn von 20.000
Lohnsteuer = 1748
lohn_jahr_n = calc_pay_jahr_n(1748)
print_solution(str(calc_pay_jahr_n(1748)), str(calc_pay_monat_n()))
elif lohn_jahr_b >= 30000: # Steuer für Lohn von 30.000
Lohnsteuer = 4748
lohn_jahr_n = calc_pay_jahr_n(4748)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 40000: # Steuer für Lohn von 40.000
Lohnsteuer = 8620
lohn_jahr_n = calc_pay_jahr_n(8620)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 60000: # Steuer für Lohn von 60.000
Lohnsteuer = 16820
lohn_jahr_n = calc_pay_jahr_n(16820)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 80000: # Steuer für Lohn von 80.000
Lohnsteuer = 26274
lohn_jahr_n = calc_pay_jahr_n(26274)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 100000: # Steuer für Lohn von 100.000
Lohnsteuer = 36012
lohn_jahr_n = calc_pay_jahr_n(36012)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 200000: # Steuer für Lohn von 200.000
Lohnsteuer = 86012
lohn_jahr_n = calc_pay_jahr_n(86012)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
Nun habe ich ein Problem, dass bei der If Anweisung, bei der durch die Variable Kirche bestimmt wird, ob man Kirchsteuer bezahlen muss oder nicht (Blau markiert). Mein Problem besteht darin, dass egal was man in die Variable Kirche für einen Wert übergibt, immer der Code Block unter der If-Anweisung und nie unter der Else- Anweisung ausgeführt wird. Angedacht war es von mir, dass der Codeblock unter else immer dann ausgeführt wird, wenn Kirche = "Ja" oder "ja" nicht zutrifft. Hat jemand vielleicht eine Lösung dafür?
Ich bin blutiger Anfänger und bitte daher bei folgender Frage um Nachsicht.
Ich habe versucht mein erstes eigenes Programm, einen Gehaltsrechner, zu schreiben, jedoch bin ich leider auf ein Problem gestoßen, welches ich leider nicht selbst beheben kann. Code lautet wie folgt:
def calc_pay_jahr_n(lohnsteuer): # für Lohnsteuer pro Jahr
return lohn_jahr_b - lohnsteuer
def calc_pay_monat_n(): # für Monatslohn netto
return round(lohn_jahr_n / 12 - float(calc_percent()), 2)
def calc_percent(): # für Reststeuer
if Kirche == "Ja" or "ja":
return round(lohn_monat_b / 100 * 19.925, 2) + round(Lohnsteuer / 12 * 0.009, 2)
else:
return round(lohn_monat_b / 100 * 19.925, 2)
def print_solution(lohn_jahr_p, lohn_monat_p): # Printfunktion für Ergebnis
print("Sie verdienen im Jahr daher abzüglich der Lohnsteuer " + lohn_jahr_p + " Euro")
print("Daraus ergibt sich abzüglich der restlichen Abgaben ein Monatslohn von " + lohn_monat_p + " Euro Netto")
Kirche = input("Sind sie Mitglied in der Kirchgemeinde? Antwort hier eintragen (Ja oder nein): ")
lohn_stunde = input("Bitte geben sie hier ihren Lohn pro Stunde an: ")
lohn_tag = input("Bitte geben sie die Anzahl der Stunden ein, die sie pro Tag arbeiten: ")
lohn_monat_b = int(lohn_tag) * 5 * 4 * float(lohn_stunde)
lohn_jahr_b = int(lohn_monat_b) * 12
if float(lohn_stunde) < 12.50:
print("Sie verdienen unter Mindestlohn. Wir würden ihnen empfehlen, sich einen fairer bezahlten Job zu suchen")
else:
print("Ihr Lohn pro Monat beträgt " + str(lohn_monat_b) + " Euro Brutto")
print("Daraus ergibt sich ein Jahreslohn von " + str(lohn_jahr_b) + " Euro brutto")
if lohn_jahr_b >= 20000: # Steuer für Lohn von 20.000
Lohnsteuer = 1748
lohn_jahr_n = calc_pay_jahr_n(1748)
print_solution(str(calc_pay_jahr_n(1748)), str(calc_pay_monat_n()))
elif lohn_jahr_b >= 30000: # Steuer für Lohn von 30.000
Lohnsteuer = 4748
lohn_jahr_n = calc_pay_jahr_n(4748)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 40000: # Steuer für Lohn von 40.000
Lohnsteuer = 8620
lohn_jahr_n = calc_pay_jahr_n(8620)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 60000: # Steuer für Lohn von 60.000
Lohnsteuer = 16820
lohn_jahr_n = calc_pay_jahr_n(16820)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 80000: # Steuer für Lohn von 80.000
Lohnsteuer = 26274
lohn_jahr_n = calc_pay_jahr_n(26274)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 100000: # Steuer für Lohn von 100.000
Lohnsteuer = 36012
lohn_jahr_n = calc_pay_jahr_n(36012)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
elif lohn_jahr_b >= 200000: # Steuer für Lohn von 200.000
Lohnsteuer = 86012
lohn_jahr_n = calc_pay_jahr_n(86012)
lohn_monat_n = calc_pay_monat_n()
print_solution(str(lohn_jahr_n), str(lohn_monat_n))
Nun habe ich ein Problem, dass bei der If Anweisung, bei der durch die Variable Kirche bestimmt wird, ob man Kirchsteuer bezahlen muss oder nicht (Blau markiert). Mein Problem besteht darin, dass egal was man in die Variable Kirche für einen Wert übergibt, immer der Code Block unter der If-Anweisung und nie unter der Else- Anweisung ausgeführt wird. Angedacht war es von mir, dass der Codeblock unter else immer dann ausgeführt wird, wenn Kirche = "Ja" oder "ja" nicht zutrifft. Hat jemand vielleicht eine Lösung dafür?