Bedingte Anweisungen

Manche Entscheidungen sind unvermeidlich

Unvermeidliche Entscheidungen Zu bestimmten Zeiten sind gewisse Entscheidungen unvermeidlich, wie man im Foto sehen kann. So kann man kaum kein sinnvolles Programm schreiben, was ohne jede Verzweigung auskommt. Bisher sind wir in der Lage Programme zu schreiben, in denen eine Anweisung auf die andere folgt und diese auch in dieser Reihenfolge ausgeführt werden. Aber nur wenige Probleme lassen sich durch einen linearen Programmablauf kontrollieren. Man möchte beispielsweise einen bestimmten Teil des Programmes nur dann ausführen, wenn bestimmte Bedingungen zutreffen oder ein anderer Teil soll gegebenenfalls mehrmals ausgeführt werden. Dazu bietet jede Programmiersprache Kontrollstrukturen, die sich in zwei Kategorien unterscheiden lassen: Verzweigungen und Schleifen.

In einer Programmiersprache versteht man unter einer bedingten Anweisung, wie man Verzweigungen auch nennt, Codeteile, die unter bestimmten Bedingungen ausgeführt werden. Liegt die Bedingung nicht vor, wird dieser Code nicht ausgeführt. Anders ausgedrückt: Eine Verzweigung legt fest welcher von zwei (oder auch mehr) Programmteilen (Alternativen) in Abhängigkeit von einer (oder mehreren) Bedingungen ausgeführt wird. Bedingte Anweisungen und Verzweigungen werden in Programmiersprachen (ebenso wie die Schleifen) den Kontrollstrukturen zugerechnet, weil mit ihrer Hilfe ein Programm auf verschiedene Zustände, die sich aus Eingaben und Berechnungen ergeben, reagieren kann.

In dem abschließenden Beispiel dieses Kapitels geht es um Steuern. Wir schreiben ein Pythonskript, mit dem man sich aus dem zu versteuernden Einkommen die Steuern für 2010 berechnen lassen kann.

Die if-Anweisung

Die allgemeine Form der if-Anweisung sieht in Python wie folgt aus:

if bedingung1:
    anweisungen1
elif bedindung2:
    anweisungen2
else:
    anweisungen3
Falls die Bedingung "bedingung1" wahr ist, werden die Anweisungen "anweisungen1" ausgeführt. Wenn nicht, werden, falls bedingung2 wahr ist, die anweisungen2 ausgeführt. Falls weder die erste Bedingung (bedingung1) noch die zweite Bedingung (bedingung2) wahr ist, werden die Anweisungen nach dem else (anweisungen3) ausgeführt.

Beispiel Hundejahre

Kinder und Hundeliebhaber stellen sich häufig die Frage, wie alt ihr Hund wohl wäre, wenn er kein Hund sondern ein Mensch wäre. Landläufig rechnet man Hundejahre in Menschjahre um, indem man das Alter des Hundes mit 7 multipliziert. Je nach Hundegröße und Rasse sieht die Umrechnung jedoch etwas komplizierter aus, z.B.:

Das folgende kleine Beispielprogramm verlangt die Eingabe für das Alter des Hundes und berechnet nach obiger Regel das Alter in Menschenjahren:
age = input("Alter des Hundes: ")
print
if age < 0:
	print "Das stimmt wohl kaum!"
elif age == 1:
	print "entspricht ca. 14 Jahre"
elif age == 2:
	print "entspricht ca. 22 Jahre"
elif age > 2:
	human = 22 + (age -2)*5
	print "Menschenjahre", human

### 
raw_input('press Return>')
  

Wahr oder falsch

Leider ist es nicht in allen Dingen des Lebens so einfach zwischen Wahr und Falsch zu unterscheiden wie in Python:
Als "falsch" gelten


Alle anderen Werte betrachtet Python als "wahr".

Abgekürztes IF

C-Programmierer kennen folgende abgekürzte Schreibweise für das if-Konstrukt:

max = (a > b) ? a : b; 
als Abkürzung für:
if (a > b)
   max=a;
else
   max=b;  
  
In Python müssen sich C-Programmierer, was diese Schreibweise betriff, umgewöhnen. In Python formuliert man das vorige Beispiel wie folgt:
max = a if (a > b) else b;
  

