כאשר אנו מדברים על קבלת החלטות, הכוונה היא לתנאים שהתכנית נתקלת בהם בזמן ההרצה, ומבצעת פעולות מוגדרות לפי התנאים
מבנה של תנאי מכיל מספר ביטויים, שמחזירים ערך אמת או כזב כתוצאה. עלינו להחליט איזו פעולה התכנית תבצע בהתאם לתוצאת התנאי – אמת או כזב. לפניכם תרשים זרימה המתאר מבנה תנאי בסיסי והוא נכון לרוב שפות התכנות הקיימות:
מתרשים זרימה זה ניתן להבין מערכת תנאי בסיסית – התכנית נתקלת בתנאי, אם תנאי הוא אמת התוכנית תוציא לפועל את הקוד שנמצא בגוף התנאי, אם תנאי הוא כזב התכנית תדלג על גוף הקוד ותתעלם ממנו לחלוטין. שימו לב כי שפת Python מתייחסת לערכים שהם לא 0 וערכים שאינם ריקים null כאמת, ולערכים שהם 0 או null ככזב. שפת Python תומכת בסוגי קבלת ההחלטות הבאים:
משפטי If
דוגמה למערכת if פשוטה:
var = 100 if ( var == 100 ) : print ("Value of expression is 100") print ("Good bye!")
וכאשר נריץ תוכנית זו נקבל את התוצאה הבאה:
Value of expression is 100
!Good bye
כפי שניתן לראות, בתוכנית זו יצרנו משתנה int בשם var ולו נתנו 100 כערך, לאחר מכן במשפט התנאי if בדקנו אם הערך של משתנה var שווה ל-100, התוצאה שנתקבלה מבדיקה זו היא אמת ולכן התכנית הדפיסה את הפלט.
משפטי If…Else
משפטי else ניתנים לשילוב עם משפטי if, בלוק הקוד של משפט ה-else יצא לפועל רק אם התנאי שהחזיר משפט ה-if הוא כזב או 0. משפט ה-else הוא אופציונלי, ובכל מקרה, רק משפט else אחד יכול להגיע אחרי משפט if. התחביר הבסיסי של משפט ה-If…Else עובד כך:
if expression: statement(s) else: statement(s)
לפניכם תוכנית שמשתמשת במשפטי If…Else. כאשר זו תוכנית שתבקש מאיתנו להזין סכום, אם הסכום שנזין גדול מ-1000 אז נקבל 10 אחוזי הנחה, ואם קטן מ-1000 אז נקבל 5 אחוזי הנחה, לפני שהתוכנית תסתיים יצא לנו פלט של סכום ההנחה וסך לתשלום:
amount = int(input("Enter amount: ")) if amount<1000: discount = amount*0.05 print ("Discount",discount) else: discount = amount*0.10 print ("Discount",discount) print ("Final Price:",amount-discount)
פלט זה מראה 2 דוגמאות של תוצאה לתוכנית, כאשר בפעם הראשונה הזנו 250 ובפעם השניה 1300:
Enter amount: 250
Discount 12.5
Final Price: 237.5
Enter amount: 1300
Discount 130.0
Final Price: 1170.0
משפטי Elif
משפטי elif מאפשרים לנו לבדוק תנאי אמת ביותר ממשפט if אחד. בלוק הקוד של גוף התנאי יוצא לפועל ברגע שאחד מהמשפטים הוא אמת. בדומה ל-else, משפט ה-elif הוא אופציונלי, אך בניגוד לו, ניתן לכתוב כמה משפטי elif שנרצה אחרי משפט if אחד. זהו התחביר הבסיסי למשפטי elif:
if expression1: statement(s) elif expression2: statement(s) elif expression3: statement(s) else: statement(s)
לשפת Python אין משפטי switch ו-case כמו בשפות אחרות, אך אנו יכולים לעשות פעולה באמצעות משפטי if..elif:
amount = int(input("Enter amount: ")) if amount<1000: discount = amount*0.05 print ("Discount",discount) elif amount<5000: discount = amount*0.10 print ("Discount",discount) else: discount = amount*0.15 print ("Discount",discount) print ("Net payable:",amount-discount)
וכאשר נריץ את התוכנית היא תעשה בדיוק את אותה הפעולה כמו הקודמת, ולכן אם ניתן את אותם הערכים נקבל תוצאה זהה:
Enter amount: 250
Discount 12.5
Final Price: 237.5
Enter amount: 1300
Discount 130.0
Final Price: 1170.0
משפטי if מרושתים
במהלך עבודתנו כמתכנתים אנו עלולים להיתקל לא פעם בסיטואציה שברצוננו להשתמש במשפטי if על מנת לבדוק תנאי אחרי תנאי. בסיטואציה כזו ניתן להשתמש במשפטי if מרושתים, וזהו התחביר הבסיסי:
if expression1: statement(s) if expression2: statement(s) elif expression3: statement(s) else statement(s) elif expression4: statement(s) else: statement(s)
לפניכם דוגמא של תוכנית אשר משתמשת במשפטי if מרושתים ובודקת אם מספר נתון יכול להתחלק ב-3 ו-2:
num = int(input("enter number: ")) if num%2 == 0: if num%3 == 0: print ("Divisible by 3 and 2") else: print ("divisible by 2 not divisible by 3") else: if num%3 == 0: print ("divisible by 3 not divisible by 2") else: print ("not Divisible by 2 not divisible by 3")
ובהנחה שהזנו 6 בקלט של התוכנית, נקבל את הפלט הבא:
enter number: 6
Divisible by 3 and 2