top of page
פונקציות - functions
פונקציות - functions טוב מכאן מתחיל להיות ממש מגניב (מילה משנות ה- 80 שאין לוותר עליה ובטח שלא להחליף אותה במילה קול). במקום להשתמש רק בפונקציות שפייתון נותנת לנו, אנו יכולים ליצור פונקציות משלנו שמוגדרות על פי מילים שאנו בוחרים, ולהשתמש בפונקציות שיצרנו בהמשך לצורך בניית תוכנית מורכבת יותר אך מובנת וקריאה (readable) יותר. פונקציה יוצרים על ידי שימוש במילה def שהיא קיצור של definition (הגדרה), הבה ניצור פונקציה ונלמד להשתמש בה. def power (n): return (n**2) print (power(3
תרגיל – מספרי פיבונאצ'י
תרגיל – מספרי פיבונאצ'י מספרי פיבונאצ'י הם סדרה של מספרים אשר כל מספר בה הוא סכום של שני המספרים שקדמו לו (מתחילים במספרים 0 ו- 1 – לפעמים מתחילים ב- 1 וממשיכים משם)– הנה למטה 7 מספרים בסדרת פיבונאצ'י משמאל לימין - 0,1,1,2,3,5,8 כל מספר הוא סכום השניים הקודמים לו בסדרה. המשימה שלנו היא לבנות פונקציה עם פרמטר מספרי אחד (נניח n) שיגיד מה גודל הסדרה של פיבונאצ'י שאנו רוצים ליצור, ואשר תייצר את הסדרה באופן אוטומטי עבורנו. כך למשל אם נגיד שאנו רוצים סדרה בגודל 7 איברים, היא תפיק א
תרגיל – פלינדרום
תרגיל – פלינדרום פאלינדרום (אפשר גם בלי א' או בכלל באנגלית palindrome) הוא מספר הוא מילה (אפשר גם משפט אבל זה מורכב יותר) שאפשר לקרוא מהסוף להתחלה והוא יישאר אותו דבר. למשל המילה שמש, גם אם קוראים מהסוף להתחלה זה עדיין שמש. כך גם המספר 121 או 1001. המשימה שלנו היא לבנות פונקציה המקבלת פרמטר (מילה או מספר) ומחזירה תשובה האם הוא פלינדרום או לא. יאללה def pali (p): sp=str (p) rp=sp [::-1] if sp==rp: print ("palindrome") else: print ("not palindrome") pali ("שמש")
פונקציית lambda
פונקציית lambda פונקציות מיועדות לשימוש חוזר בתוכנית, לעיתים מספר פעמים, או לבניית מבנים מורכבים יותר. אולם לעיתים אנו רוצים משהו לשימוש קצר וחד פעמי שנכתב במשפט אחד. הפונקציה גם נקראת פונקציה אנונימית משום שאין לה שם. למה זה טוב ?! ממציא התוכנה חושב היום שזה לא טוב למרות שזה חוסך שורות קוד, זה הופך את התוכנה לפחות קריאה וברורה אבל זה מסורתי והוא לא הצליח להוריד את זה מהגרסאות המתקדמות רק בגלל לחץ המשתמשים, זה מזכיר שם של ריקוד, אז נלמד את זה. עוד הערה לפני כן, בהמשך נלמד את
List comprehension –רשימה מהירה
List comprehension –רשימה מהירה קודם הדרך המסורתית ליצירת רשימה – lista=[ ] for i in range(10): lista.append(i) print(lista) >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] והדרך המקוצרת list comprehension– lista=[i for i in range(10)] print (lista) >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] פשוט מכניסים לתוך סוגריים מרובעים (כך אנו יודעים שמדובר ברשימה) את הנוסחה למה שאנו רוצים שיופיע ברשימה. במקרה שלנו אנו מפעילים את הלולאה for בשילוב עם פקודת range ומבקשים שהרשימה תכלול את מה שיהיה ב
תרגיל list comprehension איתור BMI חריג
תרגיל list comprehension איתור BMI חריג המטרה שלנו היא לכתוב פונקציה, בשורה אחת, המפיקה רשימה של משקלים בין 70-80 ק"ג ורשימה של גבהים בין 160-180 ס"מ ומוצאת רק את הצירוף של משקל וגובה אשר מדד ה-BMI שלו עולה על 30 (וכנראה צריך דיאטה) – הנוסחה למדד BMI משקל לחלק ל- (גובה בריבוע) - הגובה בתצורה של 1.75 מטר. התוכנית print([f"{w}kg:{h}cm" for w in range(70,81) for h in range(160,181) if w/(h/100)**2>30 ]) התוצאה ['77kg:160cm', '78kg:160cm', '78kg:161cm', '79kg:160cm', '79kg
פונקציה רקורסיבית
פונקציה רקורסיבית לעיתים אפשר להימנע מלהשתמש בפונקציה רקורסיבית, ואפשר לעשות את העבודה בדרכים מעט ארוכות יותר, אבל קריאות ומובנות יותר. מצד שני, אין דבר שעושה רושם גדול יותר על המראיינים שלכם בעתיד או בכלל מאשר לנסח פונקציה רקורסיבית קצרה שעושה את העבודה ומדהימה את הלקוח. חוץ מזה אנחנו בעניין פיתוח חשיבה אנליטית, וגם באנו ליהנות. קודם נגיד את זה - מדובר בפונקציה שמחזירה מלבד ערך כלשהו גם את עצמה באופן מעגלי עד לסיום עבודתה. לנוכח מורכבות העניין, חבל להכביר מילים ונתאר בדוגמא


תרגיל – בניית משולש פסקל באמצעות פונקציה רקורסיבית
תרגיל – בניית משולש פסקל באמצעות פונקציה רקורסיבית משולש פסקל הוא מעין פירמידה שמתחילה במספר 1 וככל שיורדים בפירמידה, כל מספר שווה לסכום שני המספרים שמעליו – נציג את ארבע הקומות העליונות של הפירמידה (אפשר להמשיך בלי סוף במורד הפירמידה): 1 1 1 1 2 1 1 3 3 1 רמז – פסקל מזכיר במבנה שלו את סיפור פיבונאצ'י רק במקום לחשב שני מספרים קודמים בסדרה אנו מחפשים סכום של שני מספרים מסוימים בשורה למעלה. רמז 2 – אפשר לכתוב תו


פקודת input – דו שיח עם המשתמש
פקודת input – דו שיח עם המשתמש התוכנית שלנו יכולה לנהל שיחה עם המשתמש ולהגיב בהתאם באמצעות פקודת input, בואו נראה איך היא עובדת – n=input ("what is your name?") print ("Hello",n) >>> What is your name? כעת התוכנה ממתינה שהמשתמש יקליד את שמו – המשתמש מקליד את שמו נניח, סתם זורק, Eddie ולוחץ על Enter כדי שהיא תדע שהוא סיים. התוכנית כותבת Hello Eddie כדי לדרוש נתון מהמשתמש אנו מכינים משתנה שיקלוט את הנתון, בתוכנית למעלה המשתנה הוא n. כעת אנו כותבים את הפקודה input ולאחריה בסו
מחלקה class
מחלקה class בתוכניות מורכבות, שתכליתן לפתור בעיות כאלה ואחרות, אנו בעצם בונים מודל של החיים עצמם. פעמים רבות אנו הופכים את החיים למודל מתמטי כזה או אחר ומנסים לפתור איזושהי בעיה. למשל, כאשר אנו רוצים לפתור את החידה המפורסמת של שמונה המלכות, המבקשת מהפותר להניח 8 מלכות על לוח השחמט במיקומים כאלה שאף מלכה (שיכולה לזוז לכל כיוון ולכל מרחק) לא תעמוד על נתיב של מלכה אחרת, לחידה יש פתרון ויש דרכים יפות לפתור אותה באמצעות פייתון. במקרה כזה אנו צריכים לבנות באמצעות התוכנה, מודל של הח
תרגיל – איקס מיקס דריקס
תרגיל – איקס מיקס דריקס בתרגיל הזה ננסה לבנות באמצעות מחלקה (וכמה שטיקים שלמדנו בסעיפים מוקדמים יותר), מודל פשוט של לוח המשחק איקס מיקס דריקס (איקס עיגול או באנגלית tic tac toe). על הלוח להיות מיוצג באופן שנוכל לראות אם בלוח יש תא ריק, תא שיש בו X או תא שיש בו O . כמו כן, נוכל להכניס X או O בתא שנבחר וכן למחוק במידה והתחרטנו. אפשר לנסות לבד (מומלץ) ואפשר להבין את הפתרון שלנו. נתחיל בכך שנקים את מפעל הלוחות שלנו – class BoardTicTacToe: def __init__(self): self.board=[f"{i}"
ירושה
ירושה ניתן לבנות מחלקה השואבת באופן מלא את כל התכונות של מחלקה אחרת, כלומר, "לרשת" ממנה באמצעות שורת קוד פשוטה, את כל התוכן הרלבנטי לנו. class Store: def __init__(self, size, adr): self.size = size self.adr = adr self.balance=0 def __str__ (self): return self.adr def add (self,num): self.balance +=num def sub (self,num): self.balance -=num stim=Store(150,"brodetsky 15 Or Yeuda") print(stim.balance) >>> 0 stim.add(500)
פונקציה ממעלה גבוהה יותר - higher order function
פונקציה ממעלה גבוהה יותר - higher order function אנו לוקחים את האפשרות של החזרת פונקציה על ידי פונקציה אחרת על מנת להוסיף אפשרויות לפונקציה המקורית ולחסוך בשורות קוד. def shalom (name): return "shalom "+ name +"!" def shalomAndWelcome (name): return shalom(name)+" welcome!" print(shalom("eddie")) >>> shalom eddie! print (shalomAndWelcome("yossi")) >>> shalom yossi! Welcome! למעלה אנו רואים פונקציה שנקראת shalom המקבלת שם כפרמטר ומח
פונקציית קישוט – decorator
פונקציית קישוט – decorator לו אני בתפקיד האקדמיה ללשון, הייתי בוחר את המילה קשטנית, לעת עתה נשאר עם פונקציית קישוט או דקורטור או פונקציה מקשטת, שהיא דרך מקוצרת ונוחה לקחת פונקציה קיימת, ולהוסיף עליה שכבת קישוט נוספת, מבלי להתעסק עם הקוד שלה – כמו בפונקציה ממעלה גבוהה יותר ותוך ניצול היכולות המתאפשרות בפונקציות ממעלה גבוהה יותר . הכי טוב לראות בדוגמא – def func (name): return "welcome "+name def plus (num): return num+42 def deco(f): def wrapper (*args): new=str(f(*ar
map( ) filter( ) – פונקציות מובנות ממעלה גבוהה
( )map( ) filter – פונקציות מובנות ממעלה גבוהה בפייתון קיימות פונקציות מובנות, שיודעות לקבל פונקציה, ואיטרטור (כמו רשימה למשל) ולבצע את הפעולה שהפונקציה יודעת לעשות, על כל אחד מהאיברים באיטרטור. התוצר שלהן הוא איטרטור המייצר בכל פעם את התוצאה של הכנסת האיבר הבא באיטרטור כפרמטר בפונקציה. יאללה דוגמא – lista=[1,2,3,4,5] def func (num): return num**2 for i in map(func,lista): print (i) >>> 1 4 9 16 25 print([i for i in map(func,lista)]) >>> [1, 4, 9, 16, 25] def
bottom of page