Πώς να χρησιμοποιήσετε τον Τριαδικό τελεστή Python

Αυτός ο οδηγός θα σας διδάξει πώς να χρησιμοποιείτε τον τριαδικό τελεστή στην Python. Θα μάθετε τη σύνταξη και τον κώδικα πολλά παραδείγματα για να κατανοήσετε πώς λειτουργεί.

Θα ξεκινήσουμε εξετάζοντας πώς λειτουργεί η υπό όρους πρόταση if-else και στη συνέχεια θα μάθουμε πώς να γράψουμε μια ισοδύναμη έκφραση χρησιμοποιώντας τον τριαδικό τελεστή.

Στη συνέχεια, θα κωδικοποιήσουμε μερικά παραδείγματα και στη συνέχεια θα μάθουμε πώς να μιμείται τη συμπεριφορά του τριαδικού τελεστή της Python χρησιμοποιώντας μια πλειάδα Python και λεξικό. Τέλος, θα εξετάσουμε μερικές περιπτώσεις χρήσης όταν προτιμάτε να χρησιμοποιείτε τον τριαδικό τελεστή.

Ας ξεκινήσουμε!

The If-Else Statement in Python: A Review

Μπορείτε να κωδικοποιήσετε ξεκινώντας ένα Python REPL ή στον διαδικτυακό επεξεργαστή Python του grtechpc.org.

Η γενική σύνταξη της εντολής if-else στην Python είναι η εξής:

if condition:
    # do this
else:
    # do this

Στο παραπάνω απόσπασμα, η συνθήκη υποδηλώνει τη συνθήκη που πρέπει να ελεγχθεί. Εάν η συνθήκη αξιολογηθεί σε True, τότε ενεργοποιείται το μπλοκ if. Εάν η συνθήκη αξιολογηθεί σε False, τότε εκτελούνται οι δηλώσεις μέσα στο μπλοκ else.

Ακολουθεί ένα παράδειγμα όπου στη μεταβλητή game_over εκχωρείται μια Boolean τιμή ανάλογα με το εάν η τιμή της ενέργειας είναι μικρότερη ή ίση με μηδέν.

  • Εάν ενέργεια <= 0, το game_over είναι True.
  • Διαφορετικά, το game_over είναι False.

Το ακόλουθο απόσπασμα κώδικα δείχνει πώς να το κάνετε αυτό χρησιμοποιώντας τις προτάσεις υπό όρους if-else:

energy = -1

if energy <= 0:
    game_over = True
else:
    game_over = False

print(game_over)
# True

Σε αυτό το παράδειγμα, η ενέργεια είναι -1 που είναι μικρότερη από 0. Άρα το game_over είναι True.

Python Trinary Operator: Σύνταξη και Παραδείγματα

Η Python έχει έναν τριαδικό τελεστή που λειτουργεί πολύ όπως ο τριαδικός τελεστής υπό όρους σε γλώσσες όπως η C και η C++. Η γενική σύνταξη για τη χρήση του είναι η εξής:

expression1 if condition else expression2

Ας αναλύσουμε την παραπάνω σύνταξη:

  • συνθήκη: Η προϋπόθεση για έλεγχο.
  • έκφραση1: Η έκφραση για να αξιολογηθεί εάν η συνθήκη είναι True.
  • έκφραση2: Η έκφραση για να αξιολογηθεί εάν η συνθήκη είναι False.
  Το PrefDelete σάς επιτρέπει να απεγκαταστήσετε τα Tweaks από την εφαρμογή "Ρυθμίσεις". [Jailbreak]

Τώρα, θα προσδιορίσουμε ποια έκφραση1, έκφραση2 και συνθήκη πρέπει να είναι από την if-else έκδοση του κώδικα.

Συνδυάζοντας τα όλα μαζί, έχουμε τα ακόλουθα χρησιμοποιώντας τον τριαδικό τελεστή της Python.

game_over = True if energy <= 0 else False
print(game_over)
# True

