In dieser Anleitung lernen Sie, wie Sie den ternären Operator in Python verwenden. Sie lernen die Syntax und kodieren mehrere Beispiele, um zu verstehen, wie er funktioniert.
Wir beginnen mit einem Überblick über die Funktionsweise der bedingten if-else-Anweisung und lernen dann, wie Sie einen entsprechenden Ausdruck mit dem ternären Operator schreiben.
Als Nächstes werden wir einige Beispiele kodieren und dann lernen, wie man das Verhalten des ternären Operators von Python mit einem Python-Tupel und einem Wörterbuch nachahmt. Zum Schluss gehen wir auf einige Anwendungsfälle ein, in denen Sie den ternären Operator verwenden sollten.
Fangen wir an!
Die If-Else-Anweisung in Python: Ein Überblick
Sie können mit einer Python REPL oder dem Online-Python-Editor von Geekflare programmieren.
Die allgemeine Syntax der if-else-Anweisung in Python lautet wie folgt:
if Bedingung:
# tu dies
else:
# tue dies
In dem obigen Schnipsel bezeichnet condition
die zu prüfende Bedingung. Wenn die Bedingung als True
ausgewertet wird, wird der if-Block ausgelöst. Lautet die Bedingung ” Falsch"
, werden die Anweisungen im else-Block ausgeführt.
Hier ein Beispiel, bei dem der Variablen game_over
ein boolescher Wert zugewiesen wird, je nachdem, ob der Wert von energy
kleiner oder gleich Null ist.
- Wenn
energy <= 0
ist, istgame_over
True
. - Andernfalls ist
game_over
Falsch.
Der folgende Codeschnipsel zeigt, wie Sie dies mit den bedingten if-else-Anweisungen erreichen können:
energy = -1
if energy <= 0:
game_over = True
else:
game_over = False
print(game_over)
# True
In diesem Beispiel ist energy
-1 und damit kleiner als 0. game_over
ist also True.
Python Ternärer Operator: Syntax und Beispiele

Python verfügt über einen ternären Operator, der ähnlich funktioniert wie der ternäre bedingte Operator in Sprachen wie C und C . Die allgemeine Syntax zur Verwendung dieses Operators lautet wie folgt:
ausdruck1 if Bedingung else Ausdruck2
Lassen Sie uns die obige Syntax analysieren:
bedingung
: Die Bedingung, auf die geprüft werden soll.expression1
: Der Ausdruck, der ausgewertet wird, wenn die Bedingung wahr ist.ausdruck2
: Der Ausdruck, der ausgewertet werden soll, wenn die Bedingung Falsch ist.
Jetzt werden wir herausfinden, was expression1
, expression2
und condition
in der if-else-Version des Codes sein sollen.

