Bedingte Anweisungen
Manche Entscheidungen sind unvermeidlich
Zu bestimmten Zeiten sind gewisse Entscheidungen unvermeidlich, wie man im Foto sehen kann. So kann man kaum ein sinnvolles Programm schreiben, welches 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: anweisungen3Falls 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.:
- Ein einjähriger Hund entspricht in etwa einem 14-jährigen Menschen
- 2 Jahre eines Hundes entsprechen 22 Jahre eines Menschens.
- Ab dann entspricht ein Hundejahr jeweils 5 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
- numerische Null-Werte(0, 0L, 0.0, 0.0+0.0j),
- der boolschen Wert False,
- leere Zeichenketten,
- leere Listen, leere Tupel,
- leere Dictionaries.
- sowie der spezielle Wert None.
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- Erste Zone (Grundfreibetrag): bis 8004,- € fällt keine Steuer an
- Zweite Zone: zvE von 8.005 € bis 13.469 €
StB = (912,17 * y + 1400)*y
Für y gilt:
y = (zvE - 8004) / 10000 - Dritte Zone: zvE von 13470 € bis 52881 €
StB = (228,74 * z + 2397)*z
Für z gilt:
z = (zvE - 13469) / 10000 - Vierte Zone: zvE von 52882 € bis 250730 €
StB = 0,42 * zvE - 8172 - Fünfte Zone: zvE ab 250731 €
StB = 0,44 * zvE - 15694
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 steuerBei 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. |