- Information
- AI Chat
סיכום פייתון
Hebrew University of Jerusalem
Preview text
סיכום קורס פייתון רקע תיאורטי דברים כלליים :בכדי לרשום הערות ,משתמשים בסימן . #למשל: #MyProgram בכדי לרדת שורה בתוך מחרוזת ,יש לרשום \n דוגמאות חשובות: 'print ' I love \nJerusalem >>>I love Jerusalem 'print 'C: \newfolder 'print 'C: \\newfolder >>> C: ewfolder C: \newfolder אם נרצה לרשום את הסימן "\" בתוך מחרוזת ,נרשום: רשימת כל הפקודות שקשורות ל) \ -הנקראות גם ( escape sequences "\\ print "look at this \ >>> look at this \a Bell or alert \t Tab \b Backspace \\ ) \ Backspace (allows you to write a '\ ) ' Backspace (allows you to write a "\ ) " Backspace (allows you to write a \n Newline בפייתון אסור לרדת שורה בזמן שאנו רושמים מחרוזת .לכן נוכל להישתמש ב \ -בכדי לרדת שורה. חוץ מגרשיים שהם ' " :אנו יכולים גם להשתמש בגרשיים משולשים) """ (tripleאו ''' אם נרצה לרשום טקסט ארוך מאוד ,נשתמש בtriple-quoted string - \ print """ very long text """ הצבה של כמה משתנים באותה השורה: החלפת ערכים של משתנים: a, b, c = 2, 3, 4 print a, b, c >>> 2 3 4 a, b = 10, 20 a, b = b, a print a, b 20 10 הצבה באמצעות ביטוי מתמטי: הערה :בביצוע הביטוי a+2*bאנו משתמשים בערך הישן של a a, b = 2, 3 a, b = b, a+2*b print a, b 38 השמה באמצעות שרשרת: a=4=b print a, b 44 צורת כתיבה מקוצרת של פעולות אלגבריות: a=a+3 a=a*5 a=a/5 a=a–5 d=d%4 # # # # # a += 3 a *= 5 a /= 5 a -= 5 d %=4 פעולות אלגבריות חיבור , + :חיסור , - :כפל , * :חילוק , / :חזקה , ** :חילוק מודולו% : הערות (1 :פייתון עושה סדר פעולות חשבון כפי שאנו מכירים )כפל וחילוק קודם לחיבור וחיסור(. ( 2יש לשים לב לצורת רישום המספרים כאשר מחלקים מספרים זה בזה ,מפני שהתוצאה משתנה בהתאם למקרה. (3מותר להכניס רווחים בין אופרטורים. (4שאר הפעולות האלגבריות הן פונקציות )כמו שורש למשל( (5מותר להכניס רווחים בין אופרטורים דוגמאות: >>> 12-3/5 11 >>> 12-3/5 12 >>> 12*2-3/5 23 >>> (12-3) /5 1 משתנים פייתון יוצר בעצמו משתנים ואין צורך לדאוג לסוג שלהם ,אך יש לשים לב לסוג המשתנה אם כפי שניתן לראות ,הסימן " "-מאפשר לנו לגשת לאות מהסוף להתחלה .לכל אות יש אינדקס כאשר עבור האות הראשונה האינדקס הוא . 0במקרה זה האינדקס 0שקול לאינדקס ][6- רק צריך להיזהר ממקרה בו אנו רושמים אינדקס שאינו קיים ,כמו ] [6במקרה זה. דוגמה: "text = "hello world ]print text[0 ]print text[1 ]print text[2 ]print text[3 ]print text[4 ]print text[5 ]print text[6 >>>h e l l o w הערה :בשפת פייתון אין טיפוס נתונים של תו אחד .תו נחשב למחרוזת בעלת איבר אחד. אם נרצה להעתיק ערך מילה ממשפט לתוך משתנה חדש ,נוכל להשתמש בקליטה עם טווח. ]word=text[start:end לא כולל הend - 'a = 'python ]print a[0:4 >>> pyth קיבלנו את האותיות שבמיקום 0עד ) 3כולל( הערה :מותר למשל לרשום ] word=[:4ואז פייתון יתחיל פשוט מ0- מותר גם לרשום ] word=[3:ואז פייתון יעתיק את המשפט ללא ה 3-אותיות הראשונות לא ניתן לשנות אות או מילה במחרוזת .אם נרצה לבצע שינוי ,נאלץ ליצור משתנה חדש עם מחרוזת חדשה. ניתן לעשות השוואה בין מחרוזות בעזרת האופרטורים של השוואה שלמדנו == שווה =< קטן שווה דוגמה: )" !!word = raw_input("Type a string, please print "Your word, " + word, if word < "banana": print ", comes before banana." elif: word > "banana": print ", comes after banana." else: print "Yes, we have bananas!" אז הפלט היהZebra אם למשל הקלט היה Your word, Zebra, comes before banana not in - וin אופרטור התוצאה יכולה להיות. בודק אם מחרוזת אחת היא תת מחרוזת של מחרוזת האחרתin האופרטור .אמת או שקר flag1 = 'p' in 'apple' flag2 = 'i' in 'apple' flag3 = 'ap' in 'apple' flag4 = 'pa' in 'apple' print flag1 print flag2 print flag3 print flag4 >>>True False True False תרגיל כתה מועיל s ( מהמחרוזת שנקלטהVowels מסלקת את כל התנועות ו, s נכתוב תכנית הקולטת מחרוזת בשם על ידי שיתוףs_without_vowels בלי התנועות במחרוזת בשם זs ושומרת את המחרוזת : (Concatenation לבין "שרשור" מחרוזות וin פעולה בין האופרטור s = raw_input("Type a string, please!") vowels = "aeiouAEIOU" s_without_vowels = "" for letter in s: if letter not in vowels: s_without_vowels += letter print s_without_vowels if a>0 or not(b<0) : statements לולאות לולאת while define the counter while condition: statements ההוראה עובדת על פי תרשים הזרימה הבא: אם במקרה יצרנו לולאה אין סופית ,נוכל לעצור אותה בזמן ריצה אם נלחץ על ctrl+c continue פקודת ה continue -גורמת להפסקת האיטרציה )פעולת הלולאה ברגע הנוכחי( ומחזירה אותנו להתחלת איטרציה חדשה. break פקודת ה break -גורמת להפסקת הלולאה )לחלוטין( לולאת הfor - for variable in sequence: statements משמעות לולאת ה: for - סרוק את הרצף ,ולכל אחד מאיבריו לפי סדר הופעתם ,תבצע את בלוק הפקודות. for x in [0,1,2,3,4,5]: print x >>>0 1 2 3 4 5 רשימות הערה :נתייחס לפונקציות הפועלות על רשימות כאשר נדבר על פונקציות. רשימה היא כמו מערך רק שהיא יכולה להכיל כל מיני משתנים ,היא ניתנת לשינוי ,ואפשר להוסיף ולמחוק איברים .לשנות איבר שנמצא ברשימה .ולשנות את סדר איברי הרשימה. קיימות שתי דרכים ליצרית רשימות בפייתון ,האחת היא באופן ישיר על ידי כתיבת הערכים בסוגריים מרובעים. ]'list = ['hani', 1, 2, 'dan print list ]'>>> ['hani', 1, 2, 'dan האינדקס של הרשימה מתחיל מ ,0-לכן למעשה עבור רשימה זו 3 2 1 0 dan 2 1 hani דרך שנייה היא על ידי שימוש בפונקציית )(. range ניגש אל איברים ברשימה ע"י שימוש באינדקסים .לדוגמה: ]list = ['hello', 1, 2, 'dan', 5 ]print list[0 ]print list[2 >>> hello 2 מבנה הרשימה הוא: 4 3 2 1 0 5 dan 2 1 hello -1 -2 -3 -4 -5 ניתן לקרוא לאיברים מסוימים ע"י שימוש בסוגריים מרובעים ונקודותיים בינהם. לדוגמה: ]list = ['daniel', 4, 'hani', 8, 'john', 12 ]list1 = list[1:3 ]list2 = list[ :4 ] list3 = list[3: print list print list1 print list2 ניתן לראות כי המחרוזת Davidשקולה לרשימה ימD', 'a', 'v', 'i', 'dמ[ ]'list = ['hello', 4, 6 ,'john print list "list[0:2] = "David print list ]'['hello', 4, 6, 'john ]'['D', 'a', 'v', 'i', 'd', 6, 'john ולכן למעשה נוספו איברים לרשימה ניתן גם להכניס לחלוטין איברים חדשים מבלי "לדרוס" איברים קיימים .לדוגמה: ]'list = ['yosi', 3, 'madam ]secondList = [1 ,2 list[1:1] = secondList print list ]'>>> ['yosi', 1, 2, 3, 'madam ניתן לאפס איברים בצורה הבאה ]'list = ['yosi', 3, 'madam ][ = ]list[0:2 print list ]'>>> [3, 'madam ניתן למחוק איברים בעזרת פקודת ה del -כך: ]'list = ['yosi', 3, 'madam ]del list[1 print list ]'>>> ['yosi', 'madam וכמובן ניתן גם למחוק כמה איברים במכה אחת כך עבור רשימה כלשהי ]del list[0:3 דוגמא בסיסית לשימוש בלולאת forעם רשימות ]'a = ['dog', 'lol', 'hello for x in a : )print x, len(a >>>dog 3 lol 3 hello 5 רשימה מקוננת ניתן ליצור רשימה בתוך רשימה ואפילו לגשת לאיבר שבתוך הרשימה הפנימית. לדוגמה: ]a = [1,2,3 ]b = [5,a,6 print a print b ]print b[1][1 ]print b[1][2 ]>>> [1, 2, 3 ][5, [1, 2, 3], 6 2 3 פתיחת קבצי txtבפייתון הערה :רק בפרק זה נרשום גם את הפונקציו הקשורות כאן. פונקציית )( - openמאפשר ליצור קשר עם הקובץ ומשתנה כלשהו. )f = open(filename, mode צריך לספק לפונקציה שני ארגומנטים הראשון יהיה השם המלא של הקובץ במחשב ,כולל ה filepath -שלו השני יהיה מצב בפעולה .כלומר קריאה או כתיבה פונקציה זו מחזירה אובייקט מסוג קובץ. בכדי לפתוח למשל את הקובץ abנשתמש בפקודות: 'filepath = 'C:/Users/Name of the user/Desktop/ab )'f1 = open(filepath,'r הארגומנט השני במקרה זה הוא מrמ -כלומר קריאה )(read אילו היינו רוצים לכתוב בקובץ היינו משתמשים ב -מwמ -כלומר כתיבה )(write ברירת המחדל היא קריאה כעת כל פעם שנרצה להשתמש בקובץ abנשתמש בשמו הלוגי .f1 )( - readlineכאן למשל הפונקציה קוראת מהקובץ ששמו .f1הפונקציה קוראת שורה ומחזירה אותה כמחרוזת כאשר מ\nמ נשאר בסוף המחרוזת שקלטנו. בהגעה לסוף הקובץ הפונקציה תחזיר מחרוזת ריקה. צורת רישום: )(str = f1,readline )( - rstripפונקציה זו מוחקת את כל ה white spaces -שנמצאים בצד ימין של המחרוזת .במקרה זה ימחק מ\nמ צורת כתיבה צורת רישום: )f(list_of_strings לדוגמה: 'filepath = 'C:/Users/David Dayan/Desktop/ab )'fwrt = open(filepath,'w )]'fwrt(['Test – line1\n', 'Test – line2\n )(fwrt הערה :משתמשים בפקודת )( writeכאשר רוצים לכתוב לתוך הקובץ מחרוזת אחת גדולה. משתמשים ב writelines() -כאשר רוצים להוסיף כמה מחרוזות קטנות. בנייה של פונקציות בכדי לקרוא לפונקציה ,אנו עושים זאת באופן רגיל כמו שקראנו לפונקציות מערכת. כלומר, )… variable = function(a, b, c, בכדי להגדיר פונקציה נרשום def function(x, y, z, …): statements statements …. return result הפונקציות ימוקמו תמיד לפני התוכנית הראשית אם הפונקציה אינה צריכה פרמטרים בכדי לפעול ,בכל זאת חובה לרשום סוגרים .בסך הכל הסוגריים יהיו ריקות .למשל: def Newline(): statements …main program )(Newline ”print “something משתנים מקומיים )לוקליים( כאשר יוצרים משתנה מקומי הוא משתנה שהוגדר בתוך הפונקציה. כאשר יוצרים משתנה מקומי הוא נמצא אך ורק בתוך הפונקציה .כאשר הפונקציה אינה פועלת, אותו משתנה מקומי לא קיים. גם פונקציות הן סוג של טיפוס. ניתן לראות זאת בבירור בדוגמה הבאה: def myfunction(): return )print type(myfunction >'>>> <type 'function ניתן גם להעביר פונקציה כפרמטר לפונקציה אחרת .כלומר ניתן להעביר לתוך פונקציה גדולה, פונקציה קטנה אחרת שמתפקדת כארגונמט. לדוגמה: :וdef f1(n return n*2 :וdef f2(n return n**2 :וdef f3(n return n**0 :וdef FunctionMama(val, func וreturn func(val וprint FunctionMama(2, f1 וprint FunctionMama(3, f2 וprint FunctionMama(4, f3 >>>4 9 2 דוגמה יותר ברורה: :וdef f4(val1,val2 return val1 + val2 }'EngToFr = {'talk':'parler' , 'chair':'chaise' , 'walk':'marcher }Dictionary = {key:value , key:value , … , key:value בדוגמה זו המפתח הוא מחרוזת ).(string יצירת מילון ריק: דרך :1 }{ = mydictionary דרך :2בעזרת פונקציה dict ו(mydictionary = dict הוספת זוג חדש למילון }phones = {'Iosi':111222, 'Ety':222333, 'Moshe':333444 phones['Itai'] = 765654 print phones }>>>{'Iosi': 111222, 'Itai': 765654, 'Ety': 555666, 'Moshe': 333444 שליפת ערך לפי המפתח שלו וגם הצבת ערך לתוך משתנה לפי המפתח שלו: }phones = {'Iosi':111222, 'Ety':222333, 'Moshe':333444 ]'myVal = phones['Moshe print myVal >>>333444 נציין כי עדיף להשתמש במטודה)זה כמו פונקציה( של )( . dictזאת כי אם נבקש מפתח שאינו קיים במילון באופן רגיל ,התוכנית תקרוס .אבל בעזרת )( dictנוכל להימנע מכך. דוגמה: }phones = {'Iosi':111222, 'Ety':222333, 'Moshe':333444 וmyVal = phones('Moshe', -1 print myVal וmyVal = phones('Mohe', -1 print myVal ו'myVal = phones('Mo print myVal >>>333444 -1 None בדוגמה זו כפי שניתן לראות ,בהתחלה המפתח אכן היה קיים ברשימה ,ולכן קיבלנו את הערך ששייך לו .לאחר מכן לא רשמו במדיוק את המפתח ולכן התוכנית לא מצה אותו במילון ,אזי הערך שהוחזר הוא -1 לאחר רשמנו מפתח שאינו קיים במילון במילון אך גם לא רשמנו איזה ערך על הפונקציה להחזיר, ולכן ברירת המחדל היא None מחיקת זוג מהמילון באמצעות הפקודה .delיש צורך רק לציין את המפתח. לדוגמה: }phones = {'Iosi':111222, 'Ety':222333, 'Moshe':333444 ]'del phones['Ety print phones }>>>{'Iosi': 111222, 'Moshe': 333444 שינוי ערך של זוג דוגמה: }phones = {'Iosi':111222, 'Ety':222333, 'Moshe':333444 phones['Ety'] = 555666 print phones }>>>{'Iosi': 111222, 'Ety': 555666, 'Moshe': 333444 אופרטור - inאופרטור זה משמש בכדי לדעת האם מפתח מסויים מופיע במילון. דוגמה: }phones = {'Iosi':111222, 'Ety':222333, 'Moshe':333444 if 'Moshe' in phones: "print "Yes if 'Aharon' in phones: "print "No >>>Yes No הערות (1 :הפונקציה )( lenפועלת גם על מילונים והיא מחזירה את מספר הזוגות שבמילון. (2את הפונקציות הפועלות על מילונים נרשום תחת הנושא של פונקציות. (3רשימה אינה יכולה לשמש כמפתח Tuple רשומה ) (tupleהיא רשימה בלתי ניתנת לשינוי. יצירת tupleנעשת בעזרת סוגריים עגולים כך: )'t = (1, 2, 'hi print t )>>>(1, 2, hi הרשומה נשמרת בזיכרון כפי שאנו מכירים: במקרה של t 2 1 0 hi 2 1 print Tup print NotTup print Tup2 print NotTup2 >>> (1,) 1 ('hello',) hello . הפסיק עושה את כל ההבדל,בקצרה tuple -שליפת איבר מ t = (123, 456, 789) print t[0] >>> 123 tuple -שליפת מספר איברים מ t = (123, 456, 789) print t[1:3] >>> (456, 789) (tuples) שירשור רשומות t = (123, 456, 789) k = (111, 222, 333) p=t+k print p >>> (123, 456, 789, 111, 222, 333) (list nesting) קינון רשימות t = (1, 2, 3) print t u = (t, 4, 5, 6)