פייתון/ביטויים בוליאניים ותנאים

מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.

קפיצה אל: ניווט, חיפוש



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

תוכן עניינים

[עריכה] ערכים בוליאניים

[עריכה] אמת ושקר, וייצוגם בפייתון

ביטוי בוליאני הוא ביטוי שיכול לקבל את הערכים "אמת" ו"שקר". לעתים צריך בתכניות מחשב להכריע האם דבר הוא אמת או שקר, לדוגמה, האם נכון שערכו של המשתנה x הוא 6, או האם שקר הוא שערכו של המשתנה x קטן מערכו של המשתנה y.

בפייתון נהוגה המוסכמה לפיה "שקר" מצויין על ידי:

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

[עריכה] אופרטורים בוליאניים

פייתון כוללת מספר אופרטורים בוליאניים, כלומר אופרטורים שתוצאתם היא "אמת" או "שקר". לדוגמה, כדי לבדוק האם ערך המשתנה x הוא 6, רושמים

x == 6

כאשר יתבצע קטע קוד זה, יתרגם אותו המחשב ל"אמת" (ערך כלשהו שאינו 0) אם ערך x אכן 6, או ל"שקר" (הערך המספרי 0) אם ערכו שונה.

שים לב להבדל בין האופרטור == לבין פעולת הקישור =.

לפייתון האופרטורים הבוליאניים הבאים:

  • == (להבדיל מ= המשמש להשמה) - האם שני צדי הביטוי שווים
  • =! - האם שני צדי הביטוי שונים
  • > - האם הצד הימני של הביטוי גדול מצדו השמאלי
  • < - האם הצד הימני של הביטוי קטן מצדו השמאלי
  • => - האם הצד הימני של הביטוי גדול או שווה לצדו השמאלי
  • =< - האם הצד הימני של הביטוי קטן או שווה לצדו השמאלי

תוכל לראות כיצד משתמשים באופרטורים בוליאניים בתנאי if (ייתכן שתרצה לבדוק זאת בקצרה לפני המעבר לנושא הבא).

[עריכה] אופרטור הזהות is

פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.

[עריכה] אופרטורים לוגיים

[עריכה] גימום, איווי, ושלילה

ביטוי בוליאני יכול להיות מורכב גם מאוסף של ביטויים בוליאניים פשוטים יותר, המחוברים על ידי קשרים לוגיים, למשל: "אם x שווה 5 או x שווה 6", או: "אם x גדול מ-y וגם y גדול מ-z", וכדומה.

גימום (conjunction בלעז), כלומר הקשר הלוגי "וגם", מיוצג על ידי and:

<condition_1> and <condition_2>

כאשר condition_1 וcondition_2 הם שני תנאים בוליאניים, והגימום הוא אמת אם ורק אם שניהם אמת. לדוגמה:

x == 5 and y == 6

הוא התנאי שערכו של x הוא 5 וכן ערכו של y הוא 6.


איווי (disjunction בלעז), כלומר הקשר הלוגי "או", מיוצג על ידי or:

<condition_1> or <condition_2>

כאשר condition_1 וcondition_2 הם שני תנאים בוליאניים, והאיווי הוא אמת אם ורק אם לפחות אחד מהם אמת אמת. לדוגמה:

x == 5 or y == 6

הוא התנאי שערכו של x הוא 5 או שערכו של y הוא 6.

שלילה (negation בלעז), כלומר הקשר הלוגי "לא", מיוצג על ידי not:

not <condition>

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

not (x == 5)

הוא התנאי השולל שערכו של x הוא 5.


ניתן גם ליצור תנאים המורכבים ממספר גדול יותר של ביטויים וקשרים לוגיים, ולהשתמש בסוגריים ע"מ לקבוע את סדר חישובם. למשל:

a > b or (a <= b and b==5)

תוכל לראות כיצד משתמשים באופרטורים בוליאניים בתנאי if (ייתכן שתרצה לבדוק זאת בקצרה לפני המעבר לנושא הבא).

[עריכה] הערכת ביטויים לוגיים מורכבים

Edit-undo.svg

שקול לדלג על נושא זה

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




בעת הרצת התוכנית מתבצע חישוב של תנאי מורכב משמאל לימין, ובשימוש בקצר לוגי (שיוסבר להלן).

נתבונן בתנאי המורכב:

x == 5 or y == 6

מבין שני הביטויים כאן, הביטוי השמאלי, x == 5 הוא זה שיוערך ראשון. כעת יש שתי אפשרויות:

  • אם ביטוי זה הוא שקר, עדיין יכול הביטוי המורכב, x == 5 or y == 6, להיות אמת - יש לבדוק אם הביטוי הימני, y == 6, הוא אמת.
  • אם ביטוי זה הוא אמת, אז הביטוי המורכב, x == 5 or y == 6, בהכרח אמת. אין צורך אפילו לבדוק את הביטוי הימני. השפה מבטיחה במקרה זה לערוך קצר לוגי - היא כלל לא תעריך את y == 6.

השפה מבטיחה שני סוגי קצרים לוגיים. בתנאי המורכב

<left_condition> or <right_condition>

לא יוערך הביטוי right_condition אם left_condition אמת. בתנאי המורכב

<left_condition> and <right_condition>

