In diesem Blog zeigen wir unterschiedliche Operatoren zum Auswerten einer Bedingung. Darüber hinaus können Bedingungen auch verknüpft werden.
Inhaltsverzeichnis
Einordnung
Kursblog L8T2: Bedingungen und ihre Möglichkeiten
Dieser Blog wird vom IAIP gratis zur Verfügung gestellt. Der Blog ist ein Bestandteil des Kurses K103 «Programmieren mit Turtle Graphics» und gehört zur Lektion 8, Themenblock 2 (L8T2).
Der Kurs führt dich durch die einzelnen Blogs, enthält Zusatzmaterialien und Quizze zur Lernkontrolle. Der Kurs hat eine Kursgebühr von CHF 50.- Mit dem Einschreiben zum Kurs hilfst du mit, dass solche Blogs auch zukünftig noch gratis zur Verfügung gestellt werden können.
Rückblick
Im letzten Themenblog (siehe K103: bedingte Anweisungen) haben wir bedingte Anweisungen kennengelernt. Bedingte Anweisungen sind Befehle, welche dann ausgeführt werden, wenn eine gewisse Bedingung erfüllt ist.
Benutz haben wir hierzu die if Anweisung. Die if Anweisung gehört zu den sogenannten Kontrollstrukturen, denn sie wird benutzt, um den Programmablauf in einem Python-Programm zu steuern. Damit können wir zur Laufzeit entscheiden, ob bestimmte Programmteile ausgeführt werden sollen oder nicht. Sie besteht aus 3 Teilen:
- Das Schlüsselwort if sagt dem Computer, dass es sich bei den nachfolgenden Befehlen um bedingte Anweisungen handelt.
- Direkt anschliessend folgt die Bedingung, welche der Computer überprüfen soll. Diese wird ausgewertet, und falls sie erfüllt ist (und nur dann) wird ein spezieller Codeabschnitt ausgeführt.
Diese ersten zwei Teile bezeichnet man auch als Kopf des Kommandos. Der endet in Python mit einem Doppelpunkt!
- Der Codeabschnitt (Rumpf) seinerseits kann aus einer oder mehreren Anweisungen besteht. Dies sind die eigentlichen (bedingten) Anweisungen. Die Anweisungen sind eingerückt, und in der Regel steht pro Programmzeile eine Anweisung.
In diesem Blogbeitrag widmen wir uns der zu überprüfenden «Bedingung» etwas ausführlicher. Bis anhin haben wir nämlich nur überprüft, ob zwei Sachen (zwei Objekte) gleich sind. Ob also Beispielsweise der Inhalt der Variable zustand der Zeichenfolge «gut» entspricht. Genutzt haben wir hierzu zwei Gleichheitszeichen == .
if zustand == "gut": # Anweisungen
Wir können aber auch andere Vergleiche anstellen. Beispielsweise ob ein Wert grösser, kleiner oder einfach nur ungleich wie ein anderer Wert ist. Darüber hinaus können wir auch noch mehrere Bedingungen miteinander verknüpfen.
Schwerpunkte:
- Vergleichsoperatoren ==, !=, <, >, <=, >=
- Wahrheitswerte True und False
- Verknüpfung mehrerer Bedingungen mittels and und or
Ergänzung
Vergleichsmöglichkeiten
Einführendes Beispiel
Wir können in Python ganz viele unterschiedliche Vergleiche anstellen. Betrachten wir hierzu ein kleines Beispielprogramm, welches den Benutzer nach seinem Alter fragt und dann anschliessend, je nach Alter, unterschiedliche Kommentare ausgibt.
from turtle import * alter = numinput("Alter", "Bitte gib dein Alter ein: ") if alter == 50: write("Gratuliere. Du bist ein halbes Jahrhundert alt!") if alter < 50: write("Das ist aber ganz schon jung!") if alter > 50: write("Das ist aber ganz schon alt!") exitonclick()
Das Programm ist fast schon selbstsprechend. Die erste if Anweisung (Zeile 5) folgt der bekannten Form und vergleicht den Inhalt der Variable alter mit der Zahl 50. Hier nutzen wir den Vergleichsoperator == . Die zweite if Anweisung (Zeile 7) untersucht nun, ob das Alter der Person kleiner (<) wie 50 Jahre ist. Die dritte if Anweisung (Zeile 9) anschliessend noch, ob das Alter grösser (>) als 50 Jahre ist.
Einen Überblick der sogenannten Vergleichsoperatoren verschafft die nachfolgende Tabelle.
== | Gleichheit |
!= | Ungleichheit |
< | kleiner als |
> | grösser als |
<= | kleiner gleich als |
>= | grösser gleich als |
All diese Vergleiche haben eine gemeinsame Eigenschaft: Entweder sie stimmen, oder sie stimmen nicht. Und weil Python englische Wörter verwendet, bedeutet «wahr» in Python True und «falsch» wird False genannt.
2 < 3 | 2 ist kleiner als 3 | True |
3 < 3 | 3 ist kleiner als 3 | False |
2 > 3 | 2 ist grösser als 3 | False |
3 <= 3 | 3 ist kleiner oder gleich 3 | True |
4 >= 10 | 4 ist grösser oder gleich 10 | False |
4 != 10 | 4 ist ungleich 10 | True |
Um dich mit den Vergleichsoperatoren etwas vertraut zu machen, kannst du auch einfach Vergleiche in die Python Shell eingeben. Python wertet die Ausdrücke dann für uns aus. Das nachfolgende Video demonstriert, wie so etwas geht.
- Löse jetzt die Aufgaben 1, 2 und 5
Verkettung von Bedingungen (and, or)
Es gibt auch noch die Möglichkeit, verschiedene Bedingungen miteinander zu kombinieren. Die zwei für uns hier wichtigen «Verknüpfungswörter» sind and (engl. für: und) und or (engl. für: oder). Wie sie genau funktionieren können wir am Beispiel unseres Programms leicht demonstrieren:
from turtle import * alter = numinput("Alter", "Bitte gib dein Alter ein: ") if alter >= 20: write("Du bist ein Erwachsener") if alter > 12 and alter < 20: write("Du bist ein Teenager") if alter > 0 and alter <= 12: write("Du bist ein Kind") if alter < 0 or alter > 100: write("Das war wohl eine falsche Zahl...") exitonclick()
In Zeile 7 steht die verknüpfte Bedingung alter > 12 and alter < 20. Sie besteht aus den 2 «Einzel-» Bedingungen alter > 12 und alter < 20 und dem dazwischen stehenden Verknüpfungsoperator and. Die verknüpfte Bedingung ist genau dann wahr, wenn beide Bedingungen erfüllt sind. Die Ausgabe «Du bist ein Teenager» erfolgt also genau dann, wenn das Alter grösser als 12 Jahre und auch kleiner als 20 Jahre ist.
In Zeile 11 steht die verknüpfte Bedingung alter < 0 or alter > 100. Sie besteht aus den 2 «Einzel-» Bedingungen alter < 0 und alter > 100 und dem dazwischen stehenden Verknüpfungsoperator or. Die verknüpfte Bedingung ist genau dann wahr, wenn mindestens 1 Bedingungen erfüllt ist. Die Ausgabe «Das war wohl eine falsche Zahl» erfolgt also genau dann, wenn das Alter kleiner als 0 Jahre oder grösser als 20 Jahre ist.
Mit den zwei Verknüpfungswörtern (der Fachbegriff lautet: booleschen Operatoren) können mehrere Bedingungen (sog. boolesche Ausdrücke) verkettet werden. Nachfolgend sind die Operatoren in der Übersicht abgebildet:
and |
Der Operator and liefert genau dann den Wert True, wenn die Ausdrücke links und rechts des Operators wahr sind.
|
(2<3) and (5>2) ergibt True (2<3) and (5<2) ergibt False (2>3) and (5>2) ergibt False (2>3) and (5<2) ergibt False
|
or |
Ist wahr, wenn der Ausdruck links oder der Ausdruck rechts des Operators wahr ist. Es ist auch wahr, wenn beide wahr sind.
|
(2<3) and (5>2) ergibt True (2<3) and (5<2) ergibt True (2>3) and (5>2) ergibt True (2>3) and (5<2) ergibt False
|
- Löse jetzt die Aufgaben 1b, 2b, 3 und 6
Struktogramm und Flussdiagramm (ergänzende Informationen)
Wir haben im letzten Themenblock die Funktionsweise bedingter Anweisungen ergänzend anhand eines sog. Struktogramms oder eines Flussdiagramms erläutert , wobei du die folgenden 2 graphischen Darstellungsweisen kennengelernt hast.