Ας κωδικοποιήσουμε ένα άλλο παράδειγμα. Ας υποθέσουμε ότι έχετε ένα βιβλιοπωλείο και δίνετε στους αναγνώστες μια έκπτωση στην αγορά τους ανάλογα με το πόσο συχνά επισκέπτονται το κατάστημά σας τον τελευταίο ένα χρόνο.

Αφήστε το numVisits να υποδηλώνει τον αριθμό των επισκέψεων.

  • Εάν numVisits > 7, το ποσοστό έκπτωσης, discount_perc είναι 20.
  • Διαφορετικά, το discount_perc είναι 5.

Χρησιμοποιούμε τον τριαδικό τελεστή για να εκχωρήσουμε τιμή στη μεταβλητή discount_perc.

numVisits = 10

discount_perc = 20 if numVisits > 7 else 5

print(discount_perc)
# 20 (as numVisits = 10 which is > 7)

Στη συνέχεια, θα μάθουμε πώς να μιμείται τον τριαδικό τελεστή χρησιμοποιώντας μια πλειάδα Python και ένα λεξικό.

Εξομοίωση του Τριμερούς τελεστή με Python Tuple

Όπως όλα τα iterables στην Python, οι πλειάδες ακολουθούν μηδενική ευρετηρίαση. Επομένως, εάν έχετε δύο στοιχεία σε μια πλειάδα, το όνομα_του πλειάδας[0] υποδηλώνει το πρώτο στοιχείο στο πλειάδα και το όνομα_του πλειάδας[1] δίνει το δεύτερο στοιχείο στην πλειάδα.

Οι βασικοί τύποι δεδομένων στην Python είναι ακέραιος, float, συμβολοσειρά και Boolean. Η Python υποστηρίζει τη μετάδοση τύπων που σας επιτρέπει να αναπαραστήσετε έναν συγκεκριμένο τύπο δεδομένων με την ισοδύναμη αναπαράστασή του σε άλλο τύπο δεδομένων.

Ξεκινήστε μια Python REPL και εκτελέστε τα ακόλουθα παραδείγματα. Εάν προσπαθήσετε να μετατρέψετε ακέραιους αριθμούς σε Booleans, θα παρατηρήσετε τα εξής:

  • Το bool(0) είναι False.
  • Το bool(<οποιοσδήποτε μη μηδενικός ακέραιος>) επιστρέφει True.
>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True
>>> bool(10)
True

Ομοίως, κατά τη χύτευση Boolean σε ακέραιους αριθμούς, έχουμε τα εξής:

>>> int(True)
1
>>> int(False)
0

Συνδυάζοντας τον τύπο χύτευσης και ευρετηρίασης, μπορούμε να κάνουμε τα εξής:

  • Στοιχείο στον δείκτη 0 στην πλειάδα: Η τιμή που χρησιμοποιείται όταν η συνθήκη είναι False.
  • Στοιχείο στον δείκτη 1 στην πλειάδα: Η τιμή που χρησιμοποιείται όταν η συνθήκη είναι True.

Με βάση τα παραπάνω έχουμε τα εξής:

>>> numVisits = 10
>>> discount_perc = (5,20)[numVisits > 7]
>>> discount_perc
# 20

Εδώ, η συνθήκη numVisits > 7 είναι True καθώς το numVisits είναι 10. Επειδή το int(True) είναι 1, η τιμή του discount_perc είναι 20, το στοιχείο στο ευρετήριο 1.

Εξομοίωση του Τριμερούς τελεστή με το λεξικό Python

Μπορείτε να ορίσετε το True και False ως τα πλήκτρα του λεξικού. Και μπορείτε να ορίσετε την έκφραση1 και έκφραση2 ως τις τιμές που αντιστοιχούν στα κλειδιά True και False, αντίστοιχα.

some_dict = {True: expression1,
             False: expression2
            }

Τι κάνεις μετά; Τώρα αν χρησιμοποιήσετε some_dict[condition], η έκφραση1 που αντιστοιχεί στο κλειδί True αξιολογείται εάν η συνθήκη είναι True. Και η έκφραση2 αξιολογείται όταν η συνθήκη είναι False.

Ας κωδικοποιήσουμε το παράδειγμα discount_perc (ξανά) αλλά αυτή τη φορά χρησιμοποιώντας ένα λεξικό Python.