לא יוערך הביטוי right_condition אם left_condition שקר.

בפייתון משתמשים בקצרים לוגיים באופן תדיר. לדוגמה:

if x != 0 and 1 / x < 2:
  print 'OK'

מבטיחה, על ידי קצר לוגי, שלא תתבצע בטעות חלוקה ב-0.

[עריכה] תנאי בקרה

תנאי בקרה (selection statements) מאפשרים לציין אילו קטעי קוד יבוצעו בהתאם לתנאים כלשהם.

[עריכה] if

משפטי תנאי מתחילים במילה if, לאחריו ביטוי בוליאני, ולאחריו הפקודה (או הבלוק) שיש לבצע במקרה שהביטוי הבוליאני אמת:

if <condition>:
  <action>

כאשר condition הוא התנאי הבוליאני לבדיקה, ו-action הוא הפקודה (או הבלוק).

התרשים הבא מראה את התנאי בצורה גרפית:

התנאי if

לדוגמה, קטע הקוד:

if x == 6:
  print 'x is 6'

ידפיס אם ערך x אכן 6 תתבצע ההדפסה (ואם לא - לא).

כמובן שנוכל ליצור תנאים מסובכים מעט יותר:

  • אפשר להשתמש באופרטורים בוליאניים ולוגיים כדי ליצור תנאים בוליאניים מורכבים לבדיקת ה-if.
  • אפשר להשתמש בבלוקים כדי לבצע רצף של פקודות במקרה שהתנאי אמת.


Thumbs up.png

עכשיו תורך:

כתוב קטע שיבדוק האם ערך משתנה x הוא 5 או 6, ומדפיס הודעה אם אכן הדבר כן.






Thumbs up.png

עכשיו תורך:

כתוב קטע שיבדוק האם ערך משתנה x הוא 5, ואם כן, ישים את הערך 1 למשתנה i, ו-2 למשתנה j.





[עריכה] else

לפעמים צריך לציין הן מה לעשות כשתנאי מתקיים, והן מה לעשות כשאינו מתקיים. במקרה זה אפשר להשתמש בתנאי if / else.

if <condition>:
  <action>
else:
  <alternative_action>

כאן condition הוא תנאי, action הוא פקודה (או בלוק) לביצוע אם התנאי מתקיים, ו-alternative_action הוא פקודה (או בלוק) לביצוע אם אינו מתקיים.

התרשים הבא מראה את התנאי בצורה גרפית:

התנאי if-else


לדוגמה:

if x==6:
  y += 2
else:
  y = 8

יחבר 2 ל-y אם x == 6, ויקבע את ערכו של y ל-8 אם ערכו של x אינו 6.

[עריכה] else if

לפעמים צריך לציין הן מה לעשות כשתנאי מתקיים, והן מה לעשות כשאינו מתקיים, אך תנאי אחר כן מתקיים. במקרה זה אפשר להשתמש בתנאי if / else if.

if <condition>:
  <action>
else if <alternative_condition>:
  <alternative_action>

כאן condition הוא תנאי, action הוא פקודה (או בלוק) לביצוע אם התנאי מתקיים, alternative_condition הוא תנאי לבדיקה אם condition הוא שקר, ו-alternative_action הוא פקודה (או בלוק) לביצוע אם condition הוא שקר אך alternative_condition הוא אמת.

לדוגמה:

if x==6 :
  y += 2
else if x % 2 == 0:
  y = 8

יחבר 2 ל-y אם x == 6, ויקבע את ערכו של y ל-8 אם ערכו של x אינו 6 אך x זוגי.


{{{גודל}}}

כדאי לדעת:

במקום לכתוב else if ניתן לכתוב פשוט elif.



[עריכה] שילובי if / else if / else

ניתן לשלב בין שלושת תנאי הבקרה שראינו. המבנה הכללי ביותר הוא:

  1. תנאי if, שלאחריו
  2. אפס או יותר תנאי if else, שלאחר האחרון שבהם (אם יש כאלה)
  3. תנאי else

[עריכה] בדיקת תוכן של משתנה

על מנת לבדוק ערך של משתנה, אפשר להשתמש באופרטור is:

if object_name is value:
...
if object_name is not value:
...

אפשר גם להשתמש באופרטור שוויון:

if object_name == value:
...
if object_name != value:
...

[עריכה] בלוקים

פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.

[עריכה] אופרטור התניה

Achtung.svg

שימו לב:

נושא זה מתאים לגרסה 2.5 ומעלה של פייתון.




אופרטור התניה מאפשר לציין ערך שתלוי בתנאי כלשהו. אופן כתיבתו בצורה:

<true_value> if <condition> else <false_value>

כאשר condition הוא ביטוי בוליאני, true_value הוא הערך אם condition תקף, ו-false_value הוא הערך אחרת. לדוגמה

1 if a == 3 else 2

הוא בעל הערך 1 אם a אכן שווה ל-3, והוא בעל הערך 2 אחרת.

חשוב להבין שאפשר להשתמש באופרטור התניה כערך לכל דבר. לדוגמה, ניתן לכתוב:

b = 1 if a == 3 else 2

וכן

print 'moshe' if a > 5 else 'yaakov'



הפרק הקודם:
רשימות
ביטויים בוליאניים ותנאים הפרק הבא:
לולאות