Menu
CoddyTech

אופרטורים לוגיים חלק 4

חלק מהיחידה יסודות במסלול ה-Python של Coddy. שיעור 19 מתוך 77.

כשעובדים עם ביטויים לוגיים, לפעמים צריך לפשט או לסדר אותם מחדש. הדבר שימושי במיוחד כשעוסקים בתנאים מורכבים שמשלבים כמה אופרטורים מסוג and ו-or.

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

החוק הראשון: not (A and B) זהה ל־(not A) or (not B)

שימו לב ששני דברים קורים כשמפזרים את not בביטוי: כל אחד מהאופרנדים נשלל (A הופך ל־not A, B הופך ל־not B), וגם האופרטור מתהפך: and הופך ל־or. not לא רק שולל את הערכים; הוא גם מחליף את האופרטור שמחבר ביניהם.

לדוגמה:

# בואו נבדוק אם מספר אינו (בין 1 ל-10)
number = 15
# שני הביטויים האלה שקולים:
result1 = not (number >= 1 and number <= 10)
result2 = (not number >= 1) or (not number <= 10)
print(result1)  # True
print(result2)  # True

החוק השני: not (A or B) זהה ל־(not A) and (not B)

אותו כלל דו-שלבי חל גם כאן: כל אופרנד נשלל, והאופרטור מתהפך. הפעם or הופך ל־and. אפשר לחשוב על זה כך: הפצת not תמיד הופכת את and ↔ or תוך שלילת כל חלק.

לדוגמה:

# בודקים אם אדם אינו (סטודנט או מועסק)
is_student = False
is_employed = False
# שני הביטויים האלה שקולים:
result1 = not (is_student or is_employed)
result2 = (not is_student) and (not is_employed)
print(result1)  # True
print(result2)  # True

דוגמה מורכבת עם AND ו-OR: לפעמים צריך תנאים שמשלבים את שני האופרטורים. הנה דוגמה מעשית:

# בודקים אם אי אפשר לקבל מועמדות לעבודה
# דוחים אם: (אין ניסיון AND אין תואר) OR לא עומדים בדרישת הגיל
has_experience = False
has_degree = False
meets_age = True
# תנאי מורכב שמשתמש גם ב-AND וגם ב-OR
reject_application = (not has_experience and not has_degree) or not meets_age
print(reject_application)  # True (נדחתה כי אין ניסיון AND אין תואר)
# אפשר לכתוב זאת גם באמצעות חוקי דה מורגן:
# accept = (experience OR degree) AND עומד בדרישת הגיל; reject = not accept
accept_application = (has_experience or has_degree) and meets_age
reject_application2 = not accept_application
print(reject_application2)  # True (אותה תוצאה, לוגיקה שונה)

מתי להשתמש בחוקי דה מורגן:

  • כדי להקל על קריאת תנאים שליליים
  • כדי לפשט ביטויים לוגיים מורכבים
  • כדי להמיר בין ייצוגים שונים של אותה הלוגיקה
challenge icon

אתגר

מתחילים

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

המשתנים האלה כבר מוגדרים בשבילכם:

  • has_license עם הערך True
  • has_space עם הערך True
  • has_experience עם הערך False

כתבו ביטויים לוגיים כדי לקבוע אם:

  • can_sell_regular_pet: הלקוח יכול לקנות חיית מחמד רגילה אם יש לו רישיון או ניסיון, וחייב להיות לו מקום
  • can_sell_exotic_pet: הלקוח יכול לקנות חיית מחמד אקזוטית אם יש לו גם רישיון וגם ניסיון, וחייב להיות לו מקום
  • cannot_sell_any_pet: החנות לא יכולה למכור שום חיית מחמד אם ללקוח אין רישיון ואין ניסיון, או שאין לו מקום

נסו בעצמכם

# חשבו את התנאים
# החליפו כל ערך מציין מקום למטה בביטוי הלוגי המתאים
can_sell_regular_pet = False
can_sell_exotic_pet = False
cannot_sell_any_pet = False

# אל תמחקו את השורות למטה
print("Can sell regular pet:", can_sell_regular_pet)
print("Can sell exotic pet:", can_sell_exotic_pet)
print("Cannot sell any pet:", cannot_sell_any_pet)
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Python אונליין