פקודת הif
(בעברית צחה- "פקודת התנאי", באנגלית if statement) היא אחד המושגים הבסיסיים ביותר בתכנות. הפקודה הזו מאפשרת לנו לקבל החלטות על סמך תנאי בוליאני.
כך נראית צורת כתיבה בסיסית של הפקודה (צורת כתיבה = סינטקס = syntax):
בואו נסתכל על הדוגמא הבסיסית ביותר לif statement:
מבנה if statement#
השורה הראשונה של פקודת התנאי מורכבת משלושה חלקים:
- המילה
if
. - התנאי הבוליאני לבדיקה. 👆בדוגמא למעלה
x==5
יחזירTrue
. - נקודותיים
:
השורה הבאה פותחת בלוק חדש:
- כל הבלוק מתואר בהזחה . הזחה היא רווח קבוע מתחילת השורה ונקרא באנגלית indentation.
- ניתן לייצר הזחה בקוד בעזרת לחיצה על כפתור ה Tab במקלדת.
- אפשרות אחרת היא לכתוב ארבעה רווחים במקום Tab, אבל אנחנו פחות אוהבים 🙈
- הבלוק של הקוד יתבצע רק אם התנאי הבוליאני מחזיר
True
. - 👆בדוגמא למעלה הבלוק שלנו הוא שורה אחת
print("Inside the if block!")
. השורה הזו תתבצע במקרה שלנו כי התנאי הבוליאניx==5
מחזירTrue
. שימו לב שגודל הבלוק יכול להיות יותר משורה אחת, כאשר כל השורות חייבות להיות באותו רווח קבוע (הזחה).
לאחר סיום הבלוק המוזח חוזרים להמשך הקוד הרגיל.
👆בדוגמא למעלה המשך הקוד הוא שורה אחת print("The rest of the code...")
.
כשהתנאי מחזיר False
#
בואו נסתכל על דוגמא אחרת, ועכשיו התנאי יחזיר לנו False
:
אפשר לראות שעכשיו הבלוק המוזח לא ירוץ כי התנאי לא מתקיים.
שנו את y
כך שהתנאי יתקיים!
פקודות if
מקוננות#
מְקוּנָּן - זכר (מהאתר מילוג)
- משוכן, דייר של קן.
- כלול בפריט מסוגו במבנה מדורג.
בתכלס, if בתוך if. נקרא באנגלית "nested if".
כך נראית תצורה בסיסית:
הכי קל להבין בעזרת דוגמא. נתחיל מקוד שאנחנו אמורים להבין, ללא תנאים מקוננים:
אפשר לשים לב שאנחנו בודקים את התנאי הבא פעמיים:
במקום זאת אנחנו יכולים לבדוק את התנאי הזה פעם אחת ואז בתוך הבלוק שמתאים לתנאי הזה לעשות עוד בדיקת תנאי של שם המשפחה:
בתצורה הזו הקוד נעשה יותר קריא ומובן. אנחנו נפגוש את הקונספט הזה של בלוקים מקוננים עוד רבות בקורס ובפייתון בכלל.
תרגילים#
תרגיל 1- Two ifs#
קבל מספר שלם כקלט מהמשתמש.
כתוב הוראת if שבודקת אם המספר מתחלק ב-3 ללא שארית. אם כן, הדפס: The number is divisible by 3
.
כתוב הוראה נוספת שבודקת אם המספר נמצא בין 10 ל-20 (כולל). אם כן, הדפס: The number is between 10 and 20
.
תרגיל 2- Nested ifs#
קבלו מספר מהמשתמש
עבור x גדול מ10 הדפיסו I'm bigger than 10
.
אם בנוסף x מתחלק ב3 הדפיסו גם I can also be divided by 3
בכל מקרה אחר שום הדפסה לא תתבצע.
חובה להשתמש בnested ifs.
תוצאת הדפסה לדוגמא:
Enter a number: 15
I'm bigger than 10
I can also be divided by 3
ועוד תוצאה לדוגמא:
Enter a number: 16
I'm bigger than 10