Zum Hauptinhalt springen
26P

7. Variablen

Einführung

Im vorhergehenden Kapitel haben Sie Quadrate gezeichnet, deren Seitenlänge im Programm fest eingebaut waren. Manchmal möchten Sie aber die Seitenlänge mit einem Eingabedialog einlesen. Dazu muss das Programm die eingegebene Zahl als Variable speichern. Variablen kann man sich wie eine Zügelbox vorstellen, welche mit einem Namen angeschrieben ist. Der Name beschreibt, was sich in der Box befindet, damit man den Inhalt später auch wieder findet.

Variable Zuweisen
Variable Zuweisen

Mit der Schreibweise anzahl = 12 wird eine solche Box erstellt. In Zukunft sagen wir, dass damit die Variable anzahl definiert und ihr einen Wert zugewiesen wird. Um den Inhalt der Box zu erhalten, kann der Name (ohne Anführungszeichen) geschrieben werden. Im Struktogramm werden alle Variablen umrahmt.

anzahl = 12
Ausgabe: anzahl
anzahl = 12

print(anzahl)

Mit Variablen rechnen

anzahl = 12
print(anzahl + 13)

Mehrere Variablen

anzahl = 12
gewicht = 100
print(f'{anzahl} Tafeln Schokolade sind {anzahl * gewicht} g schwer')
Formatierter Text: f'{anzahl} Tafeln'

Formatierter Text

formatierter Text f''

Variablenwerte lassen sich mit geschweiften Klammern {} in einen Text einfügen. Dazu muss zu Beginn des Textes ein kleines f (für "fromatierten Text") hinzugefügt werden.

name = 'Alfred'
print(f'Hallo {name}')

Überschreiben: Variablen neu Zuweisen

In einer Box kann immer nur ein einziges Objekt abgelegt werden. Wenn später also ein neuer Wert in bereits beschriftete Zügelbox gelegt wird, so wird der aktuelle Wert verdrängt. Künftig wird diese erneute Zuweisung Überschreiben einer Variable genannt.

Variablen überschreiben
Variablen überschreiben
anzahl = 12
print(f'Anzahl = {anzahl}')
anzahl = 7
print(f'Anzahl = {anzahl}')

Im obigen Beispiel wird der initiale Wert der Variable anzahl (12) mit dem neuen Wert 7 überschrieben.

Merke: Gültigkeitsbereich

Die Variable wird nicht rückwirkend verändert. Solange eine Variable nicht überschrieben wird, besitzt sie den aktuell zugewiesenen Wert.

Aufgabe

Was geschieht im untenstehenden Programm? Fügen Sie bei jeder Zeile mit einem print einen Kommentar hinzu mit:

  • ausgegebene Zahl

  • aktuell gespeicherter Wert in der Variable anzahl

anzahl = 2
print(anzahl) # => 2, anzahl=2
print(anzahl + 2)

anzahl = 7
print(anzahl)
print(anzahl + 2)

anzahl = anzahl + 3
print(anzahl)

anzahl = anzahl + 3
print(anzahl + 1)

anzahl = anzahl + 3
print(anzahl)
SSR
Gleichheitszeichen

Das Gleichheitszeichen hat also in Computerprogrammen nicht dieselbe Bedeutung wie in der Mathematik. Es ist keine Gleichung, sondern eine Variablendefinition oder eine Zuweisung.

Variablenwert einlesen, verändern und ausgeben

Im Programm kann mit Hilfe einer Eingabeboxen Werte eingelesen und einer Variable zugewiesen werden.

from turtle import *
speed(12)

anzahl = input('Wie viele Strecken soll die Spirale haben?')
anzahl = int(anzahl)

seite = 10
for i in range(anzahl):
forward(seite)
left(90)
seite = seite + 10
Eingabe

In Python ist das Resultat einer Eingabe immer ein Text. Ein Text kann aber in eine Zahl umgewandelt werden, so dass dann auch damit gerechnet werden kann.

  • Der Befehl int wandelt eine Eingabe in eine ganze Zahl um.

  • Der Befehl float wandelt eine Eingabe in eine Dezimalzahl um.

# Centimeter zu Meter
grösse = input('Wie gross bist du [cm]?')
grösse = int(grösse)
print(f'Ich bin {grösse / 100} m gross')
# Meter zu Centimeter
grösse = input('Wie gross bist du [m]?')
grösse = float(grösse)
print(f'Ich bin {grösse * 100} cm gross')

Eingabe - Struktogramm

Wird ein Wert über eine Eingabeaufforderung eingelesen, so wird dies im Struktogramm mit einem Parallelogramm angezeigt, wobei auch die Variable, welcher das Resultat zugewiesen wird, festgehalten wird:

grösse = Wie gross bist du [cm]?
Ausgabe: Ich bin grösse cm gross.
grösse = input('Wie gross bist du [cm]?')
print(f'Ich bin {grösse} cm gross')
Aufgabe 1 - BMI

Übersetzen Sie das folgende Struktogramm in Python Code:

grösse = Wie gross bist du [m]?
gewicht = Wie schwer bist du [kg]?
bmi = gewicht geteilt durch grösse mal grösse
Ausgabe: BMI: bmi
Hinweis

Was ist die Bedeutung des folgenden Fehlers?

TypeError: Can't multiply sequence by non-int of type 'str'

→ Der eingegebene Text kann nicht multipliziert werden - zuerst müssen gewicht und grösse in Dezimalzahlen (float) umgewandelt werden: gewicht = float(gewicht).

SSR
Aufgabe 2 – n-Eck

Nach Eingabe der Anzahl Ecken in einer Eingabebox soll die Turtle ein regelmässiges n-Eck zeichnen. Beispielsweise wird nach der Eingabe 8 ein 8-Eck gezeichnet. Den passenden Drehwinkel soll das Programm berechnen.

from turtle import *

SSR
Aufgabe 3

Nach der Eingabe eines Winkels in einer Eingabebox zeichnet die Turtle 30 Strecken der Länge 100, wobei sie nach jeder Strecke um den gegebenen Winkel nach links dreht. Experimentieren Sie mit verschiedenen Winkeln und zeichnen Sie schöne Figuren.

Mit speed(10) können Sie das Zeichnen beschleunigen.

from turtle import *
SSR