عملگرها در پایتون: کلید انجام عملیات
عملگرها در پایتون به نمادهایی گفته میشود که عملیات خاصی را روی مقادیر (مانند اعداد، رشتهها و …) انجام میدهند. این عملیات میتوانند شامل محاسبات ریاضی، مقایسهها، ترکیب مقادیر و بسیاری موارد دیگر باشند.
انواع عملگرها در پایتون
پایتون انواع مختلفی از عملگرها را پشتیبانی میکند که هر کدام برای انجام عملیات خاصی طراحی شدهاند. در زیر به برخی از مهمترین انواع عملگرها اشاره میکنیم:
عملگرهای حسابی در پایتون: ابزارهایی برای محاسبات عددی
عملگرهای حسابی در پایتون، همانند سایر زبانهای برنامهنویسی، برای انجام محاسبات ریاضی بر روی اعداد استفاده میشوند. این عملگرها به شما اجازه میدهند تا اعداد را با هم جمع، تفریق، ضرب، تقسیم و انجام عملیات دیگری کنید.
انواع عملگرهای حسابی در پایتون
- جمع (+): دو عدد را با هم جمع میکند. Python
x = 5 y = 3 sum = x + y # sum برابر با ۸ خواهد بود
- تفریق (-): تفاضل دو عدد را محاسبه میکند. Python
x = 10 y = 4 difference = x - y # difference برابر با ۶ خواهد بود
- ضرب (*): حاصل ضرب دو عدد را محاسبه میکند. Python
x = 7 y = 2 product = x * y # product برابر با ۱۴ خواهد بود
- تقسیم (/): حاصل تقسیم دو عدد را محاسبه میکند. Python
x = 20 y = 5 quotient = x / y # quotient برابر با ۴.۰ خواهد بود (نتیجه به صورت اعشاری است)
- باقیمانده تقسیم (%): باقیمانده تقسیم یک عدد بر عدد دیگر را محاسبه میکند. Python
x = 17 y = 5 remainder = x % y # remainder برابر با ۲ خواهد بود
- توان ():** یک عدد را به توان عدد دیگر میرساند. Python
x = 2 y = 3 result = x ** y # result برابر با ۸ خواهد بود (۲ به توان ۳)
- تقسیم صحیح (//): حاصل تقسیم دو عدد را به صورت عدد صحیح (بدون اعشار) محاسبه میکند. Python
x = 13 y = 4 result = x // y # result برابر با ۳ خواهد بود
مثالهای بیشتر
# محاسبه مساحت دایره
pi = 3.14159
radius = 5
area = pi * radius ** 2
print("مساحت دایره:", area)
# تبدیل دما از سانتیگراد به فارنهایت
celsius = 37
fahrenheit = (celsius * 9/5) + 32
print("دمای فارنهایت:", fahrenheit)
نکات مهم
- ترتیب عملیات: در پایتون، ترتیب عملیات مشابه ریاضیات است. عملگرهای توان اولویت بالاتری دارند، سپس ضرب و تقسیم، و در نهایت جمع و تفریق. برای تغییر ترتیب عملیات میتوانید از پرانتز استفاده کنید.
- انواع اعداد: عملگرهای حسابی معمولاً روی اعداد صحیح و اعشاری (float) عمل میکنند. اما برای اعداد مختلط و انواع دیگر اعداد، ممکن است نیاز به توابع خاصی باشد.
- رشتهها: در پایتون، عملگر جمع (+) برای اتصال رشتهها نیز استفاده میشود.
ترتیب عملیات در پایتون: قوانینی که محاسبات را دقیق میکنند
همانطور که در ریاضیات، ترتیبی که عملیات در یک عبارت انجام میشود، بر نتیجه نهایی تأثیرگذار است، در پایتون نیز قوانین مشخصی برای ترتیب عملیات وجود دارد. این قوانین به ما کمک میکنند تا از نتایج صحیح و مورد انتظار در محاسبات خود اطمینان حاصل کنیم.
اولویت عملگرها
در پایتون، عملگرها بر اساس اولویت یا تقدم خاصی اجرا میشوند. عملگرهایی که اولویت بالاتری دارند، زودتر از عملگرهای با اولویت پایینتر انجام میشوند.
به طور کلی، ترتیب اولویت عملگرها در پایتون به صورت زیر است:
- پرانتزها: هر چیزی که داخل پرانتز باشد، ابتدا محاسبه میشود.
- توان: عملگر توان (**) بالاترین اولویت را دارد.
- ضرب، تقسیم، تقسیم صحیح، باقیمانده: این عملگرها (*, /, //, %) اولویت یکسانی دارند و از چپ به راست محاسبه میشوند.
- جمع و تفریق: این عملگرها (+, -) اولویت یکسانی دارند و از چپ به راست محاسبه میشوند.
مثالها
-
مثال ۱:
Pythonx = 2 + 3 * 4
در این مثال، ابتدا ضرب (۳ * ۴) انجام میشود و سپس نتیجه آن به ۲ اضافه میشود. بنابراین، مقدار
x
برابر با ۱۴ خواهد بود. -
مثال ۲:
Pythony = (2 + 3) * 4
در این مثال، به دلیل وجود پرانتز، ابتدا جمع داخل پرانتز انجام میشود و سپس نتیجه آن در ۴ ضرب میشود. بنابراین، مقدار
y
برابر با ۲۰ خواهد بود.
جدول خلاصه اولویت عملگرها
عملگرها | اولویت |
---|---|
() | بالاترین |
** | |
*, /, //, % | |
+, – |
اهمیت دانستن ترتیب عملیات
- درک صحیح محاسبات: با دانستن ترتیب عملیات، میتوانید به راحتی محاسبات پیچیده را تجزیه و تحلیل کنید و از نتایج صحیح اطمینان حاصل کنید.
- نوشتن کد خواناتر: استفاده صحیح از پرانتزها برای مشخص کردن ترتیب عملیات، باعث میشود کد شما خواناتر و قابل فهمتر شود.
- اجتناب از خطاها: عدم توجه به ترتیب عملیات میتواند منجر به خطاهای محاسباتی شود.
مثال عملی:
فرض کنید میخواهید میانگین سه عدد را محاسبه کنید.
num1 = 10
num2 = 20
num3 = 30
average = (num1 + num2 + num3) / 3
print(average)
در این مثال، ابتدا اعداد داخل پرانتز با هم جمع میشوند و سپس نتیجه بر ۳ تقسیم میشود. استفاده از پرانتز در این مثال ضروری است تا اطمینان حاصل کنیم که ابتدا جمع انجام میشود و سپس تقسیم.
نتیجهگیری:
دانستن ترتیب عملیات در پایتون یک مهارت ضروری برای هر برنامهنویسی است. با درک این قوانین، میتوانید محاسبات پیچیدهتری را انجام دهید و کدهای دقیقتری بنویسید.
عملگر جمع (+) برای اتصال رشتهها در پایتون
در پایتون، عملگر جمع (+) علاوه بر انجام عملیات ریاضی روی اعداد، برای اتصال رشتهها به هم نیز به کار میرود. به این عمل الحاق (concatenation) رشتهها گفته میشود.
مثال:
first_name = "علی"
last_name = "احمدی"
full_name = first_name + " " + last_name
print(full_name) # خروجی: علی احمدی
در مثال بالا:
first_name
وlast_name
دو متغیر از نوع رشته هستند.- با استفاده از عملگر
+
، این دو رشته به هم متصل شدهاند و یک رشته جدید به نامfull_name
ایجاد شده است. - یک فاصله بین دو نام نیز اضافه شده است تا نام کامل به صورت صحیح نمایش داده شود.
نکات مهم:
- تبدیل به رشته: اگر بخواهید یک مقدار عددی را به یک رشته متصل کنید، باید ابتدا آن را به نوع دادهای رشته تبدیل کنید. برای این کار میتوانید از تابع
str()
استفاده کنید.Pythonage = 30 message = "سن من " + str(age) + " سال است." print(message) # خروجی: سن من ۳۰ سال است.
- تکرار رشته: عملگر ضرب (*) نیز برای تکرار یک رشته به تعداد مشخصی استفاده میشود. Python
star = "*" print(star * 10) # خروجی: **********
کاربردهای عملی:
- ساخت پیامها: برای ساخت پیامهای سفارشی با ترکیب اطلاعات مختلف.
- ایجاد رشتههای طولانی: برای ساخت رشتههای طولانی از قطعات کوچکتر.
- پردازش متن: برای دستکاری و تغییر رشتههای متنی.
مثالهای دیگر:
# ساخت یک آدرس ایمیل
username = "ali"
domain = "gmail.com"
email = username + "@" + domain
print(email) # خروجی: ali@gmail.com
# ساخت یک مسیر فایل
path = "C:/Users/ali/Documents/"
file_name = "report.txt"
full_path = path + file_name
print(full_path) # خروجی: C:/Users/ali/Documents/report.txt
جمعبندی:
عملگر جمع (+) یک ابزار قدرتمند برای کار با رشتهها در پایتون است. با استفاده از این عملگر، میتوانید رشتههای مختلف را به هم متصل کرده و رشتههای جدیدی ایجاد کنید. این ویژگی در بسیاری از برنامههای پایتون، از جمله برنامههای وب و پردازش متن، کاربرد دارد.
عملگرهای مقایسهای در پایتون
عملگرهای مقایسهای در پایتون برای مقایسه دو مقدار با یکدیگر استفاده میشوند. نتیجه این مقایسه همیشه یک مقدار بولین (Boolean) است که یا True (درست) یا False (نادرست) خواهد بود. این عملگرها در ساخت شرطها و تصمیمگیریها در برنامهنویسی بسیار مهم هستند.
لیست عملگرهای مقایسهای
- ==: برابر است با (equal to)
- !=: نابرابر است با (not equal to)
- <: کوچکتر است از (less than)
- >: بزرگتر است از (greater than)
- <=: کوچکتر یا مساوی است با (less than or equal to)
- >=: بزرگتر یا مساوی است با (greater than or equal to)
مثالها
x = 10
y = 5
# مثالهای مقایسه
print(x == y) # False (x برابر y نیست)
print(x != y) # True (x نابرابر y است)
print(x > y) # True (x بزرگتر از y است)
print(x < y) # False (x کوچکتر از y نیست)
print(x >= y) # True (x بزرگتر یا مساوی y است)
print(x <= y) # False (x کوچکتر یا مساوی y نیست)
کاربردها
- شرطها: در ساخت شرطها برای کنترل جریان برنامه استفاده میشوند.
- حلقهها: برای تعیین شرط ادامه یا خاتمه یک حلقه.
- لیستها و دیکشنریها: برای جستجو و دستکاری عناصر.
- توابع: برای ایجاد توابع شرطی.
مثال عملی: بررسی سن
age = 18
if age >= 18:
print("شما به سن قانونی رسیدهاید.")
else:
print("شما هنوز به سن قانونی نرسیدهاید.")
نکته مهم: مقایسه انواع دادهای
- اعداد: مقایسه اعداد بر اساس مقدار عددی آنها انجام میشود.
- رشتهها: مقایسه رشتهها بر اساس ترتیب الفبایی کاراکترها انجام میشود.
- لیستها و تاپلها: مقایسه این ساختارها عنصر به عنصر انجام میشود.
- دیکشنریها: مقایسه دیکشنریها بر اساس کلیدهای آنها انجام میشود.
مقایسه رشتهها در پایتون
در پایتون، رشتهها (Strings) دنبالهای از کاراکترها هستند و برای مقایسه آنها از عملگرهای مقایسهای مشابه اعداد استفاده میشود. اما نحوه این مقایسه کمی متفاوت است.
نحوه مقایسه رشتهها
پایتون برای مقایسه رشتهها، کاراکتر به کاراکتر آنها را با هم مقایسه میکند و ترتیب الفبایی Unicode را مبنای خود قرار میدهد.
- برابر بودن (==): اگر دو رشته کاملاً یکسان باشند، نتیجه
True
خواهد بود. - نابرابر بودن (!=): اگر دو رشته با هم تفاوت داشته باشند، نتیجه
False
خواهد بود. - بزرگتر بودن (>): اگر رشته سمت چپ از نظر الفبایی بعد از رشته سمت راست قرار گیرد، نتیجه
True
خواهد بود. - کوچکتر بودن (<): اگر رشته سمت چپ از نظر الفبایی قبل از رشته سمت راست قرار گیرد، نتیجه
True
خواهد بود.
نکته مهم: حروف بزرگ و کوچک در پایتون متفاوت در نظر گرفته میشوند. به عنوان مثال، “A” کوچکتر از “a” است.
مثالها
string1 = "apple"
string2 = "banana"
string3 = "Apple"
print(string1 == string2) # False
print(string1 < string2) # True
print(string1 == string3) # False
کاربردهای مقایسه رشتهها
- مرتبسازی: برای مرتبسازی لیستها یا مجموعههایی از رشتهها.
- جستجو: برای پیدا کردن یک رشته خاص در یک متن یا لیست.
- شرطگذاری: برای ایجاد شرطهای پیچیدهتر در برنامهها.
مثال عملی: مرتبسازی یک لیست از نامها
names = ["علی", "زهرا", "حسن", "مریم"]
names.sort()
print(names) # خروجی: ['حسن', 'علی', 'مریم', 'زهرا']
نکات اضافی
- حساسیت به حروف بزرگ و کوچک: برای نادیده گرفتن تفاوت حروف بزرگ و کوچک، میتوانید از روشهایی مانند تبدیل همه حروف به کوچک یا بزرگ استفاده کنید.
- مقایسه پیشرفته: برای مقایسههای پیچیدهتر، میتوانید از توابع و متدهای مختلف رشتهها استفاده کنید.
- مقایسه با اعداد: نمیتوان به طور مستقیم یک رشته را با یک عدد مقایسه کرد. برای انجام این کار، باید هر دو مقدار را به یک نوع دادهای تبدیل کنید.
مقایسه لیستها و تاپلها در پایتون
لیستها و تاپلها دو ساختار داده بسیار مهم در پایتون هستند که برای ذخیره مجموعه ای از عناصر استفاده میشوند. هر دو این ساختارها ترتیب عناصر را حفظ میکنند، اما تفاوتهای مهمی دارند که در انتخاب یکی از آنها تاثیرگذار است.
لیستها (Lists)
- قابل تغییر: عناصر یک لیست را میتوان بعد از ایجاد لیست، اضافه، حذف یا تغییر داد.
- تعریف: با استفاده از براکتهای مربع
[]
تعریف میشوند. - کاربردها: برای ذخیره مجموعه ای از دادههای مرتبط که ممکن است در طول برنامه تغییر کنند، مانند لیست خرید، نمرات دانشآموزان و … استفاده میشوند.
my_list = [1, 2, 3, "apple", "banana"]
my_list[0] = "orange" # تغییر مقدار عنصر اول
my_list.append("cherry") # اضافه کردن عنصر جدید
تاپلها (Tuples)
- غیرقابل تغییر: عناصر یک تاپل پس از ایجاد، قابل تغییر نیستند.
- تعریف: با استفاده از پرانتزهای گرد
()
تعریف میشوند. - کاربردها: برای ذخیره دادههایی که نباید تغییر کنند، مانند مختصات یک نقطه، اطلاعات ثابت یک محصول و … استفاده میشوند. تاپلها همچنین برای کلیدهای دیکشنری استفاده میشوند.
my_tuple = (1, 2, 3, "apple")
# my_tuple[0] = "orange" # خطا: نمیتوان عناصر یک تاپل را تغییر داد
جدول مقایسه
ویژگی | لیستها | تاپلها |
---|---|---|
قابلیت تغییر | قابل تغییر | غیرقابل تغییر |
سینتکس | [] | () |
کاربردها | لیست خرید، نمرات، … | مختصات، اطلاعات ثابت، کلیدهای دیکشنری |
سرعت | کندتر (به دلیل قابلیت تغییر) | سریعتر |
حافظه | بیشتر (به دلیل قابلیت تغییر) | کمتر |
چه زمانی از لیست و چه زمانی از تاپل استفاده کنیم؟
- لیستها: زمانی استفاده میشوند که نیاز به یک ساختار داده قابل تغییر دارید و میخواهید عناصر را به آن اضافه یا حذف کنید.
- تاپلها: زمانی استفاده میشوند که میخواهید دادههای شما ثابت باشند و تغییر نکنند. همچنین برای کلیدهای دیکشنری و زمانی که میخواهید از تغییر تصادفی دادهها جلوگیری کنید، از تاپل استفاده میشود.
خلاصه
انتخاب بین لیست و تاپل به نیازهای برنامه شما بستگی دارد. اگر به ساختاری نیاز دارید که بتوان آن را تغییر داد، از لیست استفاده کنید. اگر به ساختاری نیاز دارید که ثابت باشد و تغییر نکند، از تاپل استفاده کنید.
مثال:
# لیست برای ذخیره نمرات دانشآموزان
grades = [85, 92, 78]
# تاپل برای ذخیره مختصات یک نقطه
point = (3, 4)
مقایسه دیکشنریها در پایتون
دیکشنریها (Dictionaries) در پایتون ساختار دادهای هستند که برای ذخیرهسازی جفتهای کلید-مقدار استفاده میشوند. هر کلید باید منحصر به فرد باشد و به یک مقدار متناظر اشاره میکند.
مقایسه دو دیکشنری
مقایسه مستقیم با ==
:
- دو دیکشنری زمانی برابر در نظر گرفته میشوند که کلیدها و مقادیر متناظر آنها کاملاً یکسان باشند.
- ترتیب کلیدها در مقایسه مهم نیست.
dict1 = {'name': 'علی', 'age': 30}
dict2 = {'age': 30, 'name': 'علی'}
print(dict1 == dict2) # خروجی: True
مقایسه کلیدها:
- برای مقایسه فقط کلیدها، میتوانید از مجموعه کلیدهای هر دیکشنری استفاده کنید.
dict1 = {'name': 'علی', 'age': 30}
dict2 = {'age': 30, 'city': 'تهران'}
print(dict1.keys() == dict2.keys()) # خروجی: False (کلید 'city' در dict2 وجود ندارد)
مقایسه مقادیر:
- برای مقایسه فقط مقادیر، میتوانید از مجموعه مقادیر هر دیکشنری استفاده کنید. اما توجه داشته باشید که این مقایسه ممکن است همیشه دقیق نباشد، زیرا ممکن است دو دیکشنری با کلیدهای متفاوت مقادیر یکسانی داشته باشند.
dict1 = {'name': 'علی', 'age': 30}
dict2 = {'city': 'تهران', 'age': 30}
print(dict1.values() == dict2.values()) # خروجی: True (هر دو دیکشنری دارای مقدار ۳۰ هستند)
مقایسه عمیقتر
برای مقایسه عمیقتر دیکشنریها، میتوانید از کتابخانههای جانبی مانند deepdiff
استفاده کنید. این کتابخانهها به شما امکان میدهند تا تفاوتهای جزئی بین دو دیکشنری را به صورت دقیق مشخص کنید.
مثال عملی: مقایسه تنظیمات دو کاربر
user1 = {'name': 'علی', 'age': 30, 'city': 'تهران'}
user2 = {'name': 'حسن', 'age': 25, 'city': 'شیراز'}
# مقایسه مستقیم
print(user1 == user2) # خروجی: False
# مقایسه کلیدها
print(user1.keys() == user2.keys()) # خروجی: True (هر دو دیکشنری کلیدهای یکسانی دارند)
# مقایسه مقادیر
print(user1.values() == user2.values()) # خروجی: False (مقادیر یکسان نیستند)
نکات مهم
- تغییرپذیری کلیدها: کلیدهای یک دیکشنری باید غیرقابل تغییر (immutable) باشند. معمولاً از رشتهها، اعداد صحیح و تاپلها به عنوان کلید استفاده میشود.
- ترتیب کلیدها: ترتیب کلیدها در دیکشنریها مهم نیست.
- تابع
items()
: با استفاده از این تابع میتوانید هم کلیدها و هم مقادیر یک دیکشنری را به صورت جفت دریافت کنید. - کتابخانههای جانبی: برای مقایسههای پیچیدهتر و سفارشی، میتوانید از کتابخانههای جانبی مانند
deepdiff
استفاده کنید.
تابع items() در پایتون
تابع items()
در پایتون برای دسترسی به جفتهای کلید-مقدار یک دیکشنری به کار میرود. این تابع یک نمای (view) از جفتهای کلید-مقدار را برمیگرداند که به صورت یک شیء از نوع dict_items
نمایش داده میشود.
سینتکس
dict_name.items()
dict_name
: نام دیکشنری مورد نظر
نحوه کار
تابع items()
یک شیء از نوع dict_items
برمیگرداند که شامل جفتهای کلید-مقدار دیکشنری است. این شیء قابل تکرار (iterable) است و میتوان از آن برای پیمایش روی جفتهای کلید-مقدار استفاده کرد.
مثال
my_dict = {'name': 'علی', 'age': 30, 'city': 'تهران'}
# استفاده از items() برای پیمایش روی جفتهای کلید-مقدار
for key, value in my_dict.items():
print(key, value)
خروجی:
name علی
age 30
city تهران
کاربردها
- پیمایش روی دیکشنری: برای دسترسی به کلیدها و مقادیر به صورت همزمان.
- ساخت لیست از جفتهای کلید-مقدار: با تبدیل شیء
dict_items
به یک لیست. - استفاده در توابع و متدها: به عنوان ورودی برای توابعی که انتظار یک لیست از جفتها را دارند.
مثال: ساخت لیست از جفتهای کلید-مقدار
my_dict = {'name': 'علی', 'age': 30, 'city': 'تهران'}
items_list = list(my_dict.items())
print(items_list)
خروجی:
[('name', 'علی'), ('age', 30), ('city', 'تهران')]
نکته مهم
- شیء
dict_items
قابل تغییر نیست. اگر میخواهید تغییراتی در جفتهای کلید-مقدار ایجاد کنید، باید آنها را به یک لیست تبدیل کنید و سپس تغییرات را اعمال کنید.
جمعبندی
تابع items()
یک ابزار مفید برای کار با دیکشنریها در پایتون است. با استفاده از این تابع میتوانید به راحتی به جفتهای کلید-مقدار دسترسی پیدا کنید و آنها را پردازش کنید.
کتابخانه DeepDiff در پایتون: مقایسه عمیق ساختارهای دادهای
DeepDiff یک کتابخانه قدرتمند در پایتون است که برای مقایسه عمیق و دقیق انواع مختلف ساختارهای دادهای، از جمله دیکشنریها، لیستها و اشیاء، طراحی شده است. این کتابخانه به شما امکان میدهد تا تفاوتهای دقیق بین دو ساختار دادهای را شناسایی کنید، حتی اگر این تفاوتها در سطوح مختلف تو در تو قرار داشته باشند.
چرا DeepDiff؟
- مقایسه دقیق: DeepDiff قادر است تا تفاوتهای ریز بین دو ساختار دادهای را تشخیص دهد، از جمله تفاوت در نوع داده، مقدار، ترتیب عناصر و ساختار کلی.
- خروجی قابل خواندن: این کتابخانه خروجیهای قابل فهمی ارائه میدهد که به شما کمک میکند تا به راحتی تفاوتها را شناسایی و تحلیل کنید.
- انعطافپذیری: DeepDiff امکان سفارشیسازی مقایسهها را فراهم میکند، به طوری که میتوانید نوع مقایسه، عمق جستجو و سایر پارامترها را کنترل کنید.
کاربردهای DeepDiff
- تست واحد: برای مقایسه نتایج انتظار رفته با نتایج واقعی در تستهای واحد.
- مقایسه پیکربندی: برای مقایسه پیکربندیهای مختلف یک سیستم.
- مقایسه دادههای JSON: برای مقایسه دو فایل JSON.
- مقایسه دادههای XML: برای مقایسه دو فایل XML.
- مقایسه دادههای نسخه کنترل: برای مقایسه تغییرات بین دو نسخه از یک فایل یا دایرکتوری.
مثال ساده
from deepdiff import DeepDiff
old_dict = {'a': 1, 'b': {'x': 2, 'y': 3}}
new_dict = {'a': 1, 'b': {'x': 2, 'y': 4}}
diff = DeepDiff(old_dict, new_dict)
print(diff)
خروجی این کد به شکل زیر خواهد بود:
{'values_changed': {'root[b][y]': {'new': 4, 'old': 3}}}
همانطور که میبینید، DeepDiff به طور دقیق مشخص کرده است که مقدار y
در زیر شاخه b
تغییر کرده است.
ویژگیهای کلیدی DeepDiff
- مقایسه انواع مختلف داده: اعداد، رشتهها، لیستها، دیکشنریها، اشیاء و حتی توابع.
- مقایسه عمیق: توانایی مقایسه ساختارهای دادهای تو در تو.
- تشخیص انواع تغییرات: افزودن، حذف، تغییر مقدار، تغییر نوع داده و تغییر ترتیب عناصر.
- سفارشیسازی: امکان تنظیم پارامترهای مختلف برای کنترل نحوه مقایسه.
- خروجیهای قابل فهم: ارائه خروجیهای دقیق و قابل خواندن.
نصب DeepDiff
برای نصب DeepDiff، میتوانید از دستور زیر در ترمینال استفاده کنید:
pip install deepdiff
جمعبندی
DeepDiff یک ابزار قدرتمند برای مقایسه عمیق ساختارهای دادهای در پایتون است. این کتابخانه میتواند در بسیاری از کاربردها، از جمله تست واحد، مقایسه پیکربندی و تحلیل داده، مفید باشد. اگر به دنبال ابزاری برای مقایسه دقیق و جامع ساختارهای دادهای هستید، DeepDiff انتخاب مناسبی است.
مقایسه دیکشنریها در پایتون به سادگی با استفاده از عملگر ==
انجام میشود. اما برای مقایسههای پیچیدهتر، میتوانید از روشهای دیگری مانند مقایسه کلیدها یا مقادیر استفاده کنید. همچنین، کتابخانههای جانبی میتوانند به شما در انجام مقایسههای عمیقتر کمک کنند.
جمعبندی:
عملگرهای مقایسهای ابزاری اساسی در برنامهنویسی پایتون هستند. با استفاده از این عملگرها میتوانید مقادیر مختلف را با هم مقایسه کنید و بر اساس نتیجه مقایسه، تصمیمگیریهای لازم را در برنامه خود انجام دهید.
عملگرهای منطقی در پایتون
عملگرهای منطقی در پایتون برای ترکیب عبارات شرطی و ایجاد تصمیمگیریهای پیچیدهتر استفاده میشوند. این عملگرها بر روی مقادیر بولین (True یا False) عمل میکنند و نتیجه آنها نیز یک مقدار بولین است.
انواع عملگرهای منطقی
- and: این عملگر زمانی مقدار True برمیگرداند که هر دو عبارت شرطی سمت چپ و راست آن True باشند. به عبارت دیگر، هر دو شرط باید برقرار باشند.
- or: این عملگر زمانی مقدار True برمیگرداند که حداقل یکی از عبارات شرطی سمت چپ یا راست آن True باشد. به عبارت دیگر، کافی است که یکی از شرطها برقرار باشد.
- not: این عملگر مقدار بولین عبارت را معکوس میکند. اگر عبارت True باشد، not آن False میشود و برعکس.
جدول حقیقت
A | B | A and B | A or B | not A |
---|---|---|---|---|
True | True | True | True | False |
True | False | False | True | False |
False | True | False | True | True |
False | False | False | False | True |
مثالها
x = 10
y = 5
# مثال استفاده از and
print(x > 5 and y < 10) # خروجی: True (هر دو شرط برقرار هستند)
# مثال استفاده از or
print(x < 5 or y > 3) # خروجی: True (حداقل یکی از شرطها برقرار است)
# مثال استفاده از not
print(not (x == y)) # خروجی: True (x برابر y نیست)
کاربردها
- شرطهای پیچیده: برای ایجاد شرطهای ترکیبی در عبارات if، while و سایر ساختارهای کنترلی.
- اعتبارسنجی داده: برای بررسی صحت دادههای ورودی.
- جستجو در دادهها: برای فیلتر کردن دادهها بر اساس چندین شرط.
مثال عملی: بررسی سن و ملیت
age = 25
nationality = "ایران"
if age >= 18 and nationality == "ایران":
print("شما واجد شرایط رای دادن در ایران هستید.")
نکته مهم
- عملگرهای منطقی از چپ به راست ارزیابی میشوند.
- میتوانید از پرانتز برای تعیین اولویت عملیات استفاده کنید.
مثال با پرانتز
x = 10
y = 5
z = 3
print(x > y and y > z or z > x) # خروجی: True
در این مثال، ابتدا x > y
و y > z
ارزیابی میشوند و سپس نتیجه آنها با z > x
ترکیب میشود.
عملگرهای انتساب در پایتون
عملگرهای انتساب در پایتون برای تخصیص مقدار به یک متغیر استفاده میشوند. سادهترین عملگر انتساب علامت مساوی (=
) است که مقدار سمت راست را به متغیر سمت چپ اختصاص میدهد.
عملگر انتساب ساده (=
)
x = 5 # به متغیر x مقدار ۵ اختصاص داده میشود.
عملگرهای انتساب ترکیبی
علاوه بر عملگر ساده، پایتون عملگرهای انتساب ترکیبی دیگری نیز دارد که ترکیبی از یک عملگر حسابی و عملگر انتساب هستند. این عملگرها برای انجام یک عملیات حسابی و سپس انتساب نتیجه به همان متغیر استفاده میشوند.
- +=: جمع و انتساب
- -=: تفریق و انتساب
- *=: ضرب و انتساب
- /=: تقسیم و انتساب
- %=: باقیمانده تقسیم و انتساب
- //=: تقسیم صحیح و انتساب
- **=: توان و انتساب
مثالها:
x = 10
x += 5 # معادل x = x + 5
print(x) # خروجی: ۱۵
y = 20
y -= 3 # معادل y = y - 3
print(y) # خروجی: ۱۷
z = 5
z *= 2 # معادل z = z * 2
print(z) # خروجی: ۱۰
کاربردهای عملگرهای انتساب
- بهروزرسانی متغیرها: برای تغییر مقدار یک متغیر به طور مکرر.
- کاهش کد: برای کوتاهتر نوشتن کدهای تکراری.
مثال عملی: شمارش تعداد تکرارها
count = 0
for i in range(5):
count += 1
print(count) # خروجی: ۵
در این مثال، از عملگر +=
برای افزایش مقدار متغیر count
در هر تکرار حلقه استفاده شده است.
نکته مهم
- ترتیب عملیات: عملگرهای انتساب ترکیبی دارای اولویت کمتری نسبت به عملگرهای حسابی هستند. به همین دلیل، عبارات پیچیدهتر را میتوان با استفاده از پرانتز مشخص کرد.
- انواع دادهها: عملگرهای انتساب برای انواع دادههای مختلف قابل استفاده هستند.
خلاصه
عملگرهای انتساب ابزاری قدرتمند برای تخصیص و بهروزرسانی مقادیر متغیرها در پایتون هستند. با استفاده از این عملگرها میتوانید کدهای خود را کوتاهتر، خواناتر و کارآمدتر کنید.
عملگرهای عضویت در پایتون
عملگرهای عضویت در پایتون برای بررسی عضویت یک عنصر در یک دنباله (مانند رشتهها، لیستها، تاپلها و مجموعهها) استفاده میشوند. این عملگرها به شما اجازه میدهند که بررسی کنید آیا یک مقدار خاص در یک ساختار داده وجود دارد یا خیر.
عملگرهای عضویت اصلی
- in: این عملگر زمانی که یک عنصر در یک دنباله وجود داشته باشد، مقدار
True
برمیگرداند. - not in: این عملگر دقیقاً عکس
in
عمل میکند و زمانی که یک عنصر در یک دنباله وجود نداشته باشد، مقدارTrue
برمیگرداند.
مثالها
fruits = ["سیب", "موز", "انار"]
# بررسی وجود عنصر "سیب" در لیست fruits
if "سیب" in fruits:
print("سیب در لیست میوهها وجود دارد.")
# بررسی عدم وجود عنصر "پرتقال" در لیست fruits
if "پرتقال" not in fruits:
print("پرتقال در لیست میوهها وجود ندارد.")
# بررسی وجود کاراکتر 'a' در یک رشته
text = "سلام دنیا"
if 'a' in text:
print("کاراکتر 'a' در متن وجود دارد.")
کاربردها
- کنترل جریان برنامه: از عملگرهای عضویت برای ایجاد شرطهای پیچیدهتر در ساختارهای کنترلی مانند
if
وwhile
استفاده میشود. - اعتبارسنجی داده: برای بررسی وجود یا عدم وجود مقادیر خاص در دادههای ورودی.
- جستجو در دادهها: برای پیدا کردن عناصر خاص در لیستها، تاپلها و مجموعهها.
مثال عملی: بررسی وجود یک عدد در یک لیست
numbers = [1, 2, 3, 5, 8]
# بررسی وجود عدد ۴ در لیست
if 4 in numbers:
print("عدد ۴ در لیست وجود دارد.")
else:
print("عدد ۴ در لیست وجود ندارد.")
نکته مهم
- عملکرد روی دنبالهها: عملگرهای عضویت تنها روی دنبالهها قابل استفاده هستند. دنبالهها شامل رشتهها، لیستها، تاپلها و مجموعهها میشوند.
- حساسیت به بزرگی و کوچکی حروف: در رشتهها، عملگرهای عضویت به بزرگی و کوچکی حروف حساس هستند.
مثال با رشتهها و حساسیت به بزرگی و کوچکی حروف
text = "Python is a great language"
if "Python" in text:
print("کلمه 'Python' در متن وجود دارد.")
if "python" in text:
print("کلمه 'python' در متن وجود دارد.") # این شرط برقرار نمیشود
جمعبندی
عملگرهای عضویت ابزاری قدرتمند برای بررسی وجود یا عدم وجود یک عنصر در یک دنباله هستند. با استفاده از این عملگرها میتوانید برنامههای خود را انعطافپذیرتر و هوشمندتر کنید.
عملگرهای عضویت در ساختارهای کنترلی پایتون
عملگرهای عضویت (in
و not in
) نقش بسیار مهمی در کنترل جریان برنامههای پایتون ایفا میکنند. این عملگرها به شما اجازه میدهند تا بررسی کنید که آیا یک عنصر خاص در یک دنباله (مانند لیست، تاپل، رشته یا مجموعه) وجود دارد یا خیر.
چطور عملگرهای عضویت در ساختارهای کنترلی استفاده میشوند؟
-
ساختارهای شرطی (if):
- برای بررسی شرایط و تصمیمگیری بر اساس وجود یا عدم وجود یک عنصر در یک دنباله استفاده میشوند.
- مثال:
Pythonfruits = ["سیب", "موز", "انار"] if "سیب" in fruits: print("سیب در لیست میوهها وجود دارد.")
-
حلقههای تکرار (for):
- برای پیمایش عناصر یک دنباله و انجام عملیات بر روی هر عنصر استفاده میشوند.
- مثال:
Pythonnumbers = [1, 2, 3, 4, 5] for num in numbers: if num % 2 == 0: print(num, " یک عدد زوج است.")
-
حلقههای while:
- برای تکرار یک بلوک کد تا زمانی که یک شرط خاص برقرار باشد استفاده میشوند.
- مثال:
Pythonuser_input = "" while user_input != "خروج": user_input = input("لطفا یک عدد وارد کنید یا برای خروج 'خروج' را بنویسید: ") if user_input.isdigit(): number = int(user_input) print("عدد وارد شده:", number)
مثالهای پیشرفته
-
جستجوی یک کاراکتر در یک رشته:
Pythontext = "سلام دنیا" if "د" in text: print("حرف 'د' در متن وجود دارد.")
-
بررسی وجود یک کلید در یک دیکشنری:
Pythonperson = {"نام": "علی", "سن": ۳۰} if "سن" in person: print("سن این شخص", person["سن"], "سال است.")
-
فیلتر کردن عناصر یک لیست:
Pythonnumbers = [1, 2, 3, 4, 5] even_numbers = [] for num in numbers: if num % 2 == 0: even_numbers.append(num) print("اعداد زوج:", even_numbers)
نکات مهم
- حساسیت به بزرگی و کوچکی حروف: در رشتهها، عملگرهای عضویت به بزرگی و کوچکی حروف حساس هستند.
- انواع دادهها: عملگرهای عضویت را میتوان برای انواع مختلف دادهها از جمله اعداد، رشتهها، لیستها، تاپلها، مجموعهها و دیکشنریها استفاده کرد.
- عملکرد بهینه: برای بررسی عضویت در مجموعهها، بهتر است از مجموعهها استفاده کنید زیرا عملیات جستجو در آنها بسیار سریعتر از لیستها است.
خلاصه
عملگرهای عضویت در پایتون ابزاری قدرتمند برای کنترل جریان برنامهها هستند. با استفاده از این عملگرها میتوانید برنامههای خود را انعطافپذیرتر و هوشمندتر کنید.
عملگرهای بیتی در پایتون
عملگرهای بیتی در پایتون برای انجام عملیات روی بیتهای فردی اعداد استفاده میشوند. این عملگرها در سطح پایینتر برنامهنویسی و معمولاً برای کار با دادههای باینری، دستکاری بیتها و بهینهسازی کد استفاده میشوند.
انواع عملگرهای بیتی
-
AND (&):
- هر دو بیت متناظر باید ۱ باشند تا نتیجه ۱ شود. در غیر این صورت، نتیجه ۰ خواهد بود.
- مثال:
Pythonx = 5 # در باینری: ۰۱۰۱ y = 3 # در باینری: ۰۰۱۱ z = x & y # z برابر با ۱ خواهد بود (در باینری: ۰۰۰۱)
-
OR (|):
- اگر حداقل یکی از بیتهای متناظر ۱ باشد، نتیجه ۱ خواهد بود.
- مثال:
Pythonx = 5 # در باینری: ۰۱۰۱ y = 3 # در باینری: ۰۰۱۱ z = x | y # z برابر با ۷ خواهد بود (در باینری: ۰۱۱۱)
-
XOR (^):
- اگر بیتهای متناظر متفاوت باشند (یکی ۰ و دیگری ۱)، نتیجه ۱ خواهد بود. در غیر این صورت، نتیجه ۰ خواهد بود.
- مثال:
Pythonx = 5 # در باینری: ۰۱۰۱ y = 3 # در باینری: ۰۰۱۱ z = x ^ y # z برابر با ۶ خواهد بود (در باینری: ۰۱۱۰)
-
NOT (~):
- تمام بیتها را معکوس میکند (۰ را به ۱ و ۱ را به ۰ تبدیل میکند).
- مثال:
Pythonx = 5 # در باینری: ۰۱۰۱ z = ~x # z برابر با -۶ خواهد بود (در مکمل دو)
-
Shift Left (<<):
- تمام بیتها را به سمت چپ شیفت میدهد و بیتهای جدید را با ۰ پر میکند. این عمل معادل ضرب در توانهای ۲ است.
- مثال:
Pythonx = 5 # در باینری: ۰۱۰۱ z = x << 2 # z برابر با ۲۰ خواهد بود (در باینری: ۱۰۱۰۰)
-
Shift Right (>>):
- تمام بیتها را به سمت راست شیفت میدهد. بیتهای سمت چپ با ۰ یا ۱ پر میشوند (بسته به نوع عدد صحیح). این عمل معادل تقسیم بر توانهای ۲ است.
- مثال:
Pythonx = 20 # در باینری: ۱۰۱۰۰ z = x >> 2 # z برابر با ۵ خواهد بود (در باینری: ۰۱۰۱)
کاربردهای عملگرهای بیتی
- دستکاری بیتهای فردی: برای تنظیم یا بررسی بیتهای خاص در یک عدد.
- بهینهسازی کد: در برخی موارد، عملگرهای بیتی میتوانند کد را سریعتر و کارآمدتر کنند.
- رمزنگاری: برای انجام عملیات رمزنگاری بر روی دادهها.
- گرافیک کامپیوتری: برای دستکاری رنگها و پیکسلها.
- شبکه: برای محاسبات مربوط به آدرسهای IP و ماسکها.
مثال عملی: بررسی زوج یا فرد بودن یک عدد
number = 10
if number & 1 == 0:
print("عدد زوج است")
else:
print("عدد فرد است")
نکته: استفاده از عملگرهای بیتی نیاز به درک عمیق از سیستم اعداد باینری دارد. اگرچه این عملگرها قدرتمند هستند، اما استفاده بیش از حد از آنها میتواند کد را پیچیدهتر کند.
عملگرهای هویت در پایتون
عملگرهای هویت در پایتون برای بررسی هویت دو شیء استفاده میشوند. به عبارت دیگر، این عملگرها بررسی میکنند که آیا دو متغیر به یک شیء واحد اشاره میکنند یا خیر.
عملگرهای هویت اصلی
- is: اگر دو متغیر به یک شیء اشاره کنند، مقدار
True
برمیگرداند. - is not: اگر دو متغیر به اشیاء مختلف اشاره کنند، مقدار
True
برمیگرداند.
تفاوت بین عملگرهای هویت و عملگرهای مقایسهای (==
)
- عملگرهای مقایسهای (
==
) مقدار دو شیء را با هم مقایسه میکنند. - عملگرهای هویت (
is
وis not
) آدرس حافظه دو شیء را با هم مقایسه میکنند.
مثالها
x = [1, 2, 3]
y = [1, 2, 3]
z = x
# مقایسه مقدار
print(x == y) # True (هر دو لیست مقادیر یکسانی دارند)
# مقایسه هویت
print(x is y) # False (x و y به دو شیء متفاوت اشاره میکنند)
print(x is z) # True (x و z به یک شیء اشاره میکنند)
کاربردهای عملگرهای هویت
- بررسی آدرس حافظه: برای فهمیدن اینکه دو متغیر به یک شیء اشاره میکنند یا خیر.
- بهینهسازی کد: در مواردی که میخواهیم از ایجاد اشیاء تکراری جلوگیری کنیم.
- کار با اشیاء تغییرناپذیر: برای بررسی اینکه آیا یک متغیر جدید ایجاد شده است یا به یک شیء موجود اشاره میکند.
مثال عملی: بررسی هویت اعداد صحیح
a = 10
b = 10
print(a is b) # True (اعداد صحیح کوچک در پایتون به عنوان اشیاء قابل اشتراک در نظر گرفته میشوند)
c = 256
d = 256
print(c is d) # True (اعداد صحیح کوچک در پایتون به عنوان اشیاء قابل اشتراک در نظر گرفته میشوند)
e = 257
f = 257
print(e is f) # False (اعداد صحیح بزرگتر از یک مقدار مشخص به عنوان اشیاء جداگانه ایجاد میشوند)
نکات مهم
- اشیاء تغییرناپذیر: اعداد صحیح کوچک، رشتههای کوتاه و تاپلها معمولاً به عنوان اشیاء قابل اشتراک در نظر گرفته میشوند.
- اشیاء قابل تغییر: لیستها، دیکشنریها و مجموعهها همیشه اشیاء جدیدی ایجاد میکنند.
خلاصه
عملگرهای هویت ابزاری قدرتمند برای بررسی هویت اشیاء در پایتون هستند. با استفاده از این عملگرها میتوانید بهتر درک کنید که چگونه پایتون اشیاء را در حافظه مدیریت میکند.
سایر عملگرها
علاوه بر انواع عملگرهای ذکر شده، پایتون عملگرهای دیگری مانند عملگرهای بیتی، عملگرهای هویت و … نیز دارد که در موارد خاص استفاده میشوند.