Abschnitt 2 · Lektion 1
Variablen
Der Preis der Brötchen steigt von 0,45 auf 0,49 Euro. Wenn 0.45 an dreißig Stellen im Programm
steht, sucht man jetzt jede einzelne und hofft, dass keine fehlt. In Abschnitt 1 stand jede Zahl
direkt da, wo sie gebraucht wurde. Bei drei Zeilen war das in Ordnung. Bei dreißig wird es
ungemütlich.
Die Lösung ist so alt wie das Programmieren selbst. Man gibt dem Wert einen Namen und benutzt ab dann nur noch den Namen.
Ein Name für einen Wert
kisten = 4
flaschen_pro_kiste = 20
flaschen = kisten * flaschen_pro_kiste
print("Flaschen im Lager:", flaschen) kisten = 4 legt eine Variable (variable) an. Das ist ein Name, hinter dem ein Wert steht. Von
da an kann man überall kisten schreiben, wo man sonst 4 geschrieben hätte. In der dritten Zeile
schaut Python erst nach, was hinter kisten und flaschen_pro_kiste steht, bevor es 4 * 20
rechnet und dem Ergebnis den Namen flaschen gibt.
So erklärt sich das Programm von selbst. 4 * 20 sagt nichts, kisten * flaschen_pro_kiste sagt
alles. Und wenn morgen fünf Kisten im Lager stehen, änderst du eine einzige Zahl in der ersten
Zeile. Der Rest stimmt dann von allein.
Das Gleichheitszeichen ist keine Gleichung
Das = sieht aus wie im Matheheft, meint aber etwas völlig anderes. In Mathe heißt x = 4, dass x
4 ist, und zwar für immer. In Python heißt kisten = 4, dass der Name kisten den Wert 4 bekommt.
Ab jetzt und bis auf Weiteres. Das nennt man Zuweisung (assignment), und am besten liest man das
Zeichen auch als „bekommt“.
Eine Zuweisung läuft immer in derselben Reihenfolge ab. Erst wird rechts ausgerechnet, was da steht, dann bekommt der Name links das Ergebnis. Damit ergibt auch eine Zeile Sinn, die im Matheheft Unsinn wäre.
kisten = 12
print("Am Morgen:", kisten)
kisten = kisten - 5
print("Nach dem Verkauf:", kisten)
kisten = kisten + 20
print("Nach der Lieferung:", kisten) kisten = kisten - 5 ist keine Gleichung, die nie aufgeht. Rechts wird genommen, was gerade hinter
kisten steht, also 12, und davon werden 5 abgezogen. Links bekommt kisten das Ergebnis. Danach
ist der alte Wert weg, und kisten steht für 7. Bei der nächsten Zuweisung wird aus der 7 eine 27.
Ein Name, der mit seinem eigenen alten Wert weiterrechnet, kommt in diesem Kurs ständig vor, weil jeder Zähler, jede laufende Summe und jeder Kontostand so funktioniert. Wie sich der Wert Schritt für Schritt ändert, kannst du im Reiter Debug aufzeichnen.
Weil Python von oben nach unten arbeitet, zählt auch die Reihenfolge. Ein Name muss einen Wert
bekommen haben, bevor man ihn benutzt. Wenn print(kisten) über kisten = 12 steht, kennt Python
den Namen in dem Moment noch nicht.
Gute Namen
Bei Namen lässt dir Python viel Freiheit, aber nicht jede. Ein Name besteht aus Buchstaben, Ziffern
und dem Unterstrich _. Mit einer Ziffer anfangen darf er nicht. zweier_pack geht, 2er_pack
nicht. Python meldet dann SyntaxError: invalid decimal literal, weil es am Anfang eine Zahl
erwartet. Leerzeichen gehen auch nicht. anzahl kisten = 3 sind für Python zwei Namen
nebeneinander, und das ergibt keinen Satz.
Für Namen aus mehreren Wörtern gibt es eine Gewohnheit, an die sich fast alle Python-Programme
halten. Alles klein, die Wörter mit Unterstrich verbunden. flaschen_pro_kiste, anzahl_personen,
preis_brutto. Python verlangt das nicht. Wer sich trotzdem daran hält, schreibt Code, den andere
sofort lesen können.
Eine echte Regel gibt es bei Groß- und Kleinschreibung. Python unterscheidet zwischen beiden.
anzahl = 5
print(Anzahl) Für Python sind anzahl und Anzahl zwei völlig verschiedene Namen, und den zweiten gibt es nicht.
Die Meldung kennst du aus Lektion 1.4:
NameError: name 'Anzahl' is not defined. Did you mean: 'anzahl'? Python hat sogar gemerkt, was du
wahrscheinlich gemeint hast.
Dieser Kurs hat dazu eine eigene Gewohnheit, nämlich deutsche Namen ohne Umlaute. Also groesse
statt größe und anzahl_tueten statt anzahl_tüten. Umlaute in Namen würde Python sogar
annehmen. Aber Code wandert. Auf fremde Rechner, in E-Mails, zu Leuten mit einer englischen
Tastatur, und dort ist jedes ü eine kleine Zumutung. Deutsch bleiben die Namen trotzdem, weil man
dann auf einen Blick sieht, was von Python kommt (print, englisch) und was von dir.
Und noch etwas. Die Wörter, die Python selbst mitbringt, sind als Namen tabu oder zumindest unklug.
print, input, len und ein paar Dutzend andere gehören Python. Wer print = 5 schreibt, hat
danach kein print mehr, und die Fehlermeldung, die dann kommt, verwirrt jeden.
Zum Mitnehmen
preis = 2.49 liest man: preis bekommt 2.49. Das Gleichheitszeichen in Python vergleicht nichts, es verteilt Namen.
Jetzt du
Basis Konto, kostenlosZu dieser Lektion gehört eine Aufgabe. Du schreibst den Code selbst, und nach jedem Lauf sagt dir eine Prüfliste, was schon stimmt.
Dafür brauchst du das Basis Konto. Es kostet nichts, und ein Passwort gibt es auch nicht.
In diesem Kurs läuft dein Code auf einem Server. Dafür hat das Basis Konto 1 Stunde im Monat, mehr Zeit gibt es mit dem Premium Konto.
Was in dieser Lektion steckt
-
Artikel mit 3 Beispielen zum Ausprobieren
Steht hier, ohne Konto lesbar.
-
Aufgabe, dein Code läuft auf einem Server
Öffnet sich mit dem Basis Konto.