Fachkonzept: Zuweisungen
Allgemeiner Aufbau einer Zuweisung
Wir haben in den vergangenen Code-Beispielen immer Anweisungen wie die folgende gesehen:
WIDTH = 800
oder auch
raumschiff.x = raumschiff.x + 20
Im ersten Fall steht vor dem Gleichheitszeichen die einfache
Programmvariable WIDTH
, im zweiten Beispiel das Attribut
x
des Objekts raumschiff
. Wir bezeichnen
beides im folgenden als Variablen, weil Python hier praktisch keine
Unterschiede macht.
Diese Zeilen sehen auf den ersten Blick aus wie eine mathematische Gleichung, aber Vorsicht: Am zweiten Beispiel kann man gut erkennen, dass diese "Gleichung" zumindest keine Lösung hat. Keine Variable aus dem Bereich der natürlichen oder reellen Zahlen kann den gleichen Wert haben wie sie selbst zuzüglich dem Wert 20.
Hier muss man sich bewusst werden, dass es beim Ablauf von Programmen, die aus der Abfolge von Befehlen bestehen, soetwas wie ein Vorher und ein Nachher gibt. Das ist in der "Rechenheft-Mathematik" nicht immer so.
Ein anschauliches Bild von Python-Variablen
Ein anschauliches Bild für Variablen (und Attributen) ist ein Schubladenschrank mit vielen beschrifteten Schubladen, in denen Werte (Zahlen, Texte, ...) abgelegt sind. Die Beschriftung einer Schublade entspricht dem Namen der Variable. Wenn nun eine Zuweisung der Form
<variablenname> = <term>
im Programm auftaucht, dann bedeutet das anschaulich: In die Schublade
mit dem Variablennamen soll ein neuer Inhalt gelegt werden. Was für ein
Inhalt das ist, wird durch den Teil der Zeile hinter dem
Gleichheitszeichen festgelegt, hier als term
bezeichnet.
Wichtig: Der Wert, der sich vorher in der Schublade befand, wird vor dem Hineinlegen des neuen Wertes in die Schublade gründlich entfernt, es befindet sich also in der Schublade dann ausschließlich der neue Wert.
Terme
Im einfachsten Fall besteht ein Term aus einem konstanten Wert,
etwa 42
.
meinetollevariable = 42
Im Gegensatz zur Mathematik in der Schule kann
ein Wert jedoch auch aus einer Zeichenkette bestehen, also z.B.
"Frosch".
lieblingstier = "Frosch"
Wichtig sind hier die Anführungszeichen.
Wir beschränken uns hier aber zunächst auf Terme, die eine (ganze oder reelle) Zahl darstellen. Statt einem fest vorgegebenen konstanten Wert kann ein Term auch aus einer anderen Variablen oder einer Rechenanweisung bestehen, die ihrerseits wieder konstante Werte und Variablen beinhalten kann. Bei Addition, Subtraktion und Multiplikation ist das sehr einfach, hier verwendet man die üblichen Rechenzeichen "+", "-" und "*" (einen zentrierten Punkt gibt es auf einer normalen Tastatur nicht, daher der Stern).
Einfache Beispiele:
dachhoehe = haushoehe
wert = 7 + 5 // wert = 12 wäre allerdings kürzer
gesamtpreis = produktpreis + lieferkosten
preis = listenpreis - ermaessigung
flaeche = breite * hoehe
brutto = 1.19 * netto
schrittnummer = schrittnummer+1
In unserem Bild mit dem Schubladenschrank veranschaulicht, passiert
hierbei folgendes: Wenn Variablen in den Termen auftauchen, wird in den
entsprechenden Schubladen der Wert nachgeschaut und die Rechnung
durchgeführt. Dann wird der berechnete Wert in die Schublade gelegt,
deren Name vor dem Gleichheitszeichen steht.
Für die letzte Zeile
schrittnummer = schrittnummer+1
bedeutet das: Angenommen, vor der Ausführung der entsprechenden Zeile
hätte Schrittnummer den Wert 42. Dann wird dieser Wert nachgeschaut und
der Wert 1 wird hinzuaddiert. Das Ergebnis ist 43. Die 42 wird jetzt
aus der Schublade entfernt und das Ergebnis 43 wird als neuer Wert in
die Schublade gelegt.
Auch kompliziertere Rechnungen mit mehreren Rechenzeichen und auch mit Klammern (Rechenregeln wie in der Mathematik) sind möglich:
umfang = 2 * (laenge + breite)
Zwei Arten von Division
Eine kurze Bemerkung zur Division: Wir alle haben in unserer Schulzeit zwei "Arten" von Division kennengelernt. In der Grundschule beginnt man zunächst mit der ganzzahligen Division. Dabei dividiert man zunächst nur Zahlen, bei der der Divident auch durch den Divisor ganzzahlig teilbar ist.15 : 5 = 3
Später lernt man die Division mit Rest:
17 : 5 = 3 Rest 2
Hier steht, anschaulich, dass die 5 dreimal in die 17 passt, und dann
noch zwei übrigbleiben.
Noch später lernt man dann Kommazahlen kennen, und die umständlich
Schreibweise mit Rest gerät (zumindest zunächst) in Vergessenheit.
17 : 5 = 3,4
Für die Programmierung sind beide Arten von Division wichtig und
deshalb gibt es tatsächlich auch insgesamt drei Rechenzeichen im
Zusammenhang mit der Division:
kommazahl = 17 / 5
# kommazahl hat danach den Wert 3,4
ganzzahliges_ergebnis = 17 // 5
# ganzzahliges_ergebnis hat danach den Wert von 3
rest = 17 % 5
# rest hat danach den Wert von 2