Steuerrechner in Python

Das zu versteuernde Einkommen (zvE) wird zunächst einer Tarifzone zugeordnet. Dann lässt sich der Steuerbetrag (StB) bei Einzelveranlagung nach der entsprechenden Formel berechnen.1 Eine Python-Funktion zur Berechnung der Steuer aus dem Einkommentarif sieht nun wie folgt aus: (natürlich ohne Gewähr!!!)
def steuern(einkommen):
    """Berechnung der zu zahlenden Steuern fuer ein zu versteuerndes Einkommen von x"""
    if einkommen <= 8004:
        steuer = 0
    elif einkommen <= 13469:
        y = (einkommen -8004.0)/10000.0
        steuer = (912.17 * y + 1400)*y
    elif einkommen <= 52881:
        z = (einkommen -13469.0)/10000.0
        steuer = (228.74 * z +2397.0)*z +1038.0
    elif einkommen <= 250730:
        steuer = einkommen * 0.42 - 8172.0
    else:
        steuer = einkommen * 0.44 - 15694
    return steuer

Bei Ehegattensplitting lassen sich die Steuern mit folgendem Aufruf berechnen:
steuern = 2 * steuern(einkommen / 2)

Damit Sie Ihre Steuern auch 2013 mit Python berechnen können, finden Sie hier die Steuerberechung für 2013: (Ohne Gewähr)
def steuern2013(einkommen):
    """Berechnung der zu zahlenden Steuern 2013
    fuer ein zu versteuerndes Einkommen von x"""
    if einkommen < 8130:
        steuer = 0
    elif einkommen <= 13469:
        y = (einkommen -8004.0)/10000.0
        steuer = (912.17 * y + 1400)*y
    elif einkommen <= 52881:
        z = (einkommen -13469.0)/10000.0
        steuer = (228.74 * z +2397.0)*z +1014.0
    elif einkommen < 250731:
        steuer = einkommen * 0.42 - 8239.0
    else:
        steuer = einkommen * 0.45 - 15718
    return steuer

Footnotes

1 Corresponding German legislative text:
Einkommensteuergesetz, § 52 Anwendungsvorschriften
(41) § 32a Absatz 1 ist ab dem Veranlagungszeitraum 2010 in der folgenden Fassung anzuwenden:
 "(1) 1Die tarifliche Einkommensteuer bemisst sich nach dem zu versteuernden Einkommen. 2Sie beträgt vorbehaltlich der §§ 32b, 32d, 34, 34a, 34b und 34c jeweils in Euro für zu versteuernde Einkommen
1.
bis 8 004 Euro (Grundfreibetrag):
0;
2.
von 8 005 Euro bis 13 469 Euro:
(912,17 * y + 1 400) * y;
3.
von 13 470 Euro bis 52 881 Euro:
(228,74 * z + 2 397) * z + 1 038;
4.
von 52 882 Euro bis 250 730 Euro:
0,42 * x - 8 172;
5.
von 250 731 Euro an:
0,45 * x - 15 694.


An den Formeln zur Berechnung der Einkommenssteuer hat sich im Jahr 2013 nichts prinzipiell geändert. Im folgenden sind die Änderungen in Rot markiert:

1.
bis 8 354 Euro (Grundfreibetrag):
0;
2.
von 8 355 Euro bis 13 469 Euro:
(912,17 * y + 1 400) * y;
3.
von 13 470 Euro bis 52 881 Euro:
(228,74 * z + 2 397) * z + 1 038;
4.
von 52 882 Euro bis 250 730 Euro:
0,42 * x - 8 239;
5.
von 250 731 Euro an:
0,45 * x - 15 761.
3"y" ist ein Zehntausendstel des 8 004 Euro übersteigenden Teils des auf einen vollen Euro-Betrag abgerundeten zu versteuernden Einkommens. 4"z" ist ein Zehntausendstel des 13 469 Euro übersteigenden Teils des auf einen vollen Euro-Betrag abgerundeten zu versteuernden Einkommens. 5"x" ist das auf einen vollen Euro-Betrag abgerundete zu versteuernde Einkommen. 6Der sich ergebende Steuerbetrag ist auf den nächsten vollen Euro-Betrag abzurunden."