פייתון/מספרים ופעולות חשבוניות
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
דף זה מסביר את סוגי המספרים בפייתון ופעולות החשבון הבסיסיות שהן חלק מהשפה. פייתון עצמה תומכת במספרים שלמים, מספרי נקודה צפה, ואפילו מספרים מרוכבים, וכוללת את פעולות חשבון הבסיסיות (כמו חיבור או כפל) עליהם. פעולות חשבוניות מתקדמות יותר, לדוגמה פעולות טריגונומטריות, אינן חלק מהשפה אלא שייכות לספריה הסטנדרטית.
תוכן עניינים |
[עריכה] הפעולות הבסיסיות
פייתון מאפשרת לחבר (ע"י +), לחסר (ע"י -), להכפיל (ע"י *), לחלק (ע"י /), למצוא שארית (ע"י %), ולהעלות בחזקה (ע"י **). להלן מספר דוגמאות בעבודה אינטראקטיבית:
>>> 4 + 2 6 >>> 4 * 2 8 >>> 4 / 2 2 >>> 4 % 2 0 >>> 4 ** 2 16
נשים לב שלאחר כל פעולה חשבונית (שאת סופה אנו מציינים בהקשת Enter, כמובן), המתרגם האינטראקטיבי מדפיס את התוצאה.
[עריכה] סדר פעולות החשבון
סדר פעולות החשבון בפייתון הוא המקובל באלגברה בסיסית, ולכן כפל (*),לדוגמה, מבוצע לפני חיבור (+).
>>> 2 + 3 * 5 17
בדיוק כבאלגברה בסיסית, ניתן להשתמש בסוגריים כדי לציין סדר פעולות שונה.
>>> (2 + 3) * 5 25
[עריכה] סוגי מספרים
מבחינה אלגברית, אין הבדל בין חיבור שני מספר שלמים לבין חיבור שני מספרים עשרוניים. במחשב, לעומת זאת, יש טיפוסים שונים להחזקת מספרים.
[עריכה] מספרים שלמים
כל הדוגמאות שראינו עד עתה פעלו על מספרים שלמים. חשוב לזכור שכל פעולה על מספרים שלמים תניב מספר שלם. במקרה שהתוצאה שלמה, התוצאה תחתך (החלק הלא-שלם יאבד). כך, לדוגמה:
>>> (2 + 3) / 2 2 >>> 2 / 4 0
[עריכה] מספרים עשרוניים
פייתון תומכת גם במספרים עשרוניים (מספרי נקודה צפה). כל פעולה על מספרים כאלה תניב תוצאה מאותו סוג:
>>> 2.5 * 6 15.0 >>> (2.0 + 3.0) / 2 2.5 >>> 2/4 0 >>> 2/float(4) 0.5
[עריכה] פעולות מעורבות
כאשר המתרגם מזהה פעולות חשבוניות על סוגים שונים של מספרים (לדוגמה, חיבור מספר שלם ומספר נקודה צפה), הוא אוטומטית ממיר את כל המספרים לסוג הרחב מבין השניים.
כך, לדוגמה:
>>> 2 + 3.0 5.0 >>> (2 + 3) / 2.0 2.5
[עריכה] מספרים מרוכבים
פייתון תומכת אפילו במספרים מרוכבים. מספר מרוכב נרשם בצורה
<real_part> + <imaginary_part>j
כאשר real_part הוא החלק הממשי, וimaginary_part הוא החלק הדמיוני.
הקטע הבא, לדוגמא, מראה הכפלת שני מספרים מרוכבים:
>>> (1 + 2j) * (3 + 5j) (-7+11j) >>>
ניתן לחלץ את החלק הממשי והמדומה:
>>> x=1+2j >>> x.real 1.0 >>> x.imag 2.0
-
- שימו לב: החלק הממשי והמדומה שניהם מטיפוס float.
על מנת לבצע פעולות חשבוניות מורכבות, יש לייבא את המודול cmath:
|
שקול לדלג על נושא זה יש להכיר את נושא המודולים. |
>>> import math as R >>> import cmath as C >>> x=1+2j >>> R.sqrt(x) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can't convert complex to float; use abs(z) >>> C.sqrt(x) (1.272019649514069+0.78615137775742328j) >>> C.tan(x) (0.033812826079896739+1.0147936161466338j)
[עריכה] דוגמה: המרה בין סוגי מעלות שונים
להלן דוגמה פשוטה מאד, שבה נשתמש גם בלולאות ופונקציות.
נניח ש-c מייצג טמפרטורה נתונה במעלות בשיטת Celsius, ואנו רוצים למצוא את f, המעלות בשיטת Fahrenheit. על פי נוסחה ידועה, f הוא 9 / 5 * c + 32. נניח גם שהדיוק אינו חשוב לנו במיוחד, ואנו מוכנים לעבוד במספרים שלמים (על אף שגיאת העיגול). להלן תכנית המקבלת כקלט מעלה בFahrenheit, ומדפיסה אותו בCelsius:
c = raw_input('Please enter degrees in Celsius: ') f = 9 / 5 * float(c) + 32 print 'This is ' + str(f) + ' in Fahrenheit\n'
להפתעתנו (או לא), התוכנית פשוט תפלוט ערך שגוי. מדוע הדבר קורה? ראינו בפעולות חשבוניות על שלמים ונקודות צפות שכל פעולה על טיפוסים שלמים מניבה תמיד תוצאה מסוג שלם. 9 / 5, לכן, מתורגם ל1, ולכן מקבלים 1 * c + 32 בפועל.
נוכל לתקן זאת על ידי כך שנחליף את 9 / 5 ב1.8, שהוא מספר נקודה צפה:
f = 1.8 * float(c) + 32;
כעת מדובר בחישוב מעורב, והשלמים בצד ימין של הסימן = יומרו במספרי נקודה צפה. לאחר החישוב, הערך יושם ב-f שהוא מספר שלם, ורק החלק העשרוני יאבד (כלומר, נקבל רק שגיאת עיגול).
שימו לב כי הפונקציה raw_input מכניסה מחרוזת לתוך c ולא מספר, ואילו הפוקנציה float הופכת את המחרוזת למספר נקודה צפה (ניתן היה, במידת הצורך להשתמש ב-int במקום). לאחר מכן, הפקודה str הופכת את המספר חזרה למחרוזת על מנת שיהיה ניתן להציג את התוצאה כחלק ממחרוזת. הענין נידון לעומק בפרק הבא.
| הפרק הקודם: מחרוזות |
מספרים ופעולות חשבוניות | הפרק הבא: המרות בין מספרים לעצמם ומחרוזות |

