top of page

רעננו את הדף והקליקו למעבר לנושא הבא:

divmod() - log עושים חשבון

מתודה נחמדה בפייתון נקראת divmod עושה פעולה מתמטית שיכולה לעתים לקצר תהליכים ולהיות מאוד שימושית. כידוע אנו יכולים לקבל מנה של שני מספרים בתצורות שונות בפייתון, במקרה הזה אנו מקבלים את המנה (תוצאת החילוק) כ- tuple שחלקו השמאלי מייצג את המספר השלם וחלקו הימני את השארית. נדגים -

print(divmod(5,3))


נקבל - (1,2) כלומר, 3 מוכל ב- 5 פעם אחת בלבד עם שארית של 2 התוצאה כאמור בטופל שניתן להתייחס בנפרד לשני חלקיו.

אפשר גם להזין ערך כ- float למשל 8.0 -

print(divmod(8.0 ,3))


התוצאה המתקבלת - (2.0, 2.0) כלומר 3 מוכל פעמיים ב- 8 ונותרת שארית של 2 (פייתון מחזיר את התוצאה כטופל המכיל מספרים מסוג- float)


מה אפשר לעשות עם זה? - למשל, אפשר לכתוב תוכנית שמחזירה את סכום הספרות של מספר כלשהו x -


x = 999 #זה המספר שבחרנו sum_dig = 0 #כאן נסכום את היחידות while x!=0: dm = divmod(x, 10) #חלוקה ב-10 מבודדת את היחידות מיתר המספר dig = dm[1] #בסיבוב הראשון שווה 9 x = dm[0] #בסיבוב הראשון שווה 99 sum_dig = sum_dig + dig #צוברים את סכומי האחדות print(sum_dig)

התוצאה כמובן 27=9+9+9


אפשר לכתוב תוכנית שהופכת לנו את סדר הספרות במספר כלשהו -

x = 456 #המספר שבחרנו rev_num = 0 #כאן יהיה המספר ההפוך while x!=0: dm = divmod(x, 10) dig = dm[1] x = dm[0] rev_num = rev_num * 10 + dig #תהליך של צירוף היחידות ובסיבוב הבא הכפלה ב-10 print(rev_num)

התוצאה בדוגמא הזאת - 654 סדר ספרות הפוך למספר המקורי שלנו 456.


עכשיו נראה שימוש בפעולה מתמטית אחרת log שנייבא מתוך הספריה math

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

  • 2**3=8

פעולת log יכולה למצוא את מעריך החזקה 3 כאשר נתונים לנו בסיס החזקה 2 והתוצאה 8 -

from math import log print(log(8,2))

התוצאה 3.0 - הערך הוא מסוג float

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

אחד השימושים האפשריים הוא מציאת אורך של מספר (כמה ספרות יש במספר) X כלשהו.


from math import log x=34523 #המספר שבחרנו len_x=int(log(x,10))+1 #הסבר למטה print(len_x)

התוצאה היא 5 כי במספר יש חמש ספרות. הסבר - כאשר אנו עושים פעולה של לוג בבסיס של 10 נקבל מספר שלם המשקף את מספר הספרות אחרי המספר הראשון משמאל ועוד שבר (מספרים אחרי הנקודה העשרונית) שילך ויגדל ככל שאנו מתקרבים להוספת ספרה לאורך המספר. למשל - log בבסיס 10 של 100 = 2, log בבסיס 10 של 500 =2.698 ואילו לוג בבסיס 10 של 1000 שווה ל- 3.

היות שאנו מעוניינים רק בחלק התוצאה שהיא המספרים השלמים - אנו מבצעים פעולה של ( )int שמנקה את הספרות מימין לנקודה. כמו כן, פעולת לוג נותנת לנו את הספרות אחרי המספר השמאלי ואנו רוצים את האורך של כל המספר לכן אנו מוסיפים 1. הרי לנו שימוש בפעולה מתמטית לצורך ביצוע משימה בפייתון שאינה קשורה דווקא במתמטיקה.

Related Posts

See All

memoization in python

בעברית קוראים לזה תזכור (tizkur) ובהתחלה זה נראה כמו שגיאת כתיב של המילה memorization אבל זה זה לא. ומדובר במושג בעל חשיבות גדולה מאוד,...

תגובות


Single Post: Blog_Single_Post_Widget
bottom of page