Konditionale
Zuletzt aktualisiert am 2025-10-31 | Diese Seite bearbeiten
Geschätzte Zeit: 25 Minuten
Übersicht
Fragen
- Wie können Programme verschiedene Dinge für verschiedene Daten tun?
Ziele
- Korrektes Schreiben von Programmen, die if- und else-Anweisungen und einfache boolesche Ausdrücke (ohne logische Operatoren) verwenden.
- Verfolgen Sie die Ausführung von nicht verschachtelten Konditionalen und Konditionalen in Schleifen.
Benutze if Anweisungen, um zu kontrollieren, ob ein
Codeblock ausgeführt wird oder nicht.
- Eine
if-Anweisung (richtiger: eine bedingte Anweisung) steuert, ob ein Codeblock ausgeführt wird oder nicht. - Die Struktur ähnelt der einer
for-Anweisung:- Die erste Zeile beginnt mit
ifund endet mit einem Doppelpunkt - Körper, der eine oder mehrere Anweisungen enthält, wird eingerückt (normalerweise um 4 Leerzeichen)
- Die erste Zeile beginnt mit
PYTHON
mass = 3.54
if mass > 3.0:
print(mass, 'is large')
mass = 2.07
if mass > 3.0:
print (mass, 'is large')
AUSGABE
3.54 is large
Konditionale Bedingungen werden oft innerhalb von Schleifen verwendet.
- Es macht wenig Sinn, eine Bedingung zu verwenden, wenn wir den Wert kennen (wie oben).
- Nützlich, wenn wir eine Sammlung zu verarbeiten haben.
AUSGABE
3.54 is large
9.22 is large
Verwenden Sie else, um einen Codeblock auszuführen,
wenn eine if Bedingung nicht wahr ist.
-
elsekann nach einemifverwendet werden. - Ermöglicht die Angabe einer Alternative, die ausgeführt werden soll,
wenn der
ifZweig nicht genommen wird.
PYTHON
masses = [3.54, 2.07, 9.22, 1.86, 1.71]
for m in masses:
if m > 3.0:
print(m, 'is large')
else:
print(m, 'is small')
AUSGABE
3.54 is large
2.07 is small
9.22 is large
1.86 is small
1.71 is small
Verwenden Sie elif, um zusätzliche Tests zu
spezifizieren.
- Vielleicht möchten Sie mehrere Alternativen anbieten, jede mit ihrem eigenen Test.
- Verwenden Sie
elif(kurz für “else if”) und eine Bedingung, um diese anzugeben. - Immer verbunden mit einem
if. - Muss vor
elsestehen (das ist der “catch all”).
PYTHON
masses = [3.54, 2.07, 9.22, 1.86, 1.71]
for m in masses:
if m > 9.0:
print(m, 'is HUGE')
elif m > 3.0:
print(m, 'is large')
else:
print(m, 'is small')
AUSGABE
3.54 is large
2.07 is small
9.22 is HUGE
1.86 is small
1.71 is small
Bedingungen werden einmal getestet, in der Reihenfolge.
- Python durchläuft die Zweige der Bedingung der Reihe nach und testet sie.
- Die Reihenfolge ist also wichtig.
PYTHON
grade = 85
if grade >= 90:
print('grade is A')
elif grade >= 80:
print('grade is B')
elif grade >= 70:
print('grade is C')
AUSGABE
grade is B
- Geht nicht automatisch zurück und wertet neu aus, wenn sich Werte ändern.
PYTHON
velocity = 10.0
if velocity > 20.0:
print('moving too fast')
else:
print('adjusting velocity')
velocity = 50.0
AUSGABE
adjusting velocity
- Verwenden Sie oft Konditionale in einer Schleife, um die Werte von Variablen zu “entwickeln”.
PYTHON
velocity = 10.0
for i in range(5): # execute the loop 5 times
print(i, ':', velocity)
if velocity > 20.0:
print('moving too fast')
velocity = velocity - 5.0
else:
print('moving too slow')
velocity = velocity + 10.0
print('final velocity:', velocity)
AUSGABE
0 : 10.0
moving too slow
1 : 20.0
moving too slow
2 : 30.0
moving too fast
3 : 25.0
moving too fast
4 : 20.0
moving too slow
final velocity: 30.0
Erstellen Sie eine Tabelle mit den Werten von Variablen, um die Ausführung eines Programms zu verfolgen.
| i | 0 | . | 1 | . | 2 | . | 3 | . | 4 | . |
| velocity | 10.0 | 20.0 | . | 30.0 | . | 25.0 | . | 20.0 | . | 30.0 |
- Das Programm muss eine
print-Anweisung außerhalb des Schleifenkörpers haben, um den Endwert vonvelocityanzuzeigen, da sein Wert durch die letzte Iteration der Schleife aktualisiert wird.
Zusammengesetzte Beziehungen mit
and, or und Klammern
Oft will man, dass eine Kombination von Dingen wahr ist. Sie können
Beziehungen innerhalb einer Bedingung mit and und
or kombinieren. Um das obige Beispiel fortzusetzen, nehmen
wir an, Sie haben
PYTHON
mass = [ 3.54, 2.07, 9.22, 1.86, 1.71]
velocity = [10.00, 20.00, 30.00, 25.00, 20.00]
i = 0
for i in range(5):
if mass[i] > 5 and velocity[i] > 20:
print("Fast heavy object. Duck!")
elif mass[i] > 2 and mass[i] <= 5 and velocity[i] <= 20:
print("Normal traffic")
elif mass[i] <= 2 and velocity[i] <= 20:
print("Slow light object. Ignore it")
else:
print("Whoa! Something is up with the data. Check it")
Genau wie in der Arithmetik können und sollten Sie Klammern
verwenden, wenn es eine mögliche Mehrdeutigkeit gibt. Eine gute
allgemeine Regel ist es, immer Klammern zu verwenden, wenn man
and und or in derselben Bedingung mischt. Das
heißt, anstelle von:
verwenden Sie eine der folgenden Formulierungen:
PYTHON
if (mass[i] <= 2 or mass[i] >= 5) and velocity[i] > 20:
if mass[i] <= 2 or (mass[i] >= 5 and velocity[i] > 20):
so ist es für den Leser (und für Python) völlig klar, was Sie wirklich meinen.
AUSGABE
25.0
Trimmen von Werten
Füllen Sie die Lücken aus, so dass dieses Programm eine neue Liste erstellt, die Nullen enthält, wenn die Werte der ursprünglichen Liste negativ waren, und Einsen, wenn die Werte der ursprünglichen Liste positiv waren.
PYTHON
original = [-1.5, 0.2, 0.4, 0.0, -1.3, 0.4]
result = ____
for value in original:
if ____:
result.append(0)
else:
____
print(result)
AUSGABE
[0, 1, 1, 1, 0, 1]
Initialisierung
Ändern Sie dieses Programm so, dass es den größten und den kleinsten Wert in der Liste findet, unabhängig davon, wie groß der ursprüngliche Wertebereich ist.
PYTHON
values = [...some test data...]
smallest, largest = None, None
for v in values:
if ____:
smallest, largest = v, v
____:
smallest = min(____, v)
largest = max(____, v)
print(smallest, largest)
Was sind die Vor- und Nachteile dieser Methode, um den Bereich der Daten zu bestimmen?
PYTHON
values = [-2,1,65,78,-54,-24,100]
smallest, largest = None, None
for v in values:
if smallest is None and largest is None:
smallest, largest = v, v
else:
smallest = min(smallest, v)
largest = max(largest, v)
print(smallest, largest)
Wenn Sie == None anstelle von is None
geschrieben haben, funktioniert das auch, aber Python-Programmierer
schreiben immer is None wegen der besonderen Art und Weise,
wie None in dieser Sprache funktioniert.
Man kann argumentieren, dass ein Vorteil dieser Methode darin
besteht, den Code lesbarer zu machen. Ein Nachteil ist jedoch, dass
dieser Code nicht effizient ist, da es innerhalb jeder Iteration der
Schleifenanweisung for zwei weitere Schleifen gibt, die
jeweils über zwei Zahlen laufen (die Funktionen min und
max). Es wäre effizienter, jede Zahl nur einmal zu
durchlaufen:
PYTHON
values = [-2,1,65,78,-54,-24,100]
smallest, largest = None, None
for v in values:
if smallest is None or v < smallest:
smallest = v
if largest is None or v > largest:
largest = v
print(smallest, largest)
Jetzt haben wir eine Schleife, aber vier Vergleichstests. Es gibt zwei Möglichkeiten, die Schleife weiter zu verbessern: Entweder werden in jeder Iteration weniger Vergleiche durchgeführt, oder es werden zwei Schleifen verwendet, die jeweils nur einen Vergleichstest enthalten. Die einfachste Lösung ist oft die beste:
- Verwenden Sie
if-Anweisungen, um zu kontrollieren, ob ein Codeblock ausgeführt wird oder nicht. - Konditionale Bedingungen werden oft innerhalb von Schleifen verwendet.
- Verwenden Sie
else, um einen Codeblock auszuführen, wenn eineifBedingung nicht wahr ist. - Verwenden Sie
elif, um zusätzliche Tests zu spezifizieren. - Die Bedingungen werden einmal in der Reihenfolge getestet.
- Erstellen Sie eine Tabelle mit den Werten der Variablen, um die Ausführung eines Programms zu verfolgen.