1: Variablen

Variablen sind "Speicherorte" für Daten in einem Programm. Sie sind eine Möglichkeit, Informationen Namen zu geben, um sie später zu erreichen.

Jede Variable hat einen Namen; ein Beispiel für einen Variablennamen ist meineGluecksZahl. Um Informationen in einer Variable zu speichern, nutzt man das Gleich-Zeichen in folgendem Kontext:

«der Variablenname» = «der zu speichernde Wert»
(Wir nutzen die «doppelten spitzen Klammern» in diesem Kurs, wie oben, um spezielle Teile eines Ausdrucks zu markieren.)

Zum Beispiel speichert die Python-Zeile

meineGluecksZahl = 13
den Wert 13 in der Variable meineGluecksZahl. Danach wird Python jedesmal, wenn du den Variablennamen meineGluecksZahl schreibst, den gespeicherten Wert nutzen.

Hier ist ein kleines Beispiel, in dem Variablen genutzt werden. Es hat mehr als eine Code-Zeile: Python wird zunächst die erste Zeile ausführen, dann die zweite, und so weiter, bis die letzte Zeile erreicht wurde. Klicke den Programm ausführen-Button, um zu sehen, was es macht.

Beispiel
Beispiel zur Variablennutzung.

Schau dir die 5 Zeilen des Programms an und wie sie zur Ausgabe passen. Wie du sehen kannst, behält meineGluecksZahl den Wert 13 in den ersten beiden print-Befehlen, dann wird der Wert in 7 geändert.

Hier haben wir auch den Plus-Operator (+) eingeführt, der zwei Zahlen addiert. Genauso gibt es auch Operatoren für Subtraktion (-), Multiplikation (*) und Division (/). Wir werden uns diese noch genauer angucken.

Du kannst den Speicherzustand des Computers mit Papier und Bleistift simulieren, indem du den Inhalt der Variablen in einer Tabelle verfolgst. Hier ist ein Beispiel; denke daran, dass * in Python Multiplikation bedeutet.

Ziel: bestimme den Wert der Variablen am Ende des Programms.

first = 2
second = 3
third = first * second
second = third - first
first = first + second + third
third = second * first
Idee: Wir nutzen eine Tabelle, um den Zustand der Variablen zu verfolgen. Scrolle nach unten, um das endgültige Ergebnis zu sehen.

Befehl Werte nach dem Befehl
first second third
first = 2 2
second = 3 2 3
third = first * second 2 3 6
second = third - first 2 3 4 6
first = first + second + third 2 12 4 6
third = second * first 12 4 6 48

Am Ende des Programms ist entsprechend 12 der Wert von first, 4 der Wert von second und 48 der Wert von third.

So eine Tabelle mit Bleistift auf Papier zu zeichnen ist immer eine gute Idee und hilfreich, um Code zu verstehen und zu schreiben. Wir haben auch ein automatisiertes Python3 Visualisierungshilfsmittel um virtuell Programme wie dieses Schritt für Schritt auszuführen (siehe auch den Link im Menü oben). Hier ist wie es aussieht, wenn wir das selbe Programm am Visualisierer laufen lassen. Nutze den Forward>-Knopf oder drücke die Pfeiltaste auf der Tastatur für einen Schritt vor (oder zurück). Beachte, wie sich die Variablen ändern, während jede Zeile ausgeführt wird. Hier ist eine kleine Übung zu Variablen:

Kurzübung: x Marks the Spot

Wie ist der Wert von x nach der Ausführung dieses Programms?

x = 10
x = x + x
x = x - 5
Richtig!

Zwei häufige Fehler

Wenn du auf eine Variable in Python zugreifen willst, die nicht definiert wurde, entsteht ein Fehler.

Beispiel: Eine undefinierte Variable

Wie du sehen kannst, kommt eine Fehlermeldung NameError: name 'trouble' is not defined. Manchmal entsteht dieser Fehler auch aus einfachen Tippfehlern: wenn du erst die Variable beispiel=32 definierst, und dann versuchst print(beispeil) auszuführen, wird der selbe Fehler erzeugt.

Ein anderer Fehler entsteht beim Vertauschen der beiden Seiten in einem ' = Ausdruck'.

Beispiel: SyntaxError: can't assign to literal

Die erste Zeile funktioniert problemlos, aber die zweite Zeile verursacht einen Fehler: Python denkt, die Zeile 4 = x möchte den Wert von 4 ändern, was aber nur mit Variablen möglich ist, zu denen 4 nicht gehört. Auch wenn A = B und B = A in der Mathematik das Gleiche ist, bedeutet es in der Programmierung etwas anderes.

