mitmario.dev

Variablen

Python Sandbox 4 Min Lesezeit 3 BeispieleLektion 1 von 8

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

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.

Ein Name bekommt einen neuen Wert
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.

Groß und klein sind zwei Namen
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, kostenlos

Zu 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.