Wenn wir alles zusammenfassen, ergibt sich unter Verwendung des ternären Operators von Python Folgendes.
game_over = True if energy <= 0 else False
print(game_over)
# True
Lassen Sie uns ein weiteres Beispiel programmieren. Nehmen wir an, Sie betreiben eine Buchhandlung und geben den Lesern einen Rabatt auf ihren Einkauf, je nachdem, wie oft sie Ihr Geschäft im letzten Jahr besucht haben.
Lassen Sie numVisits
die Anzahl der Besuche bezeichnen.
- Wenn
numVisits > 7
ist, beträgt der Rabattprozentsatz,discount_perc
, 20. - Andernfalls ist
discount_perc
gleich 5.
Wir verwenden den ternären Operator, um der Variable discount_perc
einen Wert zuzuweisen.
numVisits = 10
discount_perc = 20 if numVisits > 7 else 5
print(discount_perc)
# 20 (da numVisits = 10, was > 7 ist)
Als Nächstes lernen wir, wie Sie den ternären Operator mit einem Python-Tupel und einem Wörterbuch emulieren können.
Emulation des ternären Operators mit einem Python-Tupel
Wie alle Iterablen in Python folgen auch Tupel der Null-Indexierung. Wenn Sie also zwei Elemente in einem Tupel haben, steht tuple_name[0]
für das erste Element des Tupels und tuple_name[1]
für das zweite Element des Tupels.
Die grundlegenden Datentypen in Python sind integer, float, string und Boolean. Python unterstützt das Typ-Casting, mit dem Sie einen bestimmten Datentyp durch seine entsprechende Darstellung in einem anderen Datentyp darstellen können.
Starten Sie eine Python REPL und führen Sie die folgenden Beispiele aus. Wenn Sie versuchen, ganze Zahlen in Boolesche zu konvertieren, werden Sie Folgendes feststellen:
bool(0)
istFalsch
.bool(<beliebige Ganzzahl ungleich Null>)
gibtTrue
zurück.
>>> bool(0)
Falsch
>>> bool(1)
Wahr
>>> bool(-1)
Wahr
>>> bool(10)
Wahr
Ähnlich verhält es sich bei der Umwandlung von Boolean in Integer, wenn wir folgendes haben:
>>> int(True)
1
>>> int(False)
0
Wenn wir das Typ-Casting und die Indexierung kombinieren, können wir wie folgt vorgehen:
- Element bei Index 0 im Tupel: Der Wert, der verwendet werden soll, wenn die
Bedingung
False
ist. - Element bei Index 1 in dem Tupel: Der Wert, der verwendet werden soll, wenn die
Bedingung
Wahr
ist.
Unter Berücksichtigung der obigen Ausführungen ergibt sich Folgendes:
>>> numVisits = 10
>>> discount_perc = (5,20)[numVisits > 7]
>>> discount_perc
# 20
Hier ist die Bedingung numVisits > 7
wahr
, da numVisits
10 ist. Da int(True)
1 ist, ist der Wert von discount_perc
20, das Element bei Index 1.
Emulation des ternären Operators mit Python Dictionary
Sie können True
und False
als Schlüssel des Dictionarys festlegen. Und Sie können expression1
und expression2
als die Werte festlegen, die den Schlüsseln True
bzw. False
entsprechen.
some_dict = {True: expression1,
False: expression2
}
Was machen Sie als nächstes? Wenn Sie nun some_dict[condition]
verwenden, wird expression1
, der dem Schlüssel True
entspricht, ausgewertet, wenn die Bedingung
True
ist. Und expression2
wird ausgewertet, wenn die Bedingung
False
ist.
Lassen Sie uns das discount_perc
Beispiel (noch einmal) codieren, aber dieses Mal mit einem Python-Wörterbuch.
>>> numVisits = 10
>>> discount_dict = {True: 20, False:5}
>>> discount_perc = discount_dict[numVisits > 7]
>>> discount_perc
# 20
Hier ist numVisits = 10
, was größer als 7 ist. Daher ist die Bedingung numVisits > 7
wahr
. Also wird discount_dict[numVisits > 7]
zu discount_dict[True]
ausgewertet, was dem Wert 20 entspricht.
Sollten Sie immer den ternären Operator von Python verwenden?