Übung

Hier kommt eine erste Aufwärmübung zum Umgang mit Variablen.

Programmierübung: Python-Anatomie

Schreibe ein Code-Fragment (ein kleines Stück eines Python-Programms), das Köpfe, Schultern, Knie und Zehen auf einer Party zählt. Eine Variable people ist schon bekannt, und die Anzahl der Personen auf der Party ist darin bereits gespeichert. Dein Code muss 4 Variablen definieren: heads (Anzahl der Köpfe), shoulders (Anzahl der Schultern), knees (Anzahl der Knie) und toes (Anzahl der Zehen). Dein Programm muss keine Ausgabe erzeugen. Für einen Tipp hier klicken

Code-Durcheinander

Der nächste Teil dieser Lektion ist eine neue Art von Programmieraufgabe, in der du nicht eine einzige Zeile Code tippen musst. Das korrekte Programm liegt schon vor, allerdings sind die Code-Zeilen in die falsche Reihenfolge geraten. Deine Aufgabe ist es, die Code-Zeilen an die richtige Stelle zu schieben.

Sortierübung: Geschwindigkeitsberechnung
Du fährst in einem Radrennen mit, in dem es einen Berg hinauf (uphill) und wieder hinunter (downhill) geht. Es sind vier Variablen vordefiniert: uphillDistance und downhillDistance geben die Strecke (in km) beider Teile des Rennens an und uphillTime und downhillTime die zugehörige Zeit (in Minuten). Schreibe ein Programm, das die Durchschnittsgeschwindigkeit (in km/min) über das ganze Rennen angibt.
Die Codezeilen kannst du per Drag'n'Drop verschieben.
Wenn du Problem hast, klicke hier für einen Hinweis
  • totalDistance = uphillDistance + downhillDistance
  • print(averageSpeed)
  • averageSpeed = totalDistance / totalTime
  • totalTime = uphillTime + downhillTime

Variablen vertauschen

Dies ist die letzte Übung in diesem Kapitel.

Programmierübung: Variablen vertauschen
Schreibe ein Programm, das die Werte zweier Variablen vertauscht. Es sind zwei Variablen x und y vordefiniert, die numerische Werte enthalten. Nach der Ausführung des Programms muss der alte Wert von x in der Variable y zu finden sein und der alte Wert von y in der Variable x. Dein Programm muss keine Ausgabe erzeugen.
Die einfachste Lösung ist kurz, aber schwer zu finden. Klicke auf die Hinweise, wenn du sie lesen möchtest.
Hinweis 1

Du benötigst hier keine arithmetische Operatoren (+-*/) um das Problem zu lösen. Du brauchst nur Variablen und den =-Operator. Du kannst weitere Variablen definieren, wenn du möchtest.
Hinweis 2

Wir haben zwei Ziele: der Originalwert von y soll in x stehen und der Originalwert von x soll in y stehen. Wenn wir nur das erste Ziel hätten (also nur von x nach y kopieren), könnten wir einfach

x = y
benutzen. Doch wie können wir beide Ziele erreichen?
Hinweis 3
Das folgende Programm sieht erfolgversprechend aus:

x = y
y = x
Aber es hat ein kleines Problem. Nehmen wir als Beispiel an, x wäre 10 und y wäre 99. Wenn wir das obige Zwei-Zeilen-Programm nutzen, wird nach der ersten Zeile der Wert beider Variablen x und y 99 sein. Die zweite Zeile hat dann keinen Effekt. Du kannst diese Zeilen unten eingeben und selber gucken, was passiert. Wie können wir den Originalwert von x irgendwo speichern, um danach y zu setzen?
Hinweis 4
Deine erste Zeile sollte etwas wie xOriginal = x enthalten, damit der Originalwert von x erhalten wird. Dann kannst du x = y setzen. Am Ende musst du nur noch y auf den Originalwert von x stellen.
Hinweis 5
Hier findest du einen Wikipediaartikel zu diesem Thema. Dabei wird auch eine arithmetische Lösung gezeigt, die jedoch nur mit Zahlen, nicht mit Texten (oder anderen komplexen Konstrukten) funktioniert.

Wenn du mit dieser Übung fertig bist, bist du bereit für den nächsten Schritt. Um zur nächsten Lektion zu kommen, klicke unten auf den "Weiter mit"-Button.