Eingaben mit input
Bisher liefen deine Programme immer gleich ab. Interessant wird es, wenn die Benutzerin oder der Benutzer mitbestimmen kann.
Im Flussdiagramm wird eine Eingabe als Parallelogramm dargestellt:
flowchart TD
S([Start]) --> I[/Eingabe: seite/]
I --> P[/Wiederhole 4 mal/]
P --> B1[forward seite]
B1 --> B2[right 90]
B2 --> P
P -- fertig --> E([Ende])
Formuliere Vermutungen, wie das folgende Programm abläuft. Führe es danach aus und gib verschiedene Werte ein.
Warum int(...)?
input() liefert immer einen Text, auch wenn du eine Zahl eingibst. Mit Texten kann die Turtle aber nicht rechnen.
Deshalb musst du umwandeln:
| Schreibweise | Ergebnis |
|---|---|
input("Frage: ") |
Text, z. B. "100" |
int(input("Frage: ")) |
ganze Zahl, z. B. 100 |
float(input("Frage: ")) |
Kommazahl, z. B. 100.5 |
int steht für integer (ganze Zahl), float für Kommazahl.
Entferne im Programm oben das int( und das zugehörige ), sodass nur noch seite = input("Bitte Seitenlänge eingeben: ") dasteht.
Führe es aus, gib 100 ein und lies die Fehlermeldung. Erkläre, was Python hier bemängelt.
Auflösung: Die Fehlermeldung verstehen
Python meldet etwas wie:
TypeError: can't multiply sequence by non-int of type 'float'
Sinngemäß: „Ich kann mit einem Text nicht rechnen."
Für Python ist "100" nicht die Zahl Hundert, sondern die Zeichenfolge aus einer Eins und zwei Nullen. Erst int("100") macht daraus die Zahl 100.
Aufgabe 1: Die Punktekette wird einstellbar
Die Punktekette aus der letzten Lektion kennst du bereits.
Modifiziere deine Lösung schrittweise:
a) Nach dem Start kann man eingeben, wie groß die Punkte sein sollen.
b) Danach kann man eingeben, wie weit die Punkte voneinander entfernt sein sollen.
c) Schließlich kann man auch eingeben, wie viele Punkte gezeichnet werden sollen.
Tipp 1: Eine Eingabe nach der anderen
Baue die Aufgabe wirklich in drei Schritten. Nach jedem Schritt sollte das Programm laufen, bevor du den nächsten angehst.
Beginne mit:
groesse = int(input("Wie groß sollen die Punkte sein? "))
und verwende groesse dann bei dot(...).
Tipp 2: Die Anzahl in der Schleife
Eine eingelesene Zahl darf auch in range stehen:
anzahl = int(input("Wie viele Punkte? "))
for i in range(anzahl):
...
from turtle import *
shape("turtle")
screensize(600, 300)
groesse = int(input("Wie groß sollen die Punkte sein? "))
abstand = int(input("Wie weit sollen die Punkte auseinander sein? "))
anzahl = int(input("Wie viele Punkte sollen es sein? "))
penup()
goto(-250, 0)
for i in range(anzahl):
dot(groesse)
forward(abstand)
Aufgabe 2: Die Treppe wird einstellbar
Modifiziere auch dein Treppen-Programm mit geeigneten Eingabeaufforderungen.
Überlege dabei selbst: Welche Werte sind hier sinnvoll einstellbar?
Tipp: Was kommt infrage?
Bei der Treppe bieten sich drei Größen an: die Anzahl der Stufen, die Stufenhöhe und die Stufenbreite.
Wenn Höhe und Breite gleich sein sollen, reicht eine einzige Eingabe für beides.
Aufgabe 3: Ein Beispiel ohne Turtle
Entwickle ein Programm, das Folgendes leistet:
Nach dem Start wird man aufgefordert, eine Zahl einzugeben. Nach der Eingabe wird das Quadrat der Zahl angezeigt.
Gibt man also zum Beispiel 5 ein, erhält man als Ausgabe 25.
zahl = int(input("Bitte eine Zahl eingeben: "))
print(zahl * zahl)
Alternativ mit dem Potenzoperator:
zahl = int(input("Bitte eine Zahl eingeben: "))
print(zahl ** 2)
Aufgabe 4: Vieleck nach Wunsch
In der letzten Lektion hast du regelmäßige Vielecke gezeichnet.
Entwickle ein Programm, das Folgendes leistet: Nach dem Start gibt man ein, was für ein Vieleck man haben möchte. Gibt man zum Beispiel eine 5 ein, wird ein regelmäßiges Fünfeck gezeichnet.
Tipp: Den Winkel berechnen lassen
Du kennst die Formel bereits:
Diese Rechnung darf Python für dich erledigen – schreibe sie einfach hin:
winkel = 360 / ecken
from turtle import *
shape("turtle")
screensize(400, 400)
ecken = int(input("Wie viele Ecken soll das Vieleck haben? "))
winkel = 360 / ecken
for i in range(ecken):
forward(70)
left(winkel)
Zusatzaufgabe: Auch Farben einlesen
Mit input kann man nicht nur Zahlen einlesen:
Fällt dir auf, dass hier kein int(...) steht?
Eine Farbe ist ein Text – und input liefert ohnehin einen Text. Es gibt also nichts umzuwandeln.
Probiere Farben wie red, blue, orange oder magenta aus.
Erweitere deine Lösungen zur Punktekette und zur Treppe so, dass man auch die Farbe wählen kann. Wie genau du das gestaltest, ist dir überlassen.