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

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

عملگرهای مقایسه‌ای در پایتون در دستورات شرطی پایتون (if، else و elif) و دستورات حلقه‌ای (حلقه‌های while و for) بسیار مهم هستند. به عملگرهای مقایسه‌ای، عملگرهای رابطه‌ای نیز گفته می‌شود. برخی از معروف‌ترین عملگرها عبارت‌اند از ">" به معنای بزرگ‌تر از، و "<" به معنای کوچک‌تر از.

پایتون دو عملگر دیگر نیز دارد که از ترکیب نماد "=" با این دو ایجاد می‌شوند. نماد "<=" برای عملگر کوچک‌تر یا مساوی و نماد ">=" برای عملگر بزرگ‌تر یا مساوی به کار می‌رود.

عملگرهای مقایسه‌ای مختلف در پایتون

پایتون دو عملگر مقایسه‌ای دیگر به شکل "==" و "!=" دارد. این عملگرها به ترتیب برای مساوی بودن و مساوی نبودن استفاده می‌شوند. بنابراین، ۶ عملگر مقایسه‌ای در پایتون وجود دارد که در جدول زیر فهرست شده‌اند:

< کوچک‌تر از a<b
> بزرگ‌تر از a>b
<= کوچک‌تر یا مساوی a<=b
>= بزرگ‌تر یا مساوی a>=b
== مساوی است با a==b
!= مساوی نیست با a!=b

عملگرهای مقایسه‌ای از نوع دوتاعی (binary) هستند، به این معنی که به دو عملوند نیاز دارند. عبارتی که شامل یک عملگر مقایسه‌ای باشد، عبارت بولین (Boolean expression) نامیده می‌شود و همیشه مقدار True یا False را برمی‌گرداند.

مثال

a=5
b=7
print (a>b)
print (a<b)

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

False
True

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

مثال

کد زیر استفاده از عملگرهای مقایسه‌ای پایتون را با اعداد صحیح نشان می‌دهد −

print ("Both operands are integer")
a=5
b=7
print ("a=",a, "b=",b, "a>b is", a>b)
print ("a=",a, "b=",b,"a<b is",a<b)
print ("a=",a, "b=",b,"a==b is",a==b)
print ("a=",a, "b=",b,"a!=b is",a!=b)

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

Both operands are integer
a= 5 b= 7 a>b is False
a= 5 b= 7 a<b is True
a= 5 b= 7 a==b is False
a= 5 b= 7 a!=b is True

مقایسه اعداد ممیز شناور (Float)

در مثال زیر، یک عملوند عدد صحیح با یک عملوند ممیز شناور مقایسه می‌شود.

مثال

print ("comparison of int and float")
a=10
b=10.0
print ("a=",a, "b=",b, "a>b is", a>b)
print ("a=",a, "b=",b,"a<b is",a<b)
print ("a=",a, "b=",b,"a==b is",a==b)
print ("a=",a, "b=",b,"a!=b is",a!=b)

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

comparison of int and float
a= 10 b= 10.0 a>b is False
a= 10 b= 10.0 a<b is False
a= 10 b= 10.0 a==b is True
a= 10 b= 10.0 a!=b is False

مقایسه اعداد مختلط (Complex)

اگرچه شیء مختلط یک نوع داده عددی در پایتون است، رفتار آن با بقیه تفاوت دارد. پایتون از عملگرهای > و < برای اعداد مختلط پشتیبانی نمی‌کند، اما از عملگرهای برابری (==) و نابرابری (!=) پشتیبانی می‌کند.

مثال

print ("comparison of complex numbers")
a=10+1j
b=10.-1j
print ("a=",a, "b=",b,"a==b is",a==b)
print ("a=",a, "b=",b,"a!=b is",a!=b)

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

comparison of complex numbers
a= (10+1j) b= (10-1j) a==b is False
a= (10+1j) b= (10-1j) a!=b is True

در صورت استفاده از عملگرهای کوچک‌تر از یا بزرگ‌تر از، خطای TypeError دریافت می‌کنید.

مثال

print ("comparison of complex numbers")
a=10+1j
b=10.-1j
print ("a=",a, "b=",b,"a<b is",a<b)
print ("a=",a, "b=",b,"a>b is",a>b)

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

