פייתון/פייתון גרסה 2/ביטויים בוליאניים ותנאים
כדי להשתמש בנתונים שנקלטו מהמשתמש ולנתב בעזרתם את התוכנה, מדי פעם צריכים לעשות בדיקה של הנתונים.
ערכים בוליאניים
[עריכה]אמת ושקר, וייצוגם בפייתון
[עריכה]ביטוי בוליאני הוא ביטוי שיכול לקבל את הערכים "אמת" ו"שקר". לעתים צריך בתכניות מחשב להכריע האם דבר הוא אמת או שקר, לדוגמה, האם נכון שערכו של המשתנה x הוא 6, או האם שקר הוא שערכו של המשתנה x קטן מערכו של המשתנה y.
בפייתון נהוגה המוסכמה לפיה "שקר" מצויין על ידי:
- הערך False
- הערך המספרי 0
- אוסף ריק - רשימה ריקה, מחרוזת ריקה וכו'
- עצם מיוחד, None, שנועד לסמן "כלום"
- ערך שקר המוחזר מהמתודה __bool__ אם ישנה כזאת.
ערכים אחרים מציין "אמת". בהמשך דף זה ובלולאות נראה כיצד לגרום למחשב לבצע פעולות שונות בהתאם לשאלה האם ערך כלשהו הוא אמת או שקר.
אופרטורים בוליאניים
[עריכה]פייתון כוללת מספר אופרטורים בוליאניים, כלומר אופרטורים שתוצאתם היא "אמת" או "שקר". לדוגמה, כדי לבדוק האם ערך המשתנה 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 (ייתכן שתרצה לבדוק זאת בקצרה לפני המעבר לנושא הבא).
הערכת ביטויים לוגיים מורכבים
[עריכה]
שקלו לדלג על נושא זה הקוד הנוצר משימוש בטכניקה זו עלול לבלבל מתכנתים מתחילים. עם זאת, טכניקה זו נמצאת בשימוש רב, בעיקר במערכים, ולכן מומלץ שתשוב לנושא כאן כשתגיע לשם. |
בעת הרצת התוכנית מתבצע חישוב של תנאי מורכב משמאל לימין, ובשימוש בקצר לוגי (שיוסבר להלן).
נתבונן בתנאי המורכב:
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 x == 6:
print 'x is 6'
ידפיס אם ערך x אכן 6 תתבצע ההדפסה (ואם לא - לא).
כמובן שנוכל ליצור תנאים מסובכים מעט יותר:
- אפשר להשתמש באופרטורים בוליאניים ולוגיים כדי ליצור תנאים בוליאניים מורכבים לבדיקת ה-if.
- אפשר להשתמש בבלוקים כדי לבצע רצף של פקודות במקרה שהתנאי אמת.
עכשיו תורכם: כתוב קטע שיבדוק האם ערך משתנה x הוא 5 או 6, ומדפיס הודעה אם אכן הדבר כן. |
if x == 5 or x == 6:
print 'x is either 5 or 6'
עכשיו תורכם: כתוב קטע שיבדוק האם ערך משתנה x הוא 5, ואם כן, ישים את הערך 1 למשתנה i, ו-2 למשתנה j. |
if x == 5:
i = 1
j = 2
else
[עריכה]לפעמים צריך לציין הן מה לעשות כשתנאי מתקיים, והן מה לעשות כשאינו מתקיים. במקרה זה אפשר להשתמש בתנאי if / else.
if <condition>:
<action>
else:
<alternative_action>
כאן condition הוא תנאי, action הוא פקודה (או בלוק) לביצוע אם התנאי מתקיים, ו-alternative_action הוא פקודה (או בלוק) לביצוע אם אינו מתקיים.
התרשים הבא מראה את התנאי בצורה גרפית:
לדוגמה:
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
[עריכה]ניתן לשלב בין שלושת תנאי הבקרה שראינו. המבנה הכללי ביותר הוא:
- תנאי if, שלאחריו
- אפס או יותר תנאי if else, שלאחר האחרון שבהם (אם יש כאלה)
- תנאי else
בדיקת תוכן של משתנה
[עריכה]על מנת לבדוק ערך של משתנה, אפשר להשתמש באופרטור is
:
if object_name is value:
...
if object_name is not value:
...
אפשר גם להשתמש באופרטור שוויון:
if object_name == value:
...
if object_name != value:
...
בלוקים
[עריכה]פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
אופרטור התניה
[עריכה]אופרטור התניה מאפשר לציין ערך שתלוי בתנאי כלשהו. אופן כתיבתו בצורה:
<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'
- | ביטויים בוליאניים ותנאים | - |