In diesem Themenblock geht es lediglich um die Bedingung. Am Flussdiagramm oder Struktogramm ändert sich somit nichts. Wir können zur Demonstration unser unser Programm zum Thema «Wie geht es dir heute?» etwas anpassen:
from turtle import * zustand = textinput("Zustand", "Wie geht es dir heute?") penup() hideturtle() if zustand == "gut": write("Das freut mich. ", move=True) write("Mir geht es auch gut!") if zustand != "gut": write("Ich verstehe das Wort nicht!") goto(0, -20) write("Ende") exitonclick()
Übersetzen wir das Programm, so ergeben sich folgende 2 Diagramme:

Übungsaufgaben
Nachfolgend findest Du ein paar Übungsaufgaben.
Aufgabe 1: Sesam öffne dich II
Geben ist unser Programm «Sesam öffne dich» aus Aufgabe 1 des vorangehenden Themenblogs, welches den User zur Eingabe eines Passworts aufforderte. Entspricht die Eingabe der Zeichenfolge «Sesam öffne dich», so erfolgt wiederum die Ausgabe «Das Passwort ist korrekt». Gibt er etwas anderes ein, so soll neu die Ausgabe «Das Passwort ist falsch!» geschrieben werden.
Hinweis: mache eine zweite if Anweisung und nutze diesmal das Vergleichszeichen für Ungleichheit != .
Ergänze das Programm weiter. Beispielsweise soll der Computer dein Haus oder eine andere schöne Figur aus den ersten Lektionen zeichnen, sofern das Passwort korrekt ist.
Aufgabe 1b: Sesam öffne dich III
Geben ist unser Programm aus Aufgabe 1. Wir wollen neu auch zulassen, dass der Benutzer «sesam öffne dich» (alles kleingeschrieben) eingeben kann.
Hinweis: Verknüpfe hierzu die 2 Bedingungen (Möglichkeiten) passwort == ‹Sesam öffne dich› und passwort == ’sesam öffne dich›.
Achtung: welches Verknüpfungswort (and, or) kommt wo? Vorsicht beim != Vergleich, wo das Passwort falsch eingegeben wird.
Aufgabe 2: Figur nach Wunsch II
Geben ist unser Programm «Figur nach Wunsch» aus Aufgabe 2 des vorangehenden Themenblogs, in welchem der Computer je nach Eingabe des Benutzers ein Quadrat oder einen «Kreis» in der angegebenen Grösse zeichnet.
Neu wird die gewünschte Grösse automatisch korrigiert, sollte sie nicht in einem gewissen Bereich sein. Ist die Eingabe kleiner als 10, so zeichnet das Programm trotzdem einen Figur mit Grösse 10. Der Wert von 10 ist somit die Mindestgrösse. Und ist die Eingabe grösser als 200, so wird die Figur mit Grösse 200 gezeichnet (Maximalgrösse).
Aufgabe 2b: Figur nach Wunsch III
Geben ist unser Programm «Figur nach Wunsch II» aus Aufgabe 2.
Neu soll der Benutzer für ein Viereck die Wörter «Viereck», «Quadrat» oder «square», für einen Kreis die Wörter «Kreis» oder «circle» eingeben können.
Hinweis: Ergänze die jeweiligen Bedingungen, in dem du die einzelnen Möglichkeiten pro Figur mit or oder and verknüpfst.
Aufgabe 3: ausgefüllte Figur II
Gegeben ist unser Programm aus Aufgabe 3 des letzten Themenblogs. Hat der Benutzer «ja», «Ja», «j» oder «J» eingegeben, so wird der Kreis gelb ausgefüllt.
Aufgabe 5: Vergleiche
Welche der folgenden Vergleich sind True :
4 < 5 |
45 > 30 |
2.3 |
2==2 |
4 <= 4 |
4 == 5 |
None |
6/2 == 3 |
2+2 != 5 |
2 + 2 == ‹a› |
2+2 = 4 |
True != False |
Hinweis: Versuche auch einige Vergleiche, so wie im Video gezeigt, in die Python Shell einzutippen.
Aufgabe 6: Verknüpfte Vergleiche
Welche der folgenden Vergleich sind True:
4 < 5 or 4 < 4 |
45 > 30 and 10 >= 5 |
2.3 and True != False |
2==2 and 2 != 3 |
14 < 5 or 4 > 2 |
4 == 5 and 10 > 5 |
14 < 5 or 4 < 2 or 3 == 6/2 |
3*»2″ == «222» and 3*2 == 6 |
2+2 != 5 or 2*5 == 10 |
2 + 2 == 4 and 5 !=10 |
2 > 3 and 3!= 4 |
2*»5″ = «55» or 2*5 ==12 |
Hinweis: Versuche auch einige Vergleiche, so wie im Video gezeigt, in die Python Shell einzutippen.
Lösungen zu den Übungsaufgaben
Lösung zur Aufgabe 1: Sesam öffne dich II
Nachfolgend findest du das Programmbeispiel:
from turtle import * passwort = textinput("Access", "Bitte Passwort eingeben") if passwort == "Sesam öffne dich": write("Das Passwort ist korrekt") if passwort != "Sesam öffne dich": write("Das Passwort ist falsch") exitonclick()
Hinweis: –
Lösung zur Aufgabe 1b: Sesam öffne dich III
Nachfolgend findest du das Programmbeispiel:
from turtle import * passwort = textinput("Access", "Bitte Passwort eingeben") if passwort == "Sesam öffne dich" or passwort == "sesam öffne dich": write("Das Passwort ist korrekt") if passwort != "Sesam öffne dich" and passwort != "sesam öffne dich": write("Das Passwort ist falsch") exitonclick()
Lösung zur Aufgabe 2: Figur nach Wunsch II
Nachfolgend findest du das Programmbeispiel:
from turtle import * fig = textinput("Figur", "Was soll gezeichnet werden") g = numinput("Grösse", "Welche Grösse") if g < 10: g = 10 if g > 200: g = 200 if fig == "Viereck": forward(g) right(90) forward(g) right(90) forward(g) home() if fig == "Kreis": circle(g) exitonclick()
Hinweis: –
Lösung zur Aufgabe 2b: Figur nach Wunsch III
Nachfolgend findest du das Programmbeispiel:
from turtle import * fig = textinput("Figur", "Was soll gezeichnet werden") g = numinput("Grösse", "Welche Grösse") if g < 10: g = 10 if g > 200: g = 200 if fig == "Viereck" or fig == "Quadrat" or fig == "square": forward(g) right(90) forward(g) right(90) forward(g) home() if fig == "Kreis" or fig == "circle": circle(g) exitonclick()
Lösung zur Aufgabe 3: ausgefüllte Figur II
Nachfolgend findest du das Programmbeispiel:
from turtle import * import random ausf = textinput("Grafik", "Soll der Kreis ausgefüllt werden?") if ausf == "ja" or ausf == "Ja" or ausf == "J" or ausf == "j": begin_fill() colormode(255) r = random.randint(0, 255) g = random.randint(0, 255) b = random.randint(0, 255) fillcolor(r, g, b) pencolor("black") circle(100) if ausf == "ja" or ausf == "Ja" or ausf == "J" or ausf == "j": end_fill() exitonclick()
Lösung zur Aufgabe 5: Datentypen
Gesuchte Vergleiche mit Kommentaren:
4 < 5 | True | Vergleich int mit int ist zulässig. 4 ist kleiner als 5 |
4 <= 4 | True | Vergleich int mit int ist zulässig. 4 ist kleiner (oder) gleich wie 4 |
2+2 != 5 | True | Vergleich int mit int ist zulässig. 4 ist ungleich zu 5 |
45 > 30 | True | Vergleich int mit int ist zulässig. 45 ist grösser als 30 |
4 == 5 | False | Vergleich int mit int ist zulässig. «4 ist gleich 4» ist falsch |
2 + 2 == ‹a› | # Fehler | Vergleich von int mit str ist nicht zulässig. |
2.3 | True | Datentyp float Ein Datentyp alleine ist immer True |
None | True | Datentyp bool Ein Datentyp alleine ist immer True |
2+2 = 4 | # Fehler | Es hat nur 1 Gleichheitszeichen, das heisst es ist eine Zuweisung und nicht ein Vergleich. Der Name 2+2 ist zudem nicht möglich, da er mit einer Zahl beginnt. |
2 == 2 | True | Vergleich int mit int ist zulässig. |
6/2 == 3 | True | Vergleich float mit int ist zulässig. Das Resultat einer Division ist immer ein float. |
True != False | True | Vergleich von bool mit bool ist zulässig. |
Lösung zur Aufgabe 5: Datentypen mit Umwandlung
Gesuchte Vergleiche mit Kommentaren:
4 < 5 or 4 < 4 | True | zulässig. True or False gibt True |
14 < 5 or 4 > 2 | True | zulässig. False or True gibt True |
2+2 != 5 or 2*5 == 10 | True | zulässig True or True gibt True |
45 > 30 and 10 >= 5 | True | zulässig True and True gibt True |
4 == 5 and 10 > 5 | False | zulässig False and True gibt False |
2+2 == 4 and 5 != 10 | True | zulässig True and True gibt True |
2.3 and True != False | True | zulässig True and True gibt True |
14 < 5 or 4 < 2 or 3 == 6/2 | True | zulässig False or False or True gibt True |
2 > 3 and 3 != 4 | False | zulässig False and True gibt False |
2==2 and 2 != 3 | True | zulässig True and True gibt True |
3*»2″==»222″ and 3*2 == 6 | True | zulässig True and True gibt True |
2*»5″== «55» or 2 *5 == 12 | True | zulässig True or False gibt True |
Comments