python:turtle:programmverzweigungen
Dies ist eine alte Version des Dokuments!
Programmverzweigungen
Häufig ist es beim Programmieren notwendig, Teile des Programms nur unter bestimmten Bedingungen auszuführen. Um dies zu Realisieren benötigen wir Programmverzweigungen. Beim Programmieren unterscheidet man dabei drei verschiedene Arten von Verzweigungen:
- Die einseitige Alternative kann man wie folgt formulieren: „Wenn eine bestimmte Bedingung erfüllt ist, dann führe die Anweisung(-en) aus. In Python setzt man das durch die
if
-Anweisung um:
if <bedingung>: ... anweisungen ...
- Die zweiseitige Alternative kann man wie folgt formulieren: „Wenn eine bestimmte Bedingung erfüllt ist, dann führe die Anweisung(-en) aus, anderenfalls führe (andere) Anweisung(-en) aus.“ In Python setzt man das durch die
if-else
-Anweisung um:
if <bedingung>: ... anweisungen ... else: ... anweisungen ...
- Die Mehrfachverzweigung kann man wie folgt formulieren: „Wenn eine bestimmte Bedingung erfüllt ist, dann führe die Anweisung(-en) aus , wenn eine zweite Bedingung erfüllt ist, dann führe Anweisung(-en) aus, wenn eine dritte Bedingung erfüllt,… , anderenfalls führe (andere) Anweisung(-en) aus.“ In Python setzt man das durch die
if-elif-else
-Anweisung um:
if <bedingung1>: ... anweisungen ... elif <bedinging2>: ... anweisungen ... elif <bedinging3>: ... anweisungen ... ... else: ... anweisungen ...
Bemerkungen:
- Hinter dem Doppelpunkt rückt man den Quelltext ein (Tabulator). Alle Anweisungen die (um die selbe Tiefe) eingerückt sind, werden bei der entsprechenden Bedingung ausgeführt.
- Zum Formulieren der Bedingungen benötigen wir Vergleichsoperatoren:
Operator | Wirkung |
---|---|
> | größer |
< | kleiner |
>= | größer gleich |
⇐ | kleiner gleich |
== | gleich |
!= | ungleich |
Ausführlichere Informationen zum Thema findet ihr hier
Ein- und zweiseitige Alternative
Die folgenden drei Turtle-Programme sollen die drei Fälle demonstrieren:
# Beispiel einseitige Alternative from turtle import * eingabe = textinput("Frage","Soll ein Rechteck gezeichnet werden? (J/N)") # Zum Vergleich wird ein doppeltes = verwendet. if eingabe == "J": fd(200) right(90) fd(200) right(90) fd(200) right(90) fd(200) print("Das Rechteck wurde nur gezeichnet, wenn J eingegeben wurde.")
# Beispiel zweiseitige Alternative from turtle import * eingabe = textinput("Frage","Soll ein Rechteck oder ein Dreieck gezeichnet werden? (R/D)") # Zum Vergleich wird ein doppeltes = verwendet. if eingabe == "R": fd(200) right(90) fd(200) right(90) fd(200) right(90) fd(200) else: fd(200) right(120) fd(200) right(120) fd(200) print("Das Rechteck wurde nur gezeichnet, wenn R eingegeben wurde. In jedem anderen Fall wurde das Dreieck gezeichnet.")
# Beispiel Mehrfachverzweigung from turtle import * figur = textinput("Frage","Welche Figur soll gezeichnet werden? (Dreieck, Quadrat, Sechseck)") stiftfarbe = textinput("Frage","In welcher Stiftfarbe soll die Figur gezeichnet werden? (rot, grün, blau)") fuellfarbe = textinput("Frage","In welcher Füllfarbe soll die gezeichnet werden? (rot, grün, blau)") if stiftfarbe == "rot": pencolor("red") elif stiftfarbe == "grün": pencolor("green") else: pencolor("blue") if fuellfarbe == "rot": fillcolor("red") elif fuellfarbe == "grün": fillcolor("green") else: fillcolor("blue") pensize(5) if figur == "Dreieck": begin_fill() fd(200) right(120) fd(200) right(120) fd(200) end_fill() elif figur == "Quadrat": begin_fill() fd(200) right(90) fd(200) right(90) fd(200) right(90) fd(200) end_fill() else: begin_fill() fd(200) right(60) fd(200) right(60) fd(200) right(60) fd(200) right(60) fd(200) right(60) fd(200) end_fill()
Aufgabe
Teste die Beispielprogramme. Ergänze das Programm zur Mehrfachverzweigung um weitere Farben.
python/turtle/programmverzweigungen.1651056620.txt.gz · Zuletzt geändert: 2022/04/27 12:50 von lutz