Zum Inhalt

Variablen

In der Informatik verarbeiten wir Informationen, insbesondere bei der Programmierung. Dazu müssen wir diese Informationen irgendwie „zwischenspeichern“.

Beispiele

  • wenn du jemandem mit einem Chatprogramm wie WhatsApp schreibst, ist z.B. Telefonnummer von deinem Gegenüber irgendwo als Variable zwischengespeichert, genauso die Nachricht während du sie eintippst.
  • bei einem Computerspiel die aktuelle Position der Spielfigur sowie alle anderen Zustände der Spielwelt irgendwo gespeichert sein.

Die Details davon überlassen wir dem Betriebssystem und der Programmiersprache, wir werden später auf die Frage zurückkommen, wo den genau diese Variablen in einem Rechner sind. Für uns ist momentan nur relevant, dass wir jegliche Informationen in einem Programm temporär zwischenspeichern können, und zwar mithilfe von Variablen.

Fachbegriff: Variable

Eine Variable erlaubt uns Werte in einem Programm abzuspeichern um sie später wiederzuverwenden. Jede Variable hat einen Namen, einen Typ sowie einen Wert. Eine Variable heisst so weil der Inhalt, also der Wert veränderlich ist.

Definition

Variablen definieren wir mit einem Namen, einem Gleichheitszeichen so- wie dem Wert der in der Variable gespeichert werden soll. z.B. wird nachfolgend eine neue Variable mit dem Namen temperatur erstellt und mit dem Wert 25 "befüllt". Der Datentyp von dieser Variable ist eine ganze Zahl (Integer, int).

temperatur = 25

Der Name einer Variable kann mehr oder weniger frei gewählt werden1.

Datentypen

Variablen können unterschiedliche Typen ("Arten") von Informationen beinhalten wie z.B. Zahlen oder Buchstaben.

Typ Python Name Beispiele
Ganze Zahl int -5, 0, 3, 605
Gleitkommazahl (Dezimalzahl) float -2.432, 5.234
Zeichenkette/Text/Buchstaben str "Abc", "Ein Wort"
Wahrheitswert (Boolean) bool True, False
Array list [4,2,3], ["Rot", "Blau"]

