הסבר על תנאים ופונקציות פייתון Python Functions and Conditionals
Conditionals
IF
תנאים הם הבסיס של עולם התיכנות, נתחיל מהפשוט ביותר
a = 7 if a < 10: print("Less than Ten")
אם נגדיר ש a הוא 7 ואז אני מכניס תנאי if שאומר אם
כעת נקרא את התנאי "בקול" אם a קטן מ10 אז…. תדפיס "קטן מ10
והתוצאה
Less than Ten
Indentation
אינדנטציה חשובה מאוד בפייתון , שכן ב if כאשר אתם מסיימים לרשום את התנאי ואז :
נניח
if 10 > 15:
ואז לוחצים Enter לרדת שורה, תוכלו להבחין שהשורה בה אתם נמצאים היא "טיפה" קדימה וזאת בגלל ה Indentation
על מנת ש if ידע שהקוד שאתם כותבים שייך לאותו בלוק של קוד if אז חייבת להיות Indentation ולכן יש רווח
אם תנסו להריץ את הקוד בלי ה"רווחים" ה Indentation תקבלו שגיאה
a = 7 if a < 10: print("Less than Ten")
בדיוק כמו פה, והסיבה היא כפי שתוכלו לקרוא זה ה indented block
Else
הוא המשך ל if והוא אומר אם if לא מתרחש או שהתנאי if לא מתקיים, אז תבצע את הקוד הבא…
a = 20 if a < 10: print("Less than Ten") else: print("Greater Than Ten")
והתוצאה כעת היא
elif
למעשה אומר שאם התנאי הראשון לא התרחש, אז תבצע את התנאי הזה עם פעולה ובדיקה בדומה if הראשון
למה שנצטרך את זה, למשל בקוד כאן מה קורה כאשר המספר שווה ל10, מצד אחד הוא לא קטן מ.. ומצד אחר לא גדול מ..
ולכן כאשר ה if הראשון לא תקף אז פייתון יעבור לelif השני ואם הוא יהיה נכון אז הוא יבוצע
a = 10 if a < 10: print("Less than Ten") elif a == 10: print("Equal 10") else: print("Greater than Ten")
אסביר שוב: אם a קטן מ10 תדפיס "קטן מ10" אבל ניתן להבחין ש10 שווה ל10 ולכן הוא לא עונה על הקריטריון
אז מה שיקרה הוא elif אם a שווה ל10 (== אומר שווה ל) אז תדפיס "שווה ל10"
ולסיום, במקרה ש10 גדול יותר, הוא ידפיס גדול מ10
Exception
הוא למעשה שגיאה שנוצרת כאשר יש טעות בקוד או טעות בערכים שניתנו בקוד
בדוגמה הזו נוכל להבחין שקבעתי שname הוא למעשה inger והוא למעשה ערך מספרי בלבד
אז מה יקרה אם נזין אותיות ולא מספרים, נקבל שגיאה, השגיאה שנקבל היא ValueError – קראו את השגיאה באדום בתמונה הבאה
בשביל שהמשתמש יקבל output נכון גם אם הזין נתונים לא נכונים, נגדיר try שבודק אם יש שגיאה ואם כן יבצע except כמו בדוגמא הבאה
פונקציות
פונקציה בהסבר פשוט היא "תוכנה" קטנה לעומת משתנה שמכיל ערך N פונקציה יכולה להכיל הכל ולהריץ את הפעולה שאתם רוצים לבצע
הסבר פשוט יותר הוא תארו לכם שאתם כותבים קוד שמבצע פעולה מסוימת, נניח הפעולה היא כתיבה למסד הנתונים לטבלה מסוימת ואז אתם צריכים את אותו הקוד עוד כמה פעמים בתוך הסקריפט שלכם.
בצורה רגילה אתם תקישו שוב את אותו הקוד ואז שוב וככה יהיה לכם קוד כפול בקוד עם שינויים קטנים, ע"י פונקציה תוכלו פשוט לכתוב את המשתנה של הפונקציה בכל מקום בקוד והפונקציה שכתבתם תרוץ שוב וככה אתם חוסכים הקלדה.
נקיש את הקוד
def name(): print("My Name Is Tal") name()
כעת נקבל
My Name Is Tal
תחשבו שאם הקוד היה גדול – הרבה שורות, והיה בו הרבה מקומות שעשיתי בהם
print("Tal Ben Shushan")
הייתי צריך "ללכת" לכל המקומות האלו ולשנות את השם נניח ל Tal Ben Shushan The Pyton
במקום זאת אני יכול ליצור פונקציה וכך אם אבצע את הקוד
def name(): print("My Name Is Tal") name() name()
התוצאה תיהיה
My Name Is Tal My Name Is Tal
אני יכול גם להחיל על הפונקציה Modes שונים
Return
אבל בשביל זה אשתמש בreturn, שהוא למעשה אומר תחזיר לי את הערך בתוך הפונקציה, הוא יכניס את my name is tal לתוך הסוגריים שבname
def name(): return "My Name Is Tal" print(name().upper())
התוצאה
MY NAME IS TAL
אנחנו אפילו יכולים להציב Argument בתוך הפונקציה בצורה הבאה
עכשיו נעבור ל Placeholder בשם format. (יש נקודה בהתחלה)
הגדרנו את הפונקציה ששמה name והכנסנו לתוכה את המשתנה prvtname
נבצע אותה ואסביר בהמשך מה עשינו
def name(prvtname): return "{} Tal".format(prvtname) print(name("My Name Is"))
כעת נשתמש בPlaceholder שהוא {} סוגרים מסולסלות, כך למעשה אנחנו מגדירים שה{} נכנסים לפני הסטרינג Tal כך שהתוצאה של הפונקציה
היא My Name Is Tal.
למעשה הformat. הגדיר שהפונקציה prvtname תכנס לתוך {} אותו format. למעשה מחפש {} בכדי להכניס אליו את prvtname
אז מדוע בprint הדפסנו את הפונקציה name? כיוון שהגדרנו בשורה הראשונה שהפונקציה name היא משתנה בשם prvtname
כעת נוכל להוסיף משתנה עם ערך קבוע אלא אם יקבל ערך אחר זאת אומרת שהכנסתי את lastname
וכעת אני צריך להכניס עוד {} Placeholder
def name(prvtname,lastname = "Ben Shushan"): return "{} Tal {}".format(prvtname,lastname) print(name("My Name Is"))
Positional Arguments
כאשר אנחנו רוצים לכתוב לפונקציה כמה ערכים והוא ידפיס אז אנחנו צריכים להתייחס למיקום שכתבנו את המשתנים שהוא ידפיס
כך בדוגמה הזו נוכל להבחין שקודם הוא הדפיס את myname ורק אז את mylastname
Args and **Kargs*
הכוכביות האלו הם למעשה ההגדרה בפונקציה שבה נוכל להגדיר מתי "יגיע" מה
def name(*args,**kwargs):
print(args)
print(kwargs)
prvtname = ["Tal", "Liya", "Amit"]
data = {"car":"honda", "color":"black"}
name(*prvtname,**data)