comparison of complex numbers
Traceback (most recent call last):
  File "C:\Users\mlath\examples\example.py", line 5, in <module>
    print ("a=",a, "b=",b,"a<b is",a<b)
                                      ^^^
TypeError: '<' not supported between instances of 'complex' and
'complex

مقایسه مقادیر بولین (Booleans)

اشیاء بولین در پایتون در واقع همان اعداد صحیح هستند: True برابر ۱ و False برابر ۰ است. در واقع، پایتون هر عدد غیرصفری را True در نظر می‌گیرد. در پایتون مقایسه اشیاء بولین امکان‌پذیر است. عبارت "False < True" برابر True است!

مثال

print ("comparison of Booleans")
a=True
b=False
print ("a=",a, "b=",b,"a<b is",a<b)
print ("a=",a, "b=",b,"a>b is",a>b)
print ("a=",a, "b=",b,"a==b is",a==b)
print ("a=",a, "b=",b,"a!=b is",a!=b)

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

comparison of Booleans
a= True b= False a<b is False
a= True b= False a>b is True
a= True b= False a==b is False
a= True b= False a!=b is True

مقایسه انواع دنباله‌ها (Sequence Types)

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

مثال

print ("comparison of different sequence types")
a=(1,2,3)
b=[1,2,3]
print ("a=",a, "b=",b,"a<b is",a<b)

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

comparison of different sequence types
Traceback (most recent call last):
  File "C:\Users\mlath\examples\example.py", line 5, in <module>
    print ("a=",a, "b=",b,"a<b is",a<b)
                                       ^^^
TypeError: '<' not supported between instances of 'tuple' and 'list'

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

اینکه کدام‌یک از عملوندها بزرگ‌تر است، به تفاوت مقدار آیتم‌ها در اولين اندیسی بستگی دارد که نابرابر هستند. به عنوان مثال، عبارت 'BAT'>'BAR' برابر True است، زیرا حرف T در ترتیب یونیکد بعد از R قرار دارد.

اگر همه آیتم‌های دو دنباله در مقایسه برابر باشند، دنباله‌ها برابر در نظر گرفته می‌شوند.

مثال

print ("comparison of strings")
a='BAT'
b='BALL'
print ("a=",a, "b=",b,"a<b is",a<b)
print ("a=",a, "b=",b,"a>b is",a>b)
print ("a=",a, "b=",b,"a==b is",a==b)
print ("a=",a, "b=",b,"a!=b is",a!=b)

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

comparison of strings
a= BAT b= BALL a<b is False
a= BAT b= BALL a>b is True
a= BAT b= BALL a==b is False
a= BAT b= BALL a!=b is True

در مثال زیر، دو شیء تاپل با هم مقایسه شده‌اند −

مثال

print ("comparison of tuples")
a=(1,2,4)
b=(1,2,3)
print ("a=",a, "b=",b,"a<b is",a<b)
print ("a=",a, "b=",b,"a>b is",a>b)
print ("a=",a, "b=",b,"a==b is",a==b)
print ("a=",a, "b=",b,"a!=b is",a!=b)

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

a= (1, 2, 4) b= (1, 2, 3) a<b is False
a= (1, 2, 4) b= (1, 2, 3) a>b is True
a= (1, 2, 4) b= (1, 2, 3) a==b is False
a= (1, 2, 4) b= (1, 2, 3) a!=b is True

مقایسه اشیاء دیکشنری

استفاده از عملگرهای > و < برای دیکشنری‌های پایتون تعریف نشده است. در صورت استفاده از این عملگرها، خطای TypeError: '<' not supported between instances of 'dict' and 'dict' گزارش می‌شود.

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

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

مثال

print ("comparison of dictionary objects")
a={1:1,2:2}
b={2:2, 1:1, 3:3}
print ("a=",a, "b=",b,"a==b is",a==b)
print ("a=",a, "b=",b,"a!=b is",a!=b)

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

comparison of dictionary objects
a= {1: 1, 2: 2} b= {2: 2, 1: 1, 3: 3} a==b is False
a= {1: 1, 2: 2} b= {2: 2, 1: 1, 3: 3} a!=b is True

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