Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

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, ist game_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-ternary-operator-1

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.

ternary-op-ex1

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) ist Falsch.
  • bool(<beliebige Ganzzahl ungleich Null>) gibt True 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?

Should You Always Use the Python Ternary Operator

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:

PunktzahlSchwierigkeitsgrad
Weniger als 10leicht
Zwischen 10 und 20 mittel
Größer als 20schwer

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.

ternary-operator-example

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.

  • Bala Priya C
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder