Bedingte Anweisungen
Manche Entscheidungen sind unvermeidlich
Zu bestimmten Zeiten sind gewisse Entscheidungen unvermeidlich, wie man im Foto sehen kann. Man kann kaum ein sinnvolles Programm schreiben, was ohne jede Verzweigung auskommt.
In einer Programmiersprache versteht man unter einer bedingten Anweisung, wie man Verwzeigungen auch nennt, Codeteile, die unter einer bedingten Bedingung 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 bedingung1 noch bedingung2 wahr ist, werden die Anweisungen "anweisungen3" ausgeführt.
Beispiel Hundejahre
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
- 2 Jahre entspricht einem 22-jährigen Menschen.
- Ab dann entspricht ein Hundejahr in etwa 5 Menschenjahre.
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 steuer
Bei Ehegattensplitting lassen sich die Steuern mit folgendem Aufruf berechnen:
steuern = 2 * steuern(einkommen / 2)
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. |
Die Priesterinnen von Delphi hießen nach der Schlange Pythien.