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.
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
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'
Ü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.
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.
Die Variable wird nicht rückwirkend verändert. Solange eine Variable nicht überschrieben wird, besitzt sie den aktuell zugewiesenen Wert.
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)
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
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 = input('Wie gross bist du [cm]?')
print(f'Ich bin {grösse} cm gross')
Übersetzen Sie das folgende Struktogramm in Python Code:
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)
.
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 *
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 *
7. Variablen