95
Grafik-Programm mit Dialog
>>> float("3.06")
3.06
>>> float(4.99) # nicht sehr sinnvoll, da 4.99
# selbst schon Kommazahl ist.
4.99
>>> float("zwei")
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
float("zwei")
ValueError: could not convert string to float: zwei
>>>
Aha! Wörter kann
float()
nicht in Kommazahlen umwandeln!
Jetzt weißt du schon genug, um diesen Programmentwurf zu codieren:
Programmentwurf: Dialog mit Taschengeldberechnung
Ausgabe: “Hallo schönen Tag heute!“
user
Ö
Eingabe: “Wie heißt du?“
Ausgabe: “Fein, dich hier zu sehen,“ user
geld
Ö
Eingabe: “Wie viel Euro Taschengeld bekommst du monatlich?“
geld
Ö
Kommazahl(geld)
geldProJahr
Ö
geld * 12
Ausgabe: “Wow! Das sind ja“ geldProJahr “€ im Jahr!“
Aufgabe:
Codiere diesen Programmentwurf in Python, speichere das Pro-
gramm als
dialog02.py
ab und teste es, bis es korrekt läuft!
Grafik-Programm mit Dialog
Wir wollen jetzt noch unser Quadrat-Programm so erweitern, dass es vor
der Zeichnung den Benutzer fragt, wie lang die erste Quadratseite sein soll
und um wie viel sie sich in einem Schritt ändern soll.
Wir brauchen dazu Dialoge, mit denen wir den Namen
startseite
und
aenderung
Zahlenwerte zuweisen können. Das Turtle-Modul stellt dafür
einen grafischen Eingabedialog
numinput()
bereit. Probieren wir den
gleich aus:
96
Namen
Kapitel
3
>
Mach mit:
>>> from turtle import *
>>> reset()
>>> startseite = numinput("6 gedrehte Quadrate",
"Wie lang ist die erste Seite?")
numinput()
benötigt zwei Strings als Argumente: Der erste ist der Titel des
Popup-Fensters, der zweite ein »Prompt«, wie wir es schon mehrmals ge-
habt haben. Der erscheint als Text im Fenster.
Du kannst nun eine Zahl eingeben und auf den OK-Knopf drücken! Das
Eingabedialogfenster geht zu. Was ist nun der Wert von
startseite
?
>>> startseite
120.0
Du siehst, der Eingabedialog hat eine Kommazahl geliefert. Somit ersparen
wir uns die Umwandlung von einem String in eine Zahl.
Hast du Sorge, dass die Frage für den Benutzer des Programms vielleicht
nicht klar genug gestellt ist? Was könnten wir dagegen machen? Eine et-
was längere Erklärung? Fragen wir Clara!
97
Grafik-Programm mit Dialog
Clara Pythias Python-Special
In Python kann man auch mehrzeilige Strings verwenden: Man muss da-
zu die Strings nur beiderseitig mit einer Folge von drei Anführungszei-
chen begrenzen.
>
Mach mit:
>>> mehrzeilig = """Ein String mit
zwei Zeilen."""
Wenn du am Ende der ersten Zeile auf
(¢)
drückst, geht die Schreib-
marke einfach nur in die nächste Zeile – du kannst in der nächsten,
übernächsten usw. Zeile weiterschreiben, so lange, bis du den String mit
drei weiteren Anführungszeichen abschließt. Danach kann er ebenso
mehrzeilig, wie er eingegeben wurde, ausgegeben werden:
Gruppen von drei Anführungszeichen können mehrzeilige Strings be-
grenzen.
Mit dieser Technik lassen sich oft viele print-Anweisungen mit her-
kömmlichen Strings durch eine einzige
print
-Anweisung ersetzen.
Aber auch für das
prompt
-Argument in
numinput()
kannst du mehr-
zeilige Strings verwenden.
98
Namen
Kapitel
3
Probieren wir das auch noch rasch aus:
>
Mach mit:
>>> from turtle import *
>>> reset()
>>> prompt =
"""Dieses Programm zeichnet sechs
gegeneinander verdrehte Quadrate.
Wie lang ist die Seitenlänge des ersten Quadrats?"""
>>> startseite = numinput("6 gedrehte Quadrate", prompt)
Nun kannst du daran gehen, für die
startseite
und die
aenderung
nu-
merische Eingabedialoge in das Programm
quadrate_arbeit.py
einzu-
bauen.
>
Starte IPI-T
URTLE
G
RAFIK
und öffne
quadrat_arbeit.py
in einem
Editor-Fenster.
>
Füge Eingabedialoge mit schön erdachten Titeln und Prompts als ers-
ten Programmteil ein. Sie sollten so funktionieren, wie wir das eben
interaktiv ausprobiert haben.
Noch ein Schmankerl gefällig? Das Turtle-Modul hat auch eine Funktion
title()
, mit der man den Titel des Grafik-Fensters einstellen kann. Damit
sieht dein Programm schon fast professionell aus:

Get Python für Kids now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.