Bei Variablen vom Typ Zeichenkette muss bei der Definition der Wert mit Anführungszeichen (" oder ') umgeben sein.

Beispiel: Variablen definieren

Definiere einmal eine eigene Variable, mit einem freigewähltem Namen und Wert. Klicke danach auf den linken blauen Knopf. Wenn dein Programm keinen Syntaxfehler ausweist, kommt eine Meldung "Ohne Fehler beendet"

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Lösungsvorschlag
1
2
3
4
5
6
7
8
# Jahreszahl ist eine Dezimalzahl
jahr = 2024

# Dies ist eine Zeichenkette
schule = "KZO"

# Eine Gleitkommazahl
temperatur = 25.2

Variablen kombinieren

Variablen können verändert werden und zu neuen kombiniert werden. Dabei können sogar mathematische Operanden verwendet werden wie +, -, / und *, ähnlich wie bei einem Taschenrechner.

ersteVariable = 2
zweiteVariable = 7
dritteVariable = ersteVariable + zweiteVariable

Hierbei wurden drei Variablen definiert, wobei die dritteVariable aus einer Rechnung mit den zwei ersteren entsteht. Wie wissen wir nun was der Wert von dritteVariable ist?

Ausgabe

Wenn wir den Wert von einer Variable wissen wollen, können wir ihn mit dem Befehl print() in der Standardausgabe ausgeben. Wo sich die Standardausgabe genau befindet, ist abhängig von der Programmierumgebung. Dem Befehl print() können ein oder mehrere Werte (Argumente) übergeben werden, diese Werte werden danach für uns Benutzer sichtbar.

Beispiel: Ausgabe mit print()

Führe dieses Programm aus, um zusehen was bei print() passiert.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Wichtig: Gleichzeichen

Die Zuweisung in der Programmierung ist nicht dasselbe wie eine Gleichung in der Mathematik. In Python bedeutet z.B.

x = x + 1
dass die Variable x neuerdings den bisherigen Wert von x + 1 enthält. Wenn wir dies mathematisch betrachten würden, hätten wir die Gleichung \(x = x + 1\) welche aber gar keine Lösung hat!

Aufgaben

Rechteckfläche berechnen

Question

Schreibe ein Programm welches die Fläche von einem Rechteck mit Länge laenge und Breite breite berechnet. Dazu kannst du Variablen verwenden. Berechne zuerst für die Werte laenge=3 und breite=2. Gibt das Ergebnis mit dem print()-Befehl aus.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Lösung
laenge = 3
breite= 2
flaeche = laenge * breite
print(flaeche)

Mehrere Variablen

Question

Wir können Variablen sozusagen umbenennen, indem wir neue Variablen mit anderem Namen definieren. Dies wird aber gelegentlich etwas unleserlich. Versuche das folgende Programm zu verstehen und vorherzusagen was die Ausgabe ist.

1
2
3
4
5
6
7
8
9
a = "vier"
b = a
c = a
print(c)
c = "eins"
b = c
a = "zwei"
print(a)
print(c)
Lösung
vier
zwei
eins

Gleichseitiges Dreieck

Question

Variablen sind noch nützlich wenn wir gewisse Informationen mehrmals benötigen. Z.B. wenn wir ein gleichseitiges Dreieck zeichnen wollen mit einer bestimmten Seitenlänge. Die Seitenlänge muss dabei drei mal programmiert werden, dies ist fehleranfällig und hindert uns das Programm leicht zu adaptieren.

Mit Variablen können wir die Information zur Seitenlänge einmalig zwischenspeichern.

  1. Zeichne ein gleichseitiges Dreieck dessen Seiten die Länge 100 haben.
  2. Speichere nun die Seitenlänge in einer Variable z.B. seitenlaenge und verwende diese in deinem Programm
  3. Dein Programm kann nun leicht adaptiert werden um Dreiecke mit anderen Seitenlängen zu zeichnen, z.B. 50

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Lösung
from gturtle import *
makeTurtle()

seitenlaenge = 100
right(30)
forward(seitenlaenge)
right(120)
forward(seitenlaenge)
right(120)
forward(seitenlaenge)
right(120)

Eingabe

Analog zur Ausgabe mi print() gibt es auch eine Eingabe. Dadurch können wir als Benutzer dem Programm Informationen übergeben, während es schon läuft. Dies ist eine grundlegende Funktion von Programmen, jedes mal wenn ihr den Rechner benutzt, verwendet ihr im Prinzip diese Eingabe.

Mit dem Befehl input() kann das Programm "pausiert" werden bis eine Eingabe durch den Benutzer geschieht. Die eingegebenen Daten können nacher sehr praktisch in einer Variable gespeichert werden.

Probier dies gleich einmal aus:

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Aufgaben

Frageprogramm

Question

Arbeite mit der Person neben dir. Überlege dir eine Frage, die du noch nicht über sie weisst. Überlege dir unter welcher Variable du die Information abspeichern möchtest. Gib danach die Information wieder aus.

Am Schluss gibst du dieser Person deinen Rechner und lässt sie diese Fragen beantworten.

Erweiterung: Frage mehr als nur eine Frage und fasse die Antworten am Schluss zusammen. Du kannst mehrere Zeichenketten aneinander hängen mit einem +.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Lösung
name = input("Was ist dein Name?")

# Variante: Nur eine Frage
wohnort = input("Wo wohnst du")


# Auf einzelnen Linien ausgegeben...
print("Der Wohnort von")
print(name)
print("ist")
print(wohnort)

# Erweiterung: mehrere Fragen
lieblingsfarbe = input("Welches ist deine Lieblingsfarbe?")

print(name + " wohnt in " + wohnort)
print(lieblingsfarbe + " ist die Lieblingsfarbe von " + name)

Rechteckumfang berechnen

Question

Schreibe ein Programm welches den Umfang von einem Rechteck mit Länge laenge und Breite breite berechnet. Dazu kannst du Variablen verwenden. Berechne zuerst für die Werte laenge=3 und breite=2. Gibt das Ergebnis mit dem print()-Befehl aus.

Erweiterung: Frage nun den Benutzer nach der Länge und Breite. Dabei muss die Eingabe aber noch in ein Zahl umgewandelt werden, verwende dazu die Funktion int(). Mit int() kann eine als Text repräsentierte Ziffernfolge (ASCII) in eine Zahl (Dezimalsystem) umgewandelt werden: z.B. zahl = int("123")

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Lösung
laenge = 3
breite= 2
umfang = 2 * laenge + 2 * breite
print(umfang)
print("Umfangrechner: Bitte gib zwei Zahlen ein")
laenge = int(input("Länge:"))
breite = int(input("Breite:"))
umfang = 2 * laenge + 2 * breite

print(umfang)

  1. Gewisse Einschränkungen gibt es schon, z.B. darf der Name nicht mit einer Zahl oder gewissen Sonderzeichen beginnen wie ?,.!-/*+(){}[] usw. Zudem empfiehlt es sich nicht die reservierte Schlüsselwörter (z.B. int) der Pythonsprache zu verwenden. dies ist zwar teilweise erlaubt, aber eben, nicht wirklich empfehlenswert.