آموزش پایتون - عملگرهای حسابی

عملگرهای حسابی در پایتون

عملگرهای حسابی در پایتون برای انجام عملیات ریاضی مانند جمع، تفریق، ضرب، تقسیم و موارد دیگر روی اعداد استفاده می‌شوند. عملگرهای حسابی، عملگرهای دوتایی (Binary) هستند؛ به این معنی که روی دو اپراند (Operand) عمل می‌کنند. پایتون به طور کامل از حساب مختلط پشتیبانی می‌کند؛ یعنی دو اپراند می‌توانند از دو نوع عددی متفاوت باشند.

انواع عملگرهای حسابی

جدول زیر تمامی عملگرهای حسابی موجود در پایتون را فهرست می‌کند:

عملگر نام مثال
+ جمع a + b = 30
- تفریق a b = -10
* ضرب a * b = 200
/ تقسیم b / a = 2
% باقی‌مانده (Modulus) b % a = 0
** توان (Exponent) a**b =10**20
// تقسیم صحیح (Floor Division) 9//2 = 4

بیاین این عملگرها رو با مثال بررسی کنیم.

عملگر جمع

عملگر جمع با نماد + نشان داده می‌شود. این یک عملگر حسابی پایه است که دو اپراند عددی در دو طرف خود را با هم جمع می‌کند و حاصل جمع را برمی‌گرداند.

مثال برای جمع دو عدد صحیح

در مثال زیر، دو متغیر از نوع عدد صحیح، اپراند‌های عملگر "+" هستند.

a=10
b=20
print ("Addition of two integers")
print ("a =",a,"b =",b,"addition =",a+b)

این کد خروجی زیر را تولید خواهد کرد −

Addition of two integers
a = 10 b = 20 addition = 30

مثال برای جمع عدد صحیح و عدد اعشاری (Float)

جمع یک عدد صحیح و یک عدد اعشاری منجر به یک عدد اعشاری می‌شود.

a=10
b=20.5
print ("Addition of integer and float")
print ("a =",a,"b =",b,"addition =",a+b)

این کد خروجی زیر را تولید خواهد کرد −

Addition of integer and float
a = 10 b = 20.5 addition = 30.5

مثال برای جمع دو عدد مختلط (Complex)

نتیجه‌ی جمع یک عدد اعشاری با یک عدد مختلط، یک عدد مختلط است.

a=10+5j
b=20.5
print ("Addition of complex and float")
print ("a=",a,"b=",b,"addition=",a+b)

این کد خروجی زیر را تولید خواهد کرد −

Addition of complex and float
a= (10+5j) b= 20.5 addition= (30.5+5j)

عملگر تفریق

عملگر تفریق با نماد - نشان داده می‌شود. این عملگر، اپراند دوم را از اپراند اول کم می‌کند. اگر اپراند دوم بزرگ‌تر باشد، عدد حاصل منفی خواهد بود.

مثال برای تفریق دو عدد صحیح

مثال اول تفریق دو عدد صحیح را نشان می‌دهد.

a=10
b=20
print ("Subtraction of two integers:")
print ("a =",a,"b =",b,"a-b =",a-b)
print ("a =",a,"b =",b,"b-a =",b-a)

نتیجه −

Subtraction of two integers
a = 10 b = 20 a-b = -10
a = 10 b = 20 b-a = 10

مثال برای تفریق عدد صحیح و اعشاری

تفریق یک عدد صحیح و یک عدد اعشاری نیز از همان قاعده پیروی می‌کند.

a=10
b=20.5
print ("subtraction of integer and float")
print ("a=",a,"b=",b,"a-b=",a-b)
print ("a=",a,"b=",b,"b-a=",b-a)

این کد خروجی زیر را تولید خواهد کرد −

subtraction of integer and float
a= 10 b= 20.5 a-b= -10.5
a= 10 b= 20.5 b-a= 10.5

مثال برای تفریق اعداد مختلط

در تفریقی که شامل یک عدد مختلط و یک عدد اعشاری است، بخش حقیقی عدد مختلط در عملیات شرکت می‌کند.

a=10+5j
b=20.5
print ("subtraction of complex and float")
print ("a=",a,"b=",b,"a-b=",a-b)
print ("a=",a,"b=",b,"b-a=",b-a)

این کد خروجی زیر را تولید خواهد کرد −

subtraction of complex and float
a= (10+5j) b= 20.5 a-b= (-10.5+5j)
a= (10+5j) b= 20.5 b-a= (10.5-5j)

عملگر ضرب

نماد * (ستاره) در پایتون (مانند بسیاری از زبان‌ها) به عنوان عملگر ضرب تعریف شده است. این عملگر حاصل‌ضرب دو اپراند در دو طرف خود را برمی‌گرداند. اگر یکی از اپراندها منفی باشد، حاصل نیز منفی است. اگر هر دو منفی باشند، حاصل مثبت خواهد بود. تغییر ترتیب اپراندها تغییری در نتیجه ایجاد نمی‌کند.

مثال برای ضرب دو عدد صحیح

a=10
b=20
print ("Multiplication of two integers")
print ("a =",a,"b =",b,"a*b =",a*b)

این کد خروجی زیر را تولید خواهد کرد −

Multiplication of two integers
a = 10 b = 20 a*b = 200

مثال برای ضرب عدد صحیح و اعشاری

در ضرب، یک اپراند اعشاری می‌تواند دارای نماد ممیز استاندارد یا نماد علمی باشد.

a=10
b=20.5
print ("Multiplication of integer and float")
print ("a=",a,"b=",b,"a*b=",a*b)

a=-5.55
b=6.75E-3
print ("Multiplication of float and float")
print ("a =",a,"b =",b,"a*b =",a*b)

این کد خروجی زیر را تولید خواهد کرد −

Multiplication of integer and float
a = 10 b = 20.5 a-b = -10.5
Multiplication of float and float
a = -5.55 b = 0.00675 a*b = -0.037462499999999996

مثال برای ضرب اعداد مختلط

برای عملیات ضربی که شامل یک اپراند مختلط است، اپراند دیگر در هر دو بخش حقیقی و موهومی ضرب می‌شود.

a=10+5j
b=20.5
print ("Multiplication of complex and float")
print ("a =",a,"b =",b,"a*b =",a*b)

این کد خروجی زیر را تولید خواهد کرد −

Multiplication of complex and float
a = (10+5j) b = 20.5 a*b = (205+102.5j)

عملگر تقسیم

نماد "/" معمولاً اسلش (Forward Slash) نامیده می‌شود. نتیجه‌ی عملگر تقسیم، صورت (اپراند چپ) تقسیم بر مخرج (اپراند راست) است. اگر یکی از اپراندها منفی باشد، عدد حاصل منفی خواهد بود. از آنجا که بینهایت نمی‌تواند در حافظه ذخیره شود، اگر مخرج 0 باشد، پایتون خطای ZeroDivisionError را رخ می‌دهد.

نتیجه‌ی عملگر تقسیم در پایتون همیشه یک عدد اعشاری (Float) است، حتی اگر هر دو اپراند عدد صحیح باشند.

مثال برای تقسیم دو عدد

a=10
b=20
print ("Division of two integers")
print ("a=",a,"b=",b,"a/b=",a/b)
print ("a=",a,"b=",b,"b/a=",b/a)

این کد خروجی زیر را تولید خواهد کرد −

Division of two integers
a= 10 b= 20 a/b= 0.5
a= 10 b= 20 b/a= 2.0

مثال برای تقسیم دو عدد اعشاری

در تقسیم، یک اپراند اعشاری می‌تواند دارای نماد ممیز استاندارد یا نماد علمی باشد.

a=10
b=-20.5
print ("Division of integer and float")
print ("a=",a,"b=",b,"a/b=",a/b)
a=-2.50
b=1.25E2
print ("Division of float and float")
print ("a=",a,"b=",b,"a/b=",a/b)

این کد خروجی زیر را تولید خواهد کرد −

Division of integer and float
a= 10 b= -20.5 a/b= -0.4878048780487805
Division of float and float
a= -2.5 b= 125.0 a/b= -0.02

مثال برای تقسیم اعداد مختلط

وقتی یکی از اپراندها یک عدد مختلط است، تقسیم بین اپراند دیگر و هر دو بخش عدد مختلط (حقیقی و موهومی) انجام می‌شود.

a=7.5+7.5j
b=2.5
print ("Division of complex and float")
print ("a =",a,"b =",b,"a/b =",a/b)
print ("a =",a,"b =",b,"b/a =",b/a)

این کد خروجی زیر را تولید خواهد کرد −

Division of complex and float
a = (7.5+7.5j) b = 2.5 a/b = (3+3j)
a = (7.5+7.5j) b = 2.5 b/a = (0.16666666666666666-0.16666666666666666j)

اگر صورت 0 باشد، نتیجه‌ی تقسیم همیشه 0 است؛ مگر زمانی که مخرج 0 باشد که در این صورت، پایتون خطای ZeroDivisionError را با پیغام Division by Zero رخ می‌دهد.

a=0
b=2.5
print ("a=",a,"b=",b,"a/b=",a/b)
print ("a=",a,"b=",b,"b/a=",b/a)

این کد خروجی زیر را تولید خواهد کرد −

a= 0 b= 2.5 a/b= 0.0
Traceback (most recent call last):
  File "C:\Users\mlath\examples\example.py", line 20, in <module>
     print ("a=",a,"b=",b,"b/a=",b/a)
                                 ~^~
ZeroDivisionError: float division by zero

عملگر باقی‌مانده (Modulus)

پایتون نماد "%" را که به عنوان علامت درصد شناخته می‌شود، به عنوان عملگر باقی‌مانده (یا Modulo) تعریف می‌کند. این عملگر باقی‌مانده‌ی حاصل از تقسیم صورت بر مخرج را برمی‌گرداند. به آن عملگر Remainder نیز می‌گویند. نتیجه‌ی عملگر باقی‌مانده، عددی است که پس از خارج‌قسمت صحیح باقی می‌ماند. برای مثال، وقتی 10 بر 3 تقسیم می‌شود، خارج‌قسمت 3 و باقی‌مانده 1 است. بنابراین، 10%3 (که معمولاً 10 مد 3 خوانده می‌شود) نتیجه‌ی 1 می‌دهد.

مثال برای عملیات باقی‌مانده روی اعداد صحیح

اگر هر دو اپراند عدد صحیح باشند، مقدار باقی‌مانده نیز یک عدد صحیح است. اگر صورت به طور کامل بخش‌پذیر باشد، باقی‌مانده 0 است. اگر صورت کوچک‌تر از مخرج باشد، باقی‌مانده برابر با صورت است. اگر مخرج 0 باشد، پایتون خطای ZeroDivisionError را رخ می‌دهد.

a=10
b=2
print ("a=",a, "b=",b, "a%b=", a%b)
a=10
b=4
print ("a=",a, "b=",b, "a%b=", a%b)
print ("a=",a, "b=",b, "b%a=", b%a)
a=0
b=10
print ("a=",a, "b=",b, "a%b=", a%b)
print ("a=", a, "b=", b, "b%a=",b%a)

این کد خروجی زیر را تولید خواهد کرد −

a= 10 b= 2 a%b= 0
a= 10 b= 4 a%b= 2
a= 10 b= 4 b%a= 4
a= 0 b= 10 a%b= 0
Traceback (most recent call last):
  File "C:\Users\mlath\examples\example.py", line 13, in <module>
    print ("a=", a, "b=", b, "b%a=",b%a)
                                    ~^~
ZeroDivisionError: integer modulo by zero

مثال برای عملیات باقی‌مانده روی اعداد اعشاری

اگر هر یک از اپراندها اعشاری باشند، مقدار باقی‌مانده همیشه اعشاری (Float) خواهد بود.

a=10
b=2.5
print ("a=",a, "b=",b, "a%b=", a%b)
a=10
b=1.5
print ("a=",a, "b=",b, "a%b=", a%b)
a=7.7
b=2.5
print ("a=",a, "b=",b, "a%b=", a%b)
a=12.4
b=3
print ("a=",a, "b=",b, "a%b=", a%b)

این کد خروجی زیر را تولید خواهد کرد −

a= 10 b= 2.5 a%b= 0.0
a= 10 b= 1.5 a%b= 1.0
a= 7.7 b= 2.5 a%b= 0.20000000000000018
a= 12.4 b= 3 a%b= 0.40000000000000036

پایتون اعداد مختلط را به عنوان اپراند در عملیات باقی‌مانده نمی‌پذیرد و خطای TypeError: unsupported operand type(s) for % را صادر می‌کند.

عملگر توان

پایتون از ** (دو ستاره) به عنوان عملگر توان استفاده می‌کند (که گاهی عملگر به توانِ نیز نامیده می‌شود). بنابراین، برای a**b می‌گوییم a به توان b، یا توان bام از a.

اگر در عبارت توانی، هر دو اپراند عدد صحیح باشند، نتیجه نیز عدد صحیح است. در صورتی که یکی از آنها اعشاری باشد، نتیجه اعشاری خواهد بود. به همین ترتیب، اگر یکی از اپراندها عدد مختلط باشد، عملگر توان یک عدد مختلط برمی‌گرداند.

اگر پایه 0 باشد، نتیجه 0 است و اگر توان 0 باشد، نتیجه همیشه 1 خواهد بود.

مثال برای عملگر توان

a=10
b=2
print ("a=",a, "b=",b, "a**b=", a**b)
a=10
b=1.5
print ("a=",a, "b=",b, "a**b=", a**b)
a=7.7
b=2
print ("a=",a, "b=",b, "a**b=", a**b)
a=1+2j
b=4
print ("a=",a, "b=",b, "a**b=", a**b)
a=12.4
b=0
print ("a=",a, "b=",b, "a**b=", a**b)
print ("a=",a, "b=",b, "b**a=", b**a)

این کد خروجی زیر را تولید خواهد کرد −

a= 10 b= 2 a**b= 100
a= 10 b= 1.5 a**b= 31.622776601683793
a= 7.7 b= 2 a**b= 59.290000000000006
a= (1+2j) b= 4 a**b= (-7-24j)
a= 12.4 b= 0 a**b= 1.0
a= 12.4 b= 0 b**a= 0.0

عملگر تقسیم صحیح (Floor Division)

تقسیم صحیح (Floor Division) تقسیم عددی نیز نامیده می‌شود. پایتون از نماد // (دو اسلش) برای این منظور استفاده می‌کند. برخلاف باقی‌مانده که باقی‌مانده‌ی تقسیم را برمی‌گرداند، تقسیم صحیح خارج‌قسمت حاصل از تقسیم اپراندهای مربوطه را می‌دهد.

اگر هر دو اپراند مثبت باشند، عملگر floor عددی را برمی‌گرداند که بخش اعشاری آن حذف شده است. برای مثال، تقسیم صحیح 9.8 بر 2 عدد 4 را برمی‌گرداند (تقسیم خالص 4.9 است، با حذف بخش اعشاری، نتیجه 4 می‌شود).

اما اگر یکی از اپراندها منفی باشد، نتیجه به سمت دور از صفر (به سمت بینهایت منفی) گرد می‌شود. تقسیم صحیح -9.8 بر 2 عدد 5- را برمی‌گرداند (تقسیم خالص -4.9 است که به سمت دور از 0 گرد می‌شود).

مثال برای عملگر تقسیم صحیح

a=9
b=2
print ("a=",a, "b=",b, "a//b=", a//b)
a=9
b=-2
print ("a=",a, "b=",b, "a//b=", a//b)
a=10
b=1.5
print ("a=",a, "b=",b, "a//b=", a//b)
a=-10
b=1.5
print ("a=",a, "b=",b, "a//b=", a//b)

این کد خروجی زیر را تولید خواهد کرد −

a= 9 b= 2 a//b= 4
a= 9 b= -2 a//b= -5
a= 10 b= 1.5 a//b= 6.0
a= -10 b= 1.5 a//b= -7.0

اولویت و شرکت‌پذیری عملگرهای حسابی

عملگر(ها) توضیحات شرکت‌پذیری
** عملگر توان شرکت‌پذیری عملگر توان از راست به چپ است.
%, *, /, // باقی‌مانده، ضرب، تقسیم و تقسیم صحیح شرکت‌پذیری عملگرهای باقی‌مانده، ضرب، تقسیم و تقسیم صحیح از چپ به راست است.
+, عملگرهای جمع و تفریق شرکت‌پذیری عملگرهای جمع و تفریق از چپ به راست است.

جدول فوق تقدم و شرکت‌پذیری عملگرهای حسابی در پایتون را نشان می‌دهد.

عملگرهای حسابی با اعداد مختلط

عملگرهای حسابی زمانی که هر دو اپراند اشیائی از نوع عدد مختلط باشند، رفتار کمی متفاوتی دارند.

جمع و تفریق اعداد مختلط

جمع و تفریق اعداد مختلط، یک جمع/تفریق ساده روی مولفه‌های حقیقی و موهومی مربوطه است.

a=2.5+3.4j
b=-3+1.0j
print ("Addition of complex numbers - a=",a, "b=",b, "a+b=", a+b)
print ("Subtraction of complex numbers - a=",a, "b=",b, "a-b=", a-b)

این کد خروجی زیر را تولید خواهد کرد −

Addition of complex numbers - a= (2.5+3.4j) b= (-3+1j) a+b= (-0.5+4.4j)
Subtraction of complex numbers - a= (2.5+3.4j) b= (-3+1j) a-b= (5.5+2.4j)

ضرب اعداد مختلط

ضرب اعداد مختلط مشابه ضرب دو دوجملی در جبر است. اگر "a+bj" و "x+yj" دو عدد مختلط باشند، ضرب آنها با این فرمول به دست می‌آید −

(a+bj)*(x+yj) = ax+ayj+xbj+byj2 = (ax-by)+(ay+xb)j

برای مثال،

a=6+4j
b=3+2j
c=a*b
c=(18-8)+(12+12)j
c=10+24j

برنامه‌ی زیر این نتیجه را تایید می‌کند −

a=6+4j
b=3+2j
print ("Multplication of complex numbers - a=",a, "b=",b, "a*b=", a*b)

برای درک نحوه‌ی تقسیم دو عدد مختلط، باید از مزدوج (Conjugate) یک عدد مختلط استفاده کنیم. شیء مختلط در پایتون متد conjugate() را دارد که عدد مختلطی با علامت علامت‌گذاری‌شده‌ی معکوس در بخش موهومی برمی‌گرداند.

>>> a=5+6j
>>> a.conjugate()
(5-6j)

تقسیم اعداد مختلط

برای تقسیم دو عدد مختلط، صورت و مخرج را در مزدوج مخرج ضرب و تقسیم کنید.

a=6+4j
b=3+2j
c=a/b
c=(6+4j)/(3+2j)
c=(6+4j)*(3-2j)/3+2j)*(3-2j)
c=(18-12j+12j+8)/(9-6j+6j+4)
c=26/13
c=2+0j

برای بررسی صحت، کد زیر را اجرا کنید −

a=6+4j
b=3+2j
print ("Division of complex numbers - a=",a, "b=",b, "a/b=", a/b)

کلاس Complex در پایتون از عملگر باقی‌مانده (%) و عملگر تقسیم صحیح (//) پشتیبانی نمی‌کند.

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.