عملگرها
در این درس با عملگرهای حسابی، مقایسهای، منطقی و تخصیص پایتون کار میکنید و اولویت اجرای آنها را یاد میگیرید.
آنچه در این درس میآموزید
- عملگرهای حسابی پایتون شامل تقسیم کامل و باقیمانده را به کار ببرید
- با عملگرهای مقایسه و منطق عبارتهای درست/غلط بسازید
- اولویت عملگرها را پیشبینی کنید و در صورت نیاز پرانتز بگذارید
فهرست مطالب
عملگر (Operator) نشانهای است که بین مقادیر مینشیند و کاری با آنها انجام میدهد: جمع، مقایسه، بررسی شرط و همینها. هر عبارت پایتون ترکیبی از مقادیر و عملگرهاست و تسلط بر چند خانواده اصلی عملگرها یعنی توانایی نوشتن هر محاسبهای که در ذهن دارید.
عملگرهای حسابی
شش عملگر حسابی پایتون را در یک برنامه ببینید:
print(7 + 3, 7 - 3, 7 * 3)
print(7 / 2, 7 // 2, 7 % 2)
print(2 ** 10)10 4 21 3.5 3 1 1024
چهار تای اول آشنا هستند؛ سه مورد آخر را با دقت ببینید:
/تقسیم معمولی است و همیشه float میدهد؛ حتی وقتی جواب سرِبهسر درمیآید:8 / 2نتیجهاش4.0است.//تقسیم کامل (بخش صحیح) است:7 // 2میشود3.%باقیمانده تقسیم است:7 % 2میشود1.**توان است:2 ** 10یعنی ۱۰۲۴.
عملگر % در ظاهر ساده، در عمل پرکاربردترین است: زوج بودن با % 2 == 0، گرفتن رقم آخر عدد با % 10، و ساختن الگوی چرخهای مثل «هر سومین مورد» همه با باقیمانده انجام میشوند.
عملگرهای مقایسه
مقایسهها همیشه نتیجه bool میدهند: == (برابر)، != (نابرابر)، >، <، >= و <=:
print(5 == 5, 5 != 3, 4 > 10)True True False
یک راحتی خاص پایتون، مقایسه زنجیرهای است: بهجای age >= 18 and age <= 40 میتوانید بنویسید 18 <= age <= 40؛ در درس شرطها از همین شکل استفاده میکنیم.
عملگرهای منطقی
سه عملگر and و or و not روی مقادیر bool کار میکنند:
age = 20
has_id = True
print(age >= 18 and has_id)
print(not has_id)True False
andفقط وقتی درست است که هر دو طرف درست باشند؛ مثل شرط ورود: هم بزرگسالی، هم کارت شناسایی.orوقتی درست است که دستکم یک طرف درست باشد.notدرست و غلط را برمیگرداند:not TrueمیشودFalse.
این سه عملگر همان ابزارهایی هستند که در درس شرطها، تصمیمهای ترکیبی برنامه را با آنها میسازید.
میانبرهای تخصیص
الگوی «متغیر را با خودش بهروز کن» در درس متغیرها را دیدید: score = score + 5. پایتون برای هر عملگر حسابی یک شکل کوتاه دارد:
count = 10
count += 3
count *= 2
print(count)26
count += 3 همان count = count + 3 است؛ یعنی ۳ اضافه کن. بعد count *= 2 همان count = count * 2 است. این شکل فقط کوتاهنویسی نیست؛ نیّت کد را هم روشنتر میکند: خواننده فوراً میفهمد این خط «بهروزرسانی» است، نه محاسبه جدید.
عملگرها روی رشتهها
دو عملگر حسابی روی رشتهها هم معنا پیدا میکنند، اما با رفتار خودشان: + دو رشته را میچسباند و * رشته را تکرار میکند:
print("ab" * 3)
print("hel" + "lo")ababab hello
مراقب باشید: + روی رشته و عدد با هم کار نمیکند و TypeError میدهد؛ اگر عددی دارید و باید به متن بچسبد، اول با str آن را تبدیل کنید.
اولویت عملگرها
وقتی چند عملگر در یک عبارت هستند، پایتون با قاعده مشخصی ترتیب را انتخاب میکند: اول **، بعد ضربها (*، /، //، %)، بعد جمعها (+، -) و آخر مقایسه و منطق. پرانتز از همه بالاتر است:
print(2 + 3 * 4)
print((2 + 3) * 4)14 20
در سطر اول اول ضرب انجام میشود (۳ ضرب در ۴) و بعد جمع؛ نتیجه ۱۴. با پرانتز، ترتیب را خودتان دیکته کردهاید؛ نتیجه ۲۰.
تمرینها
تمرین
تمرین ۱ — تبدیل زمان
مدت ۳۶۷۱ ثانیه را در متغیر total نگه دارید و فقط با عملگرهای // و % بفهمید چند ساعت و چند دقیقه و چند ثانیه میشود؛ سپس با f-string جمله «1 ساعت و 1 دقیقه و 11 ثانیه» را چاپ کنید.
# Write your code hereنمایش راهحل
total = 3671
hours = total // 3600
minutes = (total % 3600) // 60
seconds = total % 60
print(f"{hours} hours and {minutes} minutes and {seconds} seconds")1 hours and 1 minutes and 11 seconds
::: :::
خلاصه
/همیشه float میدهد؛//بخش صحیح و%باقیمانده تقسیم است.%ابزار اصلی زوج و فرد، رقم آخر و الگوهای چرخهای است.- عملگرهای مقایسه نتیجه bool میدهند و
=تخصیص است نه مقایسه. andوorوnotشرطهای ترکیبی میسازند؛+=و دوستانش بهروزرسانی کوتاهاند.- روی رشتهها،
+چسباندن و*تکرار است؛ و پرانتز بر اولویت عملگرها حکم میراند.
برنامه تا حالا فقط یکطرفه حرف زده است: چاپ میکرد. در درس بعدی یاد میگیرید ورودی از کاربر بگیرید و خروجی را شکل تمیز و خوانا بدهید.