Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

קורס Python – פרק 6 – קבלת החלטות

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

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

 

תרשים זרימה משפט תנאי if

 

מתרשים זרימה זה ניתן להבין מערכת תנאי בסיסית – התכנית נתקלת בתנאי, אם תנאי הוא אמת התוכנית תוציא לפועל את הקוד שנמצא בגוף התנאי, אם תנאי הוא כזב התכנית תדלג על גוף הקוד ותתעלם ממנו לחלוטין. שימו לב כי שפת 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

 

לפניכם תוכנית שמשתמשת במשפטי 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

רוצים לשתף את המדריך?

שיתוף ב facebook
שיתוף ב twitter
שיתוף ב telegram
שיתוף ב whatsapp
שיתוף ב linkedin
שיתוף ב tumblr
שיתוף ב email
שיתוף ב reddit
שיתוף ב skype
שיתוף ב vk

אהבתכם את המדריך? פתר לכם תקלה?

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

כתיבת תגובה