Bis jetzt haben wir gelernt, wie man den ternären Operator verwendet. Aber sollten wir den ternären Operator immer verwenden? Nun, der ternäre Operator ist nicht für alle Anwendungsfälle die beste Wahl. In diesem Abschnitt wird erläutert, wann Sie den ternären Operator den if-else-Anweisungen vorziehen sollten. Wir gehen auch darauf ein, wann Sie die if-else-Anweisung anstelle des ternären Operators verwenden sollten.
Prägnanter als If-Else-Blöcke
Wie bereits erwähnt, ist der Ausdruck des ternären Operators in Python prägnanter als die if-else-Anweisung. Daher können Sie ihn verwenden, um Bedingungen zu prüfen und Ausdrücke im laufenden Betrieb bedingt auszuwerten.
Im folgenden Beispiel ist nums
eine Liste mit 100 zufällig generierten ganzen Zahlen. Für jede der 100 Zahlen prüfen wir, ob sie gerade oder ungerade ist. Und diese Auswertung erfolgt inline innerhalb des f-string.
import random
nums = [random.choice(range(100)) for i in range(10)]
for num in nums:
print(f"{num} is {'even' if num%2==0 else 'odd'}")
# Beispielausgabe
0 ist gerade
56 ist gerade
6 ist gerade
53 ist ungerade
62 ist gerade
7 ist ungerade
8 ist gerade
77 ist ungerade
41 ist ungerade
94 ist gerade
Der ternäre Operator erfordert die Else-Klausel
Wenn Sie die bedingten if-else-Anweisungen verwenden, ist die else-Klausel optional. Lassen Sie uns ein Beispiel nehmen. Die Variable game_over
wird auf True
gesetzt, wenn die Energie
auf einen Wert kleiner oder gleich Null sinkt.
Wenn die Energie
jedoch größer als Null ist, wird die Variable game_over
nie initialisiert. Wenn Sie also versuchen, auf die Variable game_over
zuzugreifen, werden Sie auf Fehler stoßen.
energy = 5
if energy <= 0:
game_over = True
print(f "Ist das Spiel vorbei? {game_over}")
Traceback (letzter Aufruf):
Datei "ternary_op.py", Zeile 39, in <module>
print(f "Ist das Spiel vorbei? {game_over}")
NameError: Name 'game_over' ist nicht definiert
Eine Möglichkeit, dies zu beheben, besteht darin, game_over
anfangs auf False
zu setzen und es auf True
zu aktualisieren, wenn das Energieniveau kleiner oder gleich Null ist.
energy = 5
game_over = False
if energy <= 0:
game_over1 = True
print(f "Ist das Spiel vorbei? {game_over}")
Bei der Verwendung des ternären Python-Operators, der dem obigen entspricht, ist die else-Klausel jedoch nicht optional. Der ternäre Operator verlangt, dass der Ausdruck ausgewertet wird, wenn die Bedingung
Falsch
ist.
game_over = True if energy <= 0 else False
Wenn Sie den obigen Ausdruck in game_over = True if energy <= 0
ändern, indem Sie den else-Teil entfernen, stoßen Sie auf einen Syntaxfehler, wie gezeigt:
Datei "ternary_op.py", Zeile 42
game_over = True if energy <= 0
^
SyntaxFehler: Ungültige Syntax
Um mehrere Bedingungen zu prüfen, verwenden Sie If-Else-Anweisungen
Betrachten Sie das Beispiel: Jede Frage in einem Satz von Kodierungsinterviews hat einen bestimmten Schwierigkeitsgrad. Abhängig von dieser Punktzahl weisen wir einer bestimmten Frage einen der drei Schwierigkeitsgrade leicht, mittel oder schwer zu. Nehmen wir an, wir haben Folgendes:
Punktzahl | Schwierigkeitsgrad |
Weniger als 10 | leicht |
Zwischen 10 und 20 | mittel |
Größer als 20 | schwer |
Wenn Sie den Schwierigkeitsgrad kennen, können Sie ihn mit dem ternären Python-Operator wie folgt ermitteln:
score = 12
difficulty_level = "easy" if score < 10 else "hard" if score > 20 else "medium"
print(difficulty_level)
# medium
Der ternäre Operatorausdruck im obigen Codeblock hat die folgende Form:
ausdruck1 if Bedingung1 else Ausdruck2 if Bedingung2 else Ausdruck3
Obwohl er prägnant ist, ist er etwas schwierig zu lesen und zu parsen. Das folgende Bild zeigt, wie der Kontrollfluss in diesem Fall abläuft.

Der folgende Codeschnipsel zeigt eine entsprechende Implementierung mit if-else-Anweisungen. Wie Sie sehen, ist der Kontrollfluss viel einfacher zu verstehen und der Code ist besser lesbar.
if score < 10:
difficulty_level="easy"
elif score > 20:
difficulty_level="hard"
else:
difficulty_level="medium"
print(difficulty_level)
Wenn Sie also mehrere Bedingungen haben, sollten Sie die if-else-Blöcke anstelle des ternären Operators verwenden. Dies sorgt dafür, dass der Code leicht zu lesen und zu verstehen ist.
Auch wenn Sie mehrere Anweisungen ausführen müssen – je nachdem, ob die Bedingung wahr oder falsch ist – sollten Sie die if-else-Anweisung verwenden.
Fazit
Hier ist eine Zusammenfassung dessen, was Sie in diesem Tutorial gelernt haben.
- In Python kann der ternäre Operator mit der folgenden Syntax verwendet werden:
expression1 if condition else expression2
. - Sie können das Verhalten des ternären Operators mit Python-Tupeln und -Wörterbüchern nachbilden.
- Der ternäre Operator kann zwar eine prägnantere Alternative zu den if-else-Blöcken sein, Sie sollten jedoch darauf achten, dass der Code lesbar ist. Um die Lesbarkeit des Codes zu verbessern, können Sie die if-else-Anweisungen anstelle des ternären Operators verwenden, insbesondere wenn Sie mehrere Bedingungen verketten müssen.
Als Nächstes sollten Sie sich das Tutorial über die Operatoren equal und not equal in Python ansehen.