>>> numVisits = 10
>>> discount_dict = {True: 20, False:5}
>>> discount_perc = discount_dict[numVisits > 7]
>>> discount_perc
# 20

Εδώ, numVisits = 10 που είναι μεγαλύτερο από 7. Επομένως, η συνθήκη numVisits > 7 είναι True. discount_dict λοιπόν[numVisits > 7] αξιολογεί σε discount_dict[True] που είναι η τιμή 20.

Πρέπει να χρησιμοποιείτε πάντα τον Τριαδικό τελεστή Python;

Μέχρι στιγμής, μάθαμε πώς να χρησιμοποιούμε τον τριαδικό τελεστή. Πρέπει όμως να χρησιμοποιούμε πάντα τον τριαδικό τελεστή; Λοιπόν, ο τριαδικός χειριστής μπορεί να μην είναι η καλύτερη επιλογή για όλες τις περιπτώσεις χρήσης. Αυτή η ενότητα αναλύεται πότε πρέπει να προτιμάτε να χρησιμοποιείτε τον τριαδικό τελεστή έναντι των δηλώσεων if-else. Θα καλύψουμε επίσης πότε θα πρέπει να σκεφτούμε να χρησιμοποιήσουμε τη δήλωση if-else αντί για τον τριαδικό τελεστή.

Πιο συνοπτικά από τα μπλοκ If-Else

Όπως αναφέρθηκε, στην Python, η έκφραση του τριαδικού τελεστή είναι πιο συνοπτική από τη δήλωση if-else. Επομένως, μπορείτε να το χρησιμοποιήσετε για να ελέγξετε για συνθήκες και να αξιολογήσετε τις εκφράσεις υπό όρους εν κινήσει.

Στο παρακάτω παράδειγμα, το nums είναι μια λίστα με 100 τυχαία δημιουργημένους ακέραιους αριθμούς. Για καθέναν από τους 100 αριθμούς, ελέγχουμε αν είναι μονός ή ζυγός. Και αυτή η αξιολόγηση πραγματοποιείται ενσωματωμένα μέσα στη συμβολοσειρά f.

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'}")
# sample output

0 is even
56 is even
6 is even
53 is odd
62 is even
7 is odd
8 is even
77 is odd
41 is odd
94 is even

Ο Τριμερής Χειριστής Απαιτεί την Άλλη Ρήτρα

Όταν χρησιμοποιείτε τις προτάσεις υπό όρους if-else, η ρήτρα else είναι προαιρετική. Ας πάρουμε ένα παράδειγμα. Η μεταβλητή game_over ορίζεται σε True εάν η ενέργεια πέσει σε τιμή μικρότερη ή ίση με μηδέν.

Ωστόσο, εάν η ενέργεια είναι μεγαλύτερη από το μηδέν, η μεταβλητή game_over δεν αρχικοποιείται ποτέ. Επομένως, θα αντιμετωπίσετε σφάλματα εάν προσπαθήσετε να αποκτήσετε πρόσβαση στη μεταβλητή game_over.

energy = 5
if energy <= 0:
    game_over = True

print(f"Is the game over? {game_over}")
Traceback (most recent call last):
  File "ternary_op.py", line 39, in <module>
    print(f"Is the game over? {game_over}")
NameError: name 'game_over' is not defined

Ένας τρόπος για να διορθωθεί αυτό είναι να ορίσετε αρχικά το game_over σε False και να το ενημερώσετε σε True εάν το επίπεδο ενέργειας είναι μικρότερο ή ίσο με μηδέν.

energy = 5
game_over = False
if energy <= 0:
    game_over1 = True

print(f"Is the game over? {game_over}")

Ωστόσο, όταν χρησιμοποιείτε το ισοδύναμο τριαδικού τελεστή Python των παραπάνω, η ρήτρα else δεν είναι προαιρετική. Ο τριαδικός τελεστής απαιτεί να αξιολογηθεί η έκφραση όταν η συνθήκη είναι False.

game_over = True if energy <= 0 else False

Εάν αλλάξετε τα παραπάνω σε game_over = True if energy <= 0 αφαιρώντας το άλλο τμήμα, θα αντιμετωπίσετε συντακτικό σφάλμα, όπως φαίνεται:

File "ternary_op.py", line 42
    game_over = True if energy <= 0
                                  ^
SyntaxError: invalid syntax

Για να ελέγξετε για πολλαπλές συνθήκες, χρησιμοποιήστε δηλώσεις If-Else

Εξετάστε το παράδειγμα: Κάθε ερώτηση σε ένα σύνολο ερωτήσεων συνέντευξης κωδικοποίησης έχει μια σχετική βαθμολογία δυσκολίας. Ανάλογα με αυτή τη βαθμολογία, εκχωρούμε ένα από τα τρία επίπεδα δυσκολίας: εύκολο, μεσαίο ή δύσκολο, σε μια συγκεκριμένη ερώτηση. Ας υποθέσουμε ότι έχουμε τα εξής:

Βαθμολογία Επίπεδο Δυσκολίας Λιγότερο από 10 εύκολο Μεταξύ 10 και 20 μεσαίο Μεγαλύτερο από 20 σκληρό

Δεδομένου του βαθμού δυσκολίας, μπορείτε να λάβετε το επίπεδο δυσκολίας του χρησιμοποιώντας τον τριαδικό τελεστή Python όπως φαίνεται:

score = 12

difficulty_level = "easy" if score < 10 else "hard" if score > 20 else "medium"

print(difficulty_level)
# medium

Η έκφραση τριαδικού τελεστή στο παραπάνω μπλοκ κώδικα έχει την ακόλουθη μορφή:

expression1 if condition1 else expression2 if condition2 else expression3

Αν και συνοπτικό, είναι λίγο δύσκολο να διαβαστεί και να αναλυθεί. Η παρακάτω εικόνα δείχνει πώς συμβαίνει η ροή ελέγχου σε αυτήν την περίπτωση.

Το παρακάτω απόσπασμα κώδικα δείχνει μια ισοδύναμη υλοποίηση χρησιμοποιώντας δηλώσεις if-else. Όπως φαίνεται, η ροή ελέγχου είναι πολύ πιο κατανοητή και ο κώδικας είναι πιο ευανάγνωστος.

if score < 10:
    difficulty_level="easy"
elif score > 20:
    difficulty_level="hard"
else:
    difficulty_level="medium"

print(difficulty_level)

Επομένως, όταν έχετε πολλαπλές συνθήκες, θα πρέπει να χρησιμοποιείτε τα μπλοκ if-else αντί για τον τριαδικό τελεστή. Αυτό διασφαλίζει ότι ο κώδικας είναι ευανάγνωστος και κατανοητός.

Επίσης, όταν χρειάζεται να εκτελέσετε πολλές εντολές —ανάλογα με το αν η συνθήκη είναι αληθής ή ψευδής— θα πρέπει να σκεφτείτε να χρησιμοποιήσετε την πρόταση if-else.

συμπέρασμα

Ακολουθεί μια ανακεφαλαίωση όσων μάθατε σε αυτό το σεμινάριο.

  • Στην Python, ο τριαδικός τελεστής μπορεί να χρησιμοποιηθεί με την ακόλουθη σύνταξη: έκφραση1 αν συνθήκη else έκφραση2.
  • Μπορείτε να μιμηθείτε τη συμπεριφορά του τριαδικού τελεστή χρησιμοποιώντας πλειάδες και λεξικά Python.
  • Ενώ ο τριαδικός τελεστής μπορεί να είναι μια πιο συνοπτική εναλλακτική λύση στα μπλοκ if-else, θα πρέπει να βεβαιωθείτε ότι ο κώδικας είναι αναγνώσιμος. Για να βελτιώσετε την αναγνωσιμότητα του κώδικα, μπορείτε να χρησιμοποιήσετε τις εντολές if-else αντί για τον τριαδικό τελεστή, ειδικά όταν χρειάζεται να συνδέσετε πολλαπλές συνθήκες.

Στη συνέχεια, μάθετε να παρακολουθείτε το σεμινάριο για ίσους και όχι ίσους τελεστές στην Python.