שימוש באופרטורים לוגיים בתנאים

שימוש באופרטורים לוגיים בתנאים#

נניח שאנחנו מעוניינים לבדוק האם משתנים להלן שווים כולם זה לזה.

a = 111111111111 * 111111111111
b = 12345679012308641986431 + 12345667890
c = 12345679110300785634118 - 979797979797979

אפשר כמובן להדפיס את המספרים ולבדוק זאת בעין, אבל המספרים האלו גדולים וזה לא יהיה כיף גדול (וגם אנחנו עלולים לטעות בקלות).

לעומת זאת, בעזרת שימוש בתנאים, ישנה דרך פשוטה לבדוק אם כל המספרים שווים זה לזה מבלי להדפיס אותם. הנה תוכנית בפייתון שעושה זאת:

if a == b:
    if b == c:
        print("All numbers are equal")
    else:
        print("Not all numbers are equal")
else:
    print("Not all numbers are equal")
Not all numbers are equal

שימו לב שאין צורך לבדוק האם a==c כי ברגע שגילינו שגם a==b וגם b==c מתחייב ש-a==c הוא אמת.

את התוכנית הזאת היה אפשר לכתוב באופן מעט יותר נעים לעין, וגם לחסוך פקודת הדפסה אחת, ע”י שימוש באופרטור הלוגי and (וגם):

if a == b and b == c:
    print("All numbers are equal")
else:
    print("Not all numbers are equal")
Not all numbers are equal

המילה and משמשת כ”דבק” שמחבר שני תנאים בסיסיים לתנאי אחד מורכב.

כפי שלמדנו, ניתן לחבר באמצעות and יותר מספר ערכים בוליאניים. למשל:

a = 111111111111 * 111111111111
b = 12345679012308641986431 + 12345667890
c = 12345679110300785634118  979797979797979
d = 12345679110300785634118  97979797979797

if a == b and b == c and c == d:
    print("All numbers are equal")
else:
    print("Not all numbers are equal")
  Cell In[6], line 3
    c = 12345679110300785634118  979797979797979
                                ^
SyntaxError: invalid character '–' (U+2013)

באופן דומה, ניתן להשתמש באופרטור הלוגי or (או) כדי לבדוק אם לפחות אחד התנאים מתקיים. במקרה שלנו, היינו משתמשים בor אילו רצינו לבדוק אם מבין המספרים a, b ו-c יש שניים ששווים זה לזה:

if a == b or b == c or a == c:
    print("Some of the numbers are equal")
else:
    print("All numbers are different")

שימו לב שכדי לבדוק אם יש שני ערכים שווים מבין a, b, c היינו צריכים לבדוק את כל שלוש האפשרויות, כפי שרואים בקוד.

הנה עוד דוגמה:

a = 12
if a == 10 or a == 11 or a == 12 or a == 13:
    print("a is between 10-13")

כאן אנחנו בודקים האם הערך של המשתנה a הוא 10 או 11 או 12 או 13.

שימו לב! יש לחזור על התנאי במלואו בכל פעם. טעות נפוצה היא לנסות לקצר ולכתוב a==10 or 11 or 12 or 13. זה לא עובד בפייתון, כי כל אחד מהתנאים הבסיסיים צריך להיות בוליאני המייצג “האם a שווה ל…”.

בחנו את עצמכם

בקוד להלן הוחלף בערך של st בסימני שאלה (???):

st=???

if "A" in st:
    print(st) 
elif len(st) > 3 or st[0] == "A" or st + "f" == "abcdef":
    print(st*2)
else:
    print("what a nice day!")