לדלג לתוכן

פייתון/פייתון גרסה 2/מספרים ופעולות חשבוניות

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

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

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

הפעולות הבסיסיות

[עריכה]

פייתון מאפשרת לבצע שש פעולות חשבונות.

פעולה סימן דוגמא
חזקה ושורש ** 25 = 2 ** 5
כפל * 6 = 2 * 3
חילוק / 4.66666666 = 3 / 14
חילוק בתצוגת מנה שלמה int

(Floored division )

// 4 = 3 // 14
שארית (modulo) % 2 = 3 % 14
חיבור + 3 = 1 + 2
חיסור - 1 = 3 - 4
  • נהוג להניח רווח משני צדדי האופרטור בעת השימוש בו.

להלן מספר דוגמאות בעבודה אינטראקטיבית:

>>> 4 + 2
6
>>> 4 * 2
8
>>> 4 / 2
2
>>> 4 % 2
0
>>> 4 ** 2
16

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

שורשים

[עריכה]

על פי כללי חזקות ועל כן ניתן לבצע חישוב של שורשים באמצעות העלאת חזקה. למשל,

>>> 25 ** (0.5)
5
>>> 9 ** (0.333)
2.0785

סדר פעולות החשבון

[עריכה]

סדר פעולות החשבון בפייתון הוא המקובל באלגברה בסיסית, ולכן כפל (*),לדוגמה, מבוצע לפני חיבור (+).

>>> 2 + 3 * 5
17

בדיוק כבאלגברה בסיסית, ניתן להשתמש בסוגריים כדי לציין סדר פעולות שונה.

>>> (2 + 3) * 5
25

טיפוסים

[עריכה]

עתה במקום לכתוב ביטוים נדפיס מחרוזות:

print "2 + 2 =", 2 + 2
print "3 * 4 is", 3 * 4
print "100 - 1 is", 100 - 1
print "(33 + 2) / 5 + 11.5 is", (33 + 2) / 5 + 11.5

והנה הפלט (output) של התוכנית

2 + 2 = 4
3 * 4 is 12
100 - 1 is 99
(33 + 2) / 5 + 11.5 is 18.5

כפי שניתן לראות פייתון יכול להפוך את המחשב החזק שלך למחשבון פשוט.

בדוגמא זו רואים שאחרי פקודת ההדפסה ישנם שני משתנים שמופרדים בפסיק. בשורה הראשונה

print "2 + 2 =", 2 + 2

המשתנה הראשון הוא המחרוזת " = 2 + 2" והמשתנה השני הוא הביטוי המתמטי 2 + 2, אשר בדרך כלל נקרא הביטוי (expression). מה שחשוב לציין הוא שמחרוזת מודפסת כמו שהיא (ללא המרכאות מצדדיה) ואילו הביטוי המתמטי הינו הערך האמיתי שלו כלומר ממיר את ערכו בפועל.

סוגי מספרים

[עריכה]

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

מספרים שלמים

[עריכה]

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

>>> 17 / 5
3.4
>>>  4/ 4
1.0

כאשר נרצה שהתוצאה המתקבלת תהיה בתוצגת int דהינו ללא שארית נוסיף מקף נוסף

>>> 4 // 4
1
>>> 17 // 5
3

מספרים עשרוניים

[עריכה]

פייתון תומכת גם במספרים עשרוניים (מספרי נקודה צפה ובאנגלית float). כל פעולה על מספרים כאלה תניב תוצאה מאותו סוג:

>>> 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. נניח גם שהדיוק אינו חשוב לנו במיוחד, ואנו מוכנים לעבוד במספרים שלמים (על אף שגיאת העיגול). להלן תכנית המקבלת כקלט מעלה בCelsius, ומדפיסה אותו בFahrenheit:

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 הופכת את המספר חזרה למחרוזת על מנת שיהיה ניתן להציג את התוצאה כחלק ממחרוזת. הענין נידון לעומק בפרק הבא.


- מספרים ופעולות חשבוניות -