Kernel: Python 3 (Anaconda 2019)
שמות בני הזוג לעבודה (קודם שמי ואחר כך של בן/בת זוג): איתי נתנאל ומייק שלפקוב
רשימות, לולאות for, ופונקציית למבדה
פונקציית למבדה
בתכנות לא פעם אנחנו מוצאים את עצמינו במצב שבו אנחנו צריכים להעביר פונקציה אחת כפרמטר לפונקציה אחרת. דרך פשוטה לעשות זאת הוא lambda notation . צורת כתיבה זו מאפשרת לנו להגדיר בפשטות פונקציות שכתיבתן מתאפשרת באמצעות שורה אחת. לדוגמא נניח שרוצים להגדיר את הפונקציה המתמטית
נוכל לעשות זאת באופן פשוט באמצעות הקוד שבהמשך:
In [1]:
השימוש בפונקציית למבדה ייעשה כמו בכל פונקיית מחשב אחרת:
In [17]:
2
תרגיל 1:הפונקציה שבהמשך מחשבת את שיפוע המיתר העובר בין הנקודות ו- . ליד חלק מהשאלות מופיעה סולמית ולידה סימן שאלה. החליפו את סימן השאלה בהסבר הקוד המופיע בשורה.
In [3]:
In [3]:
17.0
In [5]:
(3, 4)
דוגמא: הפונקציה שבהמשך היא פונקציה המקבלת שני פרמטרים a ו-b ומחזירה פונקציית פייטון המיישמת את הפונקציה המתמטית
In [5]:
5
תרגיל 2: על ידי שימוש בפונקציות hypotenuse_slope ו- get_linear_function כתבו פונקציה המקבלת פונקציה כלשהיא, את שיעורי המיתר העובר דרך הנקודות ששיעור ה - x שלהן הוא x1 ו- x2 ומחזירה פונקציה אחרת המיישמת את משוואת המייתר העובר דרך שתי הנקודות. עליכם לעשות שימוש בביטוי למבדה.
In [0]:
In [1]:
f(x) 2.0 *x+ 46.0
לולאות for
דוגמא: בדומה ללולאת while לולאת ה- for מאפשרת לנו לחזור על קטע קוד מספר פעמים. למשל בעזרת קטע הקוד שבהמשך נוכל להדפיס את כל החזקות הריבועיות של המספרים מ- 1 ועד 5
In [43]:
1
4
9
16
25
דוגמא: קטע הקוד שבהשך מבצע פעולת כפל על כל איבר שברשימה:
In [45]:
36
abcabcabc
[1, 2, 1, 2, 1, 2]
-27
דוגמא: קטע הקוד שבהמשך יוצר מונה:
In [5]:
0
1
2
3
4
In [51]:
0
1
2
3
4
5
6
7
8
9
10
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
<ipython-input-51-6ce35e770a09> in <module>()
----> 1 counter(11)
<ipython-input-49-75486cc2e74d> in counter(n, sleep_time)
3 for i in range(n+1): #n קובע כמה פעימות לספור, לא את הזמן האמיתי בשורה קודמת קבענו את הקצב
4 print(i)
----> 5 sleep(sleep_time)
6 counter(4)
KeyboardInterrupt:
דוגמא: נניח כי נתונה רשימה המכילה פנקציות ורוצים להפעיל את כל אחת מהפונקציות על אותו מספר. הדרך לעשות זאת היא באמצעות הקוד שבהמשך:
In [52]:
144
0.08333333333333333
1728
שאלות
1.מה ידפיס קטע הקוד שבהמשך? קודם ענו מבלי להריץ את הקוד ולאחר מכן בידקו את תשובתכם והסבירו בעזרת הערה מה עושה כל שורה.
In [0]:
In [53]:
0.25
1.0
1.0
0.25
2. מה ידפיס קטע הקוד שבהמשך? קודם ענו מבלי להריץ את הקוד ולאחר מכן בידקו את תשובתכם והסבירו למה.
In [77]:
In [76]:
0
3. נתון קטע הקוד שבהמשך:
כתבו קטע קוד שפעולתו זהה אבל עם לולאת while
In [82]:
2
3
5
6
8
9
11
12
14
15
17
18
20
21
23
24
26
27
29
30
32
33
35
36
38
39
41
42
44
45
47
48
50
51
53
54
56
57
59
60
62
63
65
66
68
69
71
72
74
75
77
78
80
81
83
84
86
87
89
90
92
93
95
96
98
99
In [81]:
2
3
5
6
8
9
11
12
14
15
17
18
20
21
23
24
26
27
29
30
32
33
35
36
38
39
41
42
44
45
47
48
50
51
53
54
56
57
59
60
62
63
65
66
68
69
71
72
74
75
77
78
80
81
83
84
86
87
89
90
92
93
95
96
98
99
4. מדידת טמפרטורה בניסוי מסוים הניבה את התוצאות הבאות
הטמפרטורה נמדדה במעלות צלסיוס (C) הנוסחא למעבר מטמפרטורה במעלות צלסיוס לטמפטמפרטורה במעלות פרנהייט היא
כאשר C זו הטמפרטורה במעלות צלסיוס ו-F הטמפרטורה במעלות פרנהייט. כתבו לולאת for המדפיסה טבלה, שעמודה אחת בה היא הטמפרטורה במעלות צלסיוס והשניה בפרנהייט. הקפידו על כותרת נכונה לעמודות.
In [88]:
[21] [69.8]
[0] [32.0]
[7.2] [44.96]
[-8.9] [15.979999999999997]
[-30] [-22.0]
5. כתבו פונקציה המקבלת רשימה של מספרים ומחזירה את הממוצע שלהם.
In [91]:
2.5
In [101]:
3.0
6.כתבו תוכנית המקבלת מהמשתמש רשימה המכילה ציוני מבחנים (רשימת ערכי a), ורשימה שנייה המכילה את משקלו של כל ציון (רשימת ערכי x שהם מספרים עשרוניים בין 0 ל 1). על התוכנית לחשב ולהדפיס את הממוצע המשוקלל של הציונים. החישוב, בהתאם לנוסחה הבאה. ממוצע משוקלל שווה ל:
שימו לב שסכום הסך כל המשקלים צריך להיות שווה ל - 1. אורך רשימת המשקלים צריך להיות זהה לארוך הרשימה
In [120]:
0.3333333333333333
7. מספרי פיבונאצ'י הם סידרת מספרים המגדרת באופן הבא: אם n=0 אזיfn=0 , אם n=1 אזי fn=1. עבור כל מספר טבעי n אחר מתקיים fn=fn-1+fn-2 . שבעת המספרים הראשונים (n=6) בסדרה הם: 0,1,1,2,3,5,8. כתבו פונקציה בשם fibonacci המקבלת כפרמטר מספר שלם n ומחזירה רשימה של n מספרי פיבונאצ'י הראשונים.
In [128]:
0
1
1
2
3
5
8
13
21
34
55
89
144
8. במדע חישובי נעשה שימוש נרחב במספרים כאילו אקראיים (pseudorandom). לכן, חשוב לכן לדעת ליצור מספרים כאלו. בהמשך מוצגת שיטה לקבלת מספרים כאילו אקראיים בתחום שבין אפס לאחת. מתחילים ממספר מסוים, נניח
המספר הבא יינתן על ידי:
לדוגמה כאשר
נקבל
כך ש-
קיבלנו א
את המספר הבא ניתן לקבל על ידי הצבה של במקום .
כתבו פונקציה בשם get_random_list המקבלת שני פרמטרים מספריים. האחד מספר חיובי הקטן מ-1 (u0) ומספר שלם n. על הפונקציה להחזיר רשימה של n מספרים אקראיים.
In [140]:
40.764150657749475
86384.55346237785
645616817366314.8
2.691066958744045e+44
9.בזמן t=0 פרעוש קטן ניצב בראשית הצירים. בכל רגע הוא מבצע קפיצה בכיוון אקראי (בין 0 ל- ) ועובר מרחק אקראי (קטן מ-1) בכיוון הקפיצה. כתבו תוכנית המשרטטת את מסלול הפרעוש אחרי n קפיצות. רמז: אתם יכולים להשתמש בפונקציה הפסאודורנדומאלית שיצרתם בתרגיל הקודם
In [11]: