Bo

Boolean σε Python

70 ασκήσεις

Σχετικά με την έννοια Boolean

Η Python αναπαριστά τις αληθείς και ψευδείς τιμές με τον τύπο bool, ο οποίος είναι υποκλάση του int. Υπάρχουν μόνο δύο Boolean τιμές σε αυτόν τον τύπο: True και False. Αυτές οι τιμές μπορούν να ανατεθούν σε μια μεταβλητή και να συνδυαστούν με τους τελεστές Boolean (and, or, not):

>>> true_variable = True and True
>>> false_variable = True and False

>>> true_variable = False or True
>>> false_variable = False or False

>>> true_variable = not False
>>> false_variable = not True

Οι τελεστές Boolean χρησιμοποιούν αποτίμηση βραχυκυκλώματος, που σημαίνει ότι η έκφραση στη δεξιά πλευρά του τελεστή αποτιμάται μόνο αν χρειάζεται.

Κάθε τελεστής έχει διαφορετική προτεραιότητα: το not αποτιμάται πριν από το and και το or. Οι παρενθέσεις μπορούν να χρησιμοποιηθούν για να αποτιμηθεί ένα μέρος της έκφρασης πριν από τα υπόλοιπα:

>>> not True and True
False

>>> not (True and False)
True

Όλοι οι boolean operators θεωρούνται χαμηλότερης προτεραιότητας από τους comparison operators της Python, όπως τα ==, >, <, is και is not.

Μετατροπή τύπων και truthiness

Η συνάρτηση bool (bool()) μετατρέπει οποιοδήποτε αντικείμενο σε μια Boolean τιμή. Από προεπιλογή, όλα τα αντικείμενα επιστρέφουν True, εκτός αν έχει οριστεί να επιστρέφουν False.

Μερικά built-ins θεωρούνται πάντα False εξ ορισμού:

  • οι σταθερές None και False
  • το μηδέν οποιουδήποτε αριθμητικού τύπου (int, float, complex, decimal ή fraction)
  • κενές ακολουθίες και συλλογές (str, list, set, tuple, dict, range(0))
>>> bool(None)
False

>>> bool(1)
True

>>> bool(0)
False

>>> bool([1,2,3])
True

>>> bool([])
False

>>> bool({"Pig" : 1, "Cow": 3})
True

>>> bool({})
False

Όταν ένα αντικείμενο χρησιμοποιείται σε ένα Boolean περιβάλλον, αξιολογείται με διαφάνεια ως truthy ή falsey χρησιμοποιώντας τη bool():

>>> a = "is this true?"
>>> b = []

# This will print "True", as a non-empty string is considered a "truthy" value
>>> if a:
...  print("True")

# This will print "False", as an empty list is considered a "falsey" value
>>> if not b:
...   print("False")

Οι κλάσεις μπορούν να ορίσουν πώς αξιολογούνται σε καταστάσεις truthy, αν υπερκαλύπτουν και υλοποιούν μια μέθοδο __bool__(), ή/και μια μέθοδο __len__().

Πώς λειτουργούν τα Boolean εσωτερικά

Ο τύπος bool είναι υλοποιημένος ως υπο-τύπος του int. Αυτό σημαίνει ότι το True είναι αριθμητικά ίσο με το 1 και το False είναι αριθμητικά ίσο με το 0. Αυτό είναι παρατηρήσιμο όταν τα συγκρίνουμε με έναν τελεστή ισότητας:

>>> 1 == True
True

>>> 0 == False
True

Ωστόσο, τα bools είναι ακόμα διαφορετικά από τα ints, όπως φαίνεται όταν τα συγκρίνουμε με τον τελεστή ταυτότητας, το is:

>>> 1 is True
False

>>> 0 is False
False

Σημείωση: στην python >= 3.8, η χρήση ενός literal (όπως 1, '', [] ή {}) στην αριστερή πλευρά του is θα εμφανίσει μια προειδοποίηση.

Θεωρείται αντιπρότυπο της Python να χρησιμοποιείς τον τελεστή ισότητας για να συγκρίνεις μια μεταβλητή Boolean με το True ή το False. Αντ' αυτού, θα πρέπει να χρησιμοποιείς τον τελεστή ταυτότητας is:


>>> flag = True

# Not "Pythonic"
>>> if flag == True:
...    print("This works, but it's not considered Pythonic.")

# A better way
>>> if flag:
...    print("Pythonistas prefer this pattern as more Pythonic.")
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Boolean

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 2 ακόμη ασκήσεις για να εξασκηθείς στην έννοια Boolean