عملگرها در پایتون؛ آموزش انواع عملگر با مثال و جدول

محیط ویرایشگر کد پایتون با نمایش عبارت ۲ به علاوه ۳ و تفکیک عملگر و عملوند
آنچه در این مطلب می‌خوانید

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

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

عملگر (Operator) و عملوند (Operand) در پایتون چیست؟

در زبان برنامه نویسی پایتون، «عملگرها» (Operators) نمادهای خاصی هستند که عملیات حسابی یا منطقی را انجام می‌دهند. مقدار یا متغیری که عملگر روی آن کار می‌کند، «عملوند» (Operand) نام دارد. برای نمونه، در عبارت ۲ + ۳، علامت + عملگر جمع و اعداد ۲ و ۳ عملوند هستند. عدد ۵ نیز خروجی عملیات خواهد بود. عملگرها علاوه بر مقادیر ثابت، روی متغیرها کار می‌کنند و می‌توانند یک متغیر را با یک مقدار یا دو متغیر را با یکدیگر ترکیب کنند:

sum1 = 100 + 50      # 150 (100 + 50)
sum2 = sum1 + 250    # 400 (150 + 250)
sum3 = sum2 + sum2   # 800 (400 + 400)

پایتون عملگرها را در ۷ گروه اصلی دسته‌بندی می‌کند:

  • عملگرهای حسابی (Arithmetic operators)
  • عملگرهای مقایسه‌ای (Comparison operators)
  • عملگرهای منطقی (Logical operators)
  • عملگرهای تخصیص (Assignment operators)
  • عملگرهای همانی (Identity operators)
  • عملگرهای عضویت (Membership operators)
  • عملگرهای بیتی (Bitwise operators)

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

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

عملگرشرح عملکردمثال
+جمع کردن دو عملوند یا علامت مثبت یگانیx + y یا +۲
–تفریق عملوند سمت راست از چپ یا علامت منفی یگانیx – y یا -۲
*ضرب دو عملوند در یکدیگرx * y
/تقسیم عملوند سمت چپ بر سمت راست (همیشه با خروجی اعشاری)x / y
%عملیات پیمانه‌ای (محاسبه باقی‌مانده تقسیم عملوند چپ بر راست)x % y
//تقسیم صحیح (محاسبه خارج قسمت صحیح تقسیم)x // y
به توان رساندن (عملوند چپ به توان عملوند راست)x y

کد زیر عملکرد هر ۷ عملگر حسابی را روی دو متغیر نشان می‌دهد:

a = 15
b = 4

print("Addition:", a + b)
print("Subtraction:", a - b)
print("Multiplication:", a * b)
print("Division:", a / b)
print("Floor Division:", a // b)
print("Modulus:", a % b)
print("Exponentiation:", a  b)

خروجی اجرای این کد:

Addition: 19
Subtraction: 11
Multiplication: 60
Division: 3.75
Floor Division: 3
Modulus: 3
Exponentiation: 50625
آموزش برنامه‌نویسی شی‌ءگرا در پایتون
آموزش برنامه‌نویسی شی‌ءگرا در پایتون
1,199,000 839,300 تومان
30%

تفاوت تقسیم عادی (/) و تقسیم صحیح (//)

در پایتون، عملگر تقسیم عادی (/) همیشه عددی اعشاری از نوع float برمی‌گرداند، حتی اگر دو عدد بر هم بخش‌پذیر باشند. مثلاً حاصل ۱۰ / ۲ برابر با ۵.۰ و حاصل ۱۵ / ۴ برابر با ۳.۷۵ است. عملگر تقسیم صحیح (//) بخش اعشار را نادیده می‌گیرد و خارج قسمت صحیح تقسیم را برمی‌گرداند. در تقسیم اعداد صحیح، خروجی این عملگر از نوع int است؛ به همین دلیل، حاصل عبارت ۱۵ // ۴ عدد ۳ خواهد بود.

مقایسه خروجی تقسیم عادی و تقسیم صحیح عدد ۱۵ بر ۴ در محیط ترمینال پایتون

عملگرهای مقایسه‌ای در پایتون (Comparison Operators)

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

اجرای عملگرهای مقایسه‌ای روی دو عدد ۱۳ و ۳۳ در پایتون به همراه خروجی True و False
عملگرشرح عملکردمثال
>بزرگ‌تر از (درست است اگر عملوند چپ بزرگ‌تر از راست باشد)x > y
<کوچک‌تر از (درست است اگر عملوند چپ کوچک‌تر از راست باشد)x < y
==برابر با (درست است اگر هر دو عملوند مساوی باشند)x == y
!=نامساوی (درست است اگر دو عملوند با هم برابر نباشند)x != y
>=بزرگ‌تر یا مساوی (درست است اگر عملوند چپ بزرگ‌تر یا مساوی راست باشد)x >= y
<=کوچک‌تر یا مساوی (درست است اگر عملوند چپ کوچک‌تر یا مساوی راست باشد)x <= y

در این مثال، نتیجه‌ی مقایسه‌ی دو عدد ۱۳ و ۳۳ را می‌بینید:

a = 13
b = 33

print(a > b)
print(a < b)
print(a == b)
print(a != b)
print(a >= b)
print(a <= b)

خروجی:

False
True
False
True
False
True

عملگرهای منطقی در پایتون (Logical Operators)

عملگرهای منطقی در پایتون شامل and، or و not هستند و عبارت‌های شرطی را ترکیب می‌کنند. خروجی این عملگرها در عبارت‌های شرطی از نوع داده‌ی بولین، یعنی True یا False است. اگر هر سه عملگر در یک عبارت حضور داشته باشند، ابتدا not، سپس and و در آخر or ارزیابی می‌شود.

عملگرشرح عملکردمثال
andدر صورتی True برمی‌گرداند که هر دو عملوند True باشندx and y
orدر صورتی True برمی‌گرداند که حداقل یکی از دو عملوند True باشد)x or y
notنتیجه را معکوس می‌کند (اگر عملوند False باشد، خروجی True می‌شود و برعکس)not x

این سه عملگر روی مقادیر بولین به شکل زیر کار می‌کنند:

a = True
b = False

print(a and b)
print(a or b)
print(not a)

خروجی:

False
True
False

عملگرهای تخصیص در پایتون (Assignment Operators)

عملگرهای تخصیص در پایتون به متغیرها مقدار می‌دهند. ساده‌ترین آن‌ها علامت = است که مقدار سمت راست را به متغیر سمت چپ اختصاص می‌دهد؛ مثلاً x = ۵. عملگرهای تخصیص ترکیبی نیز وجود دارند که ابتدا یک عملیات حسابی یا بیتی را روی متغیر انجام می‌دهند و سپس نتیجه‌ی جدید را در همان متغیر ذخیره می‌کنند.

عملگرمثالمعادل بازشده
=x = 5x = 5
+=x += 5x = x + 5
-=x -= 5x = x – 5
*=x *= 5x = x * 5
/=x /= 5x = x / 5
%=x %= 5x = x % 5
//=x //= 5x = x // 5
=x = 5x = x 5
&=x &= 5x = x & 5
/=x /= 5x = x / 5
^=x ^= 5x = x ^ 5
>>=x >>= 5x = x >> 5
<<=x <<= 5x = x << 5

کد زیر نشان می‌دهد که عملگرهای تخصیص چگونه مقدار متغیر b را تغییر می‌دهند:

a = 10
b = a
print(b)

b += a
print(b)

b -= a
print(b)

b *= a
print(b)

b <<= a
print(b)

خروجی:

10
20
10
100
102400

چرا عملگرهای ++ و — در پایتون وجود ندارند؟

برنامه‌نویسانی که پس از آموزش زبان php وارد پایتون می‌شوند، معمولاً به دنبال عملگرهای افزایش و کاهش یک‌واحدی (++ و –) می‌گردند. در پایتون، عملگرهای Increment و Decrement به این شکل وجود ندارند. بنابراین برای اضافه کردن یک واحد به متغیر، به جای x++ باید از سینتکس x += ۱ و برای کم کردن یک واحد، به جای x– باید از x -= ۱ استفاده کنید. اگر در حلقه‌های شمارشی به کاهش گام حرکت نیاز دارید، می‌توانید آرگومان سوم تابع range را منفی قرار دهید:

خطای سینتکس برای عملگر ++ و جایگزینی آن با عملگر تخصیص += در ویرایشگر پایتون
for i in range(10, 0, -1):
    print(i)

عملگرهای خاص در پایتون (همانی و عضویت)

پایتون دو دسته عملگر ویژه دارد: عملگرهای همانی برای بررسی موقعیت اشیا در حافظه و عملگرهای عضویت برای جست‌وجوی مقادیر درون ساختارهای داده.

عملگرهای همانی (is و is not) و تفاوت آن‌ها با ==

عملگرهای همانی در پایتون، یعنی is و is not، بررسی می‌کنند که آیا دو متغیر یا مقدار در بخش یکسانی از حافظه قرار دارند و به یک شیء (Object) واحد اشاره می‌کنند یا خیر.

نمایش دو لیست هم‌مقدار در دو آدرس حافظه جداگانه و مقایسه خروجی عملگر is و مساوی در پایتون
عملگرشرح عملکردمثال
isاگر دو عملوند به یک شیء یکسان در حافظه اشاره کنند، True برمی‌گرداندx is True
is notاگر دو عملوند به شیء یکسانی در حافظه اشاره نکنند، True برمی‌گرداندx is not True

عملگر مقایسه‌ای == و عملگر هویت is با هم تفاوت دارند: دو متغیر با مقادیر مساوی (==) لزوماً همانی (is) نیستند و در یک خانه از حافظه قرار ندارند. این تفاوت را در مثال زیر می‌بینید:

x1 = 5
y1 = 5

x2 = 'Hello'
y2 = 'Hello'

x3 = [1, 2, 3]
y3 = [1, 2, 3]

print(x1 is not y1)
print(x2 is y2)
print(x3 == y3)
print(x3 is y3)

خروجی:

False
True
True
False

در این کد، x1 و y1 اعداد صحیح با مقادیر برابر هستند و پایتون آن‌ها را در یک بخش از حافظه نگه می‌دارد. بنابراین هم برابرند و هم همانی، و عبارت x1 is not y1 مقدار False می‌دهد. همین رفتار برای رشته‌های یکسان x2 و y2 نیز برقرار است و x2 is y2 مقدار True برمی‌گرداند. x3 و y3 لیست هستند. مقادیر درون آن‌ها با هم برابر است و x3 == y3 مقدار True می‌دهد، ولی به دلیل تغییرپذیر بودن (Mutable) ساختار لیست در پایتون، مفسر آن‌ها را در بخش‌های جداگانه‌ای از حافظه ذخیره می‌کند. در نتیجه، خروجی x3 is y3 برابر با False است.

عملگرهای عضویت (in و not in) در توالی‌ها و دیکشنری

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

بررسی عضویت کلید و مقدار در دیکشنری پایتون با عملگر in و نمایش خروجی True و False
عملگرشرح عملکردمثال
inاگر مقدار در توالی پیدا شود، True برمی‌گرداند5 in x
not inاگر مقدار در توالی پیدا نشود، True برمی‌گرداند5 not in x

هنگام استفاده از این عملگرها، دو نکته را در نظر بگیرید. در کار با رشته‌ها در پایتون، مفسر به بزرگی و کوچکی حروف حساس (Case Sensitive) است. همچنین در ساختار دیکشنری در پایتون، عملگر in فقط وجود «کلید» (Key) را بررسی می‌کند؛ با این عملگر نمی‌توان مستقیماً وجود یک «مقدار» (Value) را بررسی کرد.

x = 'Hello world'
y = {1: 'a', 2: 'b'}

print('H' in x)
print('hello' not in x)
print(1 in y)
print('a' in y)

خروجی:

True
True
True
False

در این کد، حرف ‘H’ در رشته‌ی x وجود دارد، اما ‘hello’ با حرف کوچک در آن نیست. در دیکشنری y نیز عدد ۱ یک کلید است و بررسی آن خروجی True می‌دهد، اما ‘a’ یک مقدار (Value) است و بررسی in برای آن False برمی‌گرداند.

آموزش جامع پایتون
آموزش جامع پایتون
799,000 439,450 تومان
45%

عملگرهای بیتی در پایتون (Bitwise Operators)

عملگرهای بیتی در پایتون روی اعداد دودویی (Binary یا همان صفر و یک) کار می‌کنند و عملیات را بیت‌به‌بیت انجام می‌دهند. برای مثال، عدد ۲ در مبنای دودویی برابر با ۱۰ و عدد ۷ برابر با ۱۱۱ است. در جدول زیر، فرض بر این است که x = ۱۰ با معادل باینری ۰۰۰۰ ۱۰۱۰ و y = ۴ با معادل باینری ۰۰۰۰ ۰۱۰۰ باشد:

نمایش باینری اعداد ۱۰ و ۴ و نتیجه عملیات بیتی AND و OR در محیط ابزار توسعه‌دهنده پایتون
عملگرشرح عملکردمثال و خروجی باینری
&AND بیتی (فقط زمانی ۱ می‌دهد که هر دو بیت ۱ باشند)x & y = 0 (0000 0000)
/OR بیتی (زمانی ۱ می‌دهد که حداقل یکی از دو بیت ۱ باشد)x / y = 14 (0000 1110)
~NOT یا نقیض بیتی (بیت‌ها را معکوس می‌کند)~x = -11 (1111 0101)
^XOR بیتی (زمانی ۱ می‌دهد که دو بیت با هم متفاوت باشند)x ^ y = 14 (0000 1110)
>>شیفت به راست بیتی (جابه‌جایی بیت‌ها به سمت راست)x >> 2 = 2 (0000 0010)
<<شیفت به چپ بیتی (جابه‌جایی بیت‌ها به سمت چپ)x << 2 = 40 (0010 1000)

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

a = 10
b = 4

print(a & b)
print(a | b)
print(~a)
print(a ^ b)
print(a >> 2)
print(a << 2)

خروجی:

0
14
-11
14
2
40

عملگر سه‌تایی در پایتون (Ternary Operator)

عملگرهای سه‌تایی، که «عبارات شرطی» (Conditional Expressions) نیز نام دارند، از نسخه‌ی ۲.۵ به پایتون اضافه شدند. این عملگر به شما اجازه می‌دهد به جای ساختار چندخطی if-else، شرط را در یک خط بررسی و کد را فشرده کنید. الگوی نوشتاری آن به این صورت است:

[on_true] if [expression] else [on_false]

در مثال زیر، عملگر سه‌تایی عدد کوچک‌تر بین a و b را در یک خط مشخص می‌کند:

a, b = 10, 20
min_val = a if a < b else b
print(min_val)

خروجی:

10

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

اگر در یک عبارت بیش از یک عملگر وجود داشته باشد، قوانین «اولویت عملگرها در پایتون» (Operator Precedence) مشخص می‌کند که کدام عملیات باید زودتر اجرا شود. عملگرهای محاسباتی از بالاترین به پایین‌ترین، این ترتیب اولویت را دارند:

  1. پرانتز ()
  2. توان **
  3. ضرب و تقسیم‌ها (*، /، //، %)
  4. جمع و تفریق (+، -)

در عملگرهای منطقی نیز اولویت به ترتیب با not، سپس and و در آخر or است. کد زیر تأثیر این اولویت را در یک عبارت ریاضی و یک شرط ترکیبی نشان می‌دهد:

print(12 + (6 - 2) * 3)

name = "Alex"
age = 0

if name == "Alex" or name == "John" and age >= 2:
    print("Hello! Welcome.")
else:
    print("Good Bye!!")

خروجی:

24
Hello! Welcome.

در عبارت ریاضی، ابتدا محاسبه‌ی داخل پرانتز انجام می‌شود: ۶ – ۲ برابر با ۴ است. سپس ضرب ۴ * ۳ نتیجه‌ی ۱۲ را می‌دهد و در آخر، این نتیجه با ۱۲ جمع می‌شود و عدد ۲۴ چاپ می‌شود. در دستور شرطی، اولویت and بالاتر از or است؛ بنابراین ابتدا بخش name == “John” and age >= ۲ ارزیابی می‌شود که حاصل آن False است. سپس این نتیجه همراه با شرط اول، یعنی name == “Alex” که True است، وارد عملگر or می‌شود و شرط کلی برقرار می‌شود.

شرکت‌پذیری عملگرها (Operator Associativity) هنگام تساوی اولویت

اگر در یک عبارت دو یا چند عملگر با اولویت یکسان قرار بگیرند، مثلاً هم ضرب و هم تقسیم، یا هم جمع و هم تفریق، قانون «شرکت‌پذیری» (Associativity) جهت اجرای آن‌ها را مشخص می‌کند. بیشتر عملگرها در پایتون شرکت‌پذیری از «چپ به راست» دارند، اما عملگر توان (**) از «راست به چپ» اجرا می‌شود:

مقایسه مراحل اجرای چپ به راست در ضرب و تقسیم با اجرای راست به چپ در عملگر توان پایتون
print(100 / 10 * 10)
print(5 - 2 + 3)
print(5 - (2 + 3))
print(2  3  2)

خروجی:

100.0
6
0
512

در خط اول، تقسیم و ضرب هم‌اولویت هستند؛ بنابراین محاسبه از چپ به راست انجام می‌شود. ابتدا حاصل ۱۰۰ / ۱۰ برابر با ۱۰.۰ می‌شود و سپس ضرب آن در ۱۰، نتیجه‌ی ۱۰۰.۰ را می‌دهد. در خط آخر، یعنی عبارت ۲ 3 ۲، عملگر توان از راست به چپ ارزیابی می‌شود. به همین دلیل، ابتدا حاصل ۳ ** ۲ برابر با ۹ می‌شود و سپس ۲ به توان ۹ می‌رسد که خروجی ۵۱۲ را تولید می‌کند.

آموزش 150 تمرین پایتون از مبتدی تا حرفه‌ای
آموزش ۱۵۰ تمرین پایتون از مبتدی تا حرفه‌ای
549,000 219,600 تومان
60%

خطاهای رایج هنگام کار با عملگرهای پایتون

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

نمایش خطای TypeError هنگام عملیات ریاضی روی تابع input و اصلاح آن با تابع int در پایتون

۱. خطای NameError هنگام نوشتن true یا false با حروف کوچک:

پایتون به حروف بزرگ و کوچک حساس است. اگر در مقایسه‌ها یا عملگرهای منطقی، مقادیر بولین را به صورت false یا true بنویسید، مفسر آن‌ها را نام یک متغیر تعریف‌نشده می‌داند و خطای NameError می‌دهد:

# کد دارای خطا
print(type(false))  # NameError: name 'false' is not defined

برای رفع این خطا، حرف اول مقادیر بولین را بزرگ بنویسید:

# کد صحیح
print(type(False))

۲. خطای TypeError هنگام محاسبه مستقیم روی خروجی input():

تابع input() هر مقداری را که از کاربر بگیرد، به صورت رشته (str) ذخیره می‌کند. اگر ورودی کاربر را مستقیماً در یک عملیات ریاضی قرار دهید، به‌ویژه ضرب در عدد اعشاری یا تفریق، با خطای عدم تطابق نوع داده روبه‌رو می‌شوید:

# کد دارای خطا
h = input('h = ')
t = 388.15 - 0.0065 * h
# TypeError: can't multiply sequence by non-int of type 'float'

برای رفع این مشکل، باید پیش از انجام عملیات حسابی، خروجی input() را با توابع تبدیل نوع مانند int() برای اعداد صحیح یا float() برای اعداد اعشاری به عدد تبدیل کنید:

# کد اصلاح‌شده
h = int(input('h = '))
t = 388.15 - 0.0065 * h
print(t)
https://maktabkhooneh.org/mag/python-operators/
تصویر مهناز محمدی

مهناز محمدی

0 0 امتیازها
امتیاز دهی به محتوا
مشترک شوید
اطلاع از
guest
0 دیدگاه
قدیمی ترین
جدید ترین دیدگاه با تعداد رای زیاد
مقالات بیشتر
رشته (String) در پایتون

رشته (String) در پایتون؛ آموزش کامل، طول رشته و متدها

لاک پشت ترتل در حال رسم اشکال هندسی رنگی

آموزش کتابخانه Turtle در پایتون؛ نصب، دستورات و کدهای آماده

نصب کتابخانه های پایتون

راهنمای جامع نصب و مدیریت کتابخانه های پایتون

بازی منچ در پایتون

آموزش جامع ساخت بازی منچ با پایتون

برنامه نویسی پایتون

فهرست جامع دستورات و توابع پایتون (Python Commands List)

آناکوندا در پایتون چیست

آناکوندا پایتون چیست؟ راهنمای کامل مفهوم و آموزش نصب Anaconda