عملگرها و عملوندها در پایتون
عملگرها نمادهای ویژه ای هستند که محاسباتی همچون جمع و ضرب را نمایش می دهند. مقادیری که عملگرها استفاده می کنند عملوند نامیده می شوند.
عبارات زیر که کمابیش معنی آنها واضح است , همگی در پایتون مجازند:
نمادهای + , – و / و نحوه استفاده پرانتزها برای دسته بندی, همان معنی را می دهند که در ریاضیات از آنها استفاده می شود. ستاره ( * ) نمادی است برای ضرب کردن و دو ستاره پیاپی (**) نمادی است برای توان رسانی.
وقتی که نام یک متغیر به جای عملوند ظاهر می شود قبل از اینکه عملگر اجرا شود , این نام با مقدار متغیر جایگزین می شود.
جمع, تفریق, ضرب و توان رسانی همگی به صورت آنچه شما انتظار دارید انجام می شود. اما ممکن است از نحوه ی عمل تقسیم متعجب شوید. این عملگر یک نتیجه ی غیر منتظره دارد.
مقدار minute عدد ۵۹ است. نتیجه ی تقسیم ۵۹ بر ۶۰ برابر است با ۰٫۹۸۳۳۳ و نه عدد صفر. دلیل اختلاف این است که پایتون تقسیم صحیح را انجام می دهد.
وقتی هر دو عملوند صحیح هستند , نتیجه هم باید یک عدد صحیح باشد و بنا به قرار داد تقسیم صحیح همیشه به سمت پایین گرد می شود, حتی در مثال هایی شبیه به مثال اخیر که پاسخ به عدد صحیح بعدی ( در این مثال عدد۱) بسیار نزدیک است.
یک راه حل ممکن برای رفع این مشکل , محاسبه ی درصدی از کسر است:
نتیجه باز هم به سمت پایین گرد شده است , اما این بار حداقل جواب تقریبا درست است. چاره ی دیگر استفاده از تقسیم اعشاری است که ما آن را در ادامه توضیح خواهیم داد.
ترتیب عملگرها
وقتی که بیشتر از یک عملگر در عبارتی استفاده شود, ترتیب ارزیابی آنها به قوانین اولویت بستگی دارد. پایتون از قوانین اولویتی مشابه عملگرهایی که در ریاضیات استفاده می شوند, پیروی می کند.
برای حفظ حوه ی آرایش عملگرها می توانید کلمه ی PEMDAS را به خاطر بسپارید. این کلمه از حروف اول شش کلمه ی انگلیسی زیر ساخته شده است و ترتیب اولویت عملگرها را نشان می دهد:
Parentheses پرانتزها
Exponentiation توان رسانی
Multiplication ضرب
Division تقسیم
Addition جمع
Subtraction تفریق
پرانتزها بالاترین اولویت را دارند و می توانند باعث شوند که یک عبارت به طریقی که ما می خواهیم ارزیابی شود. از آنجایی که نخست عبارات داخل پرانتز بررسی می شوند ۲*(۳-۱) برابر ۴ خواهد بود.
شما می توانید از پرانتز ها برای خوانا تر کردن عبارات هم استفاده کنید. همانطور که در (minute*100)/60 وجود یا عدم وجود پرانتزها در نتیجه ی عبارت تاثیری ندارد.
بعد از پرانتزها توان رسانی بالاترین اولویت را دارد بنابراین نتیجه ی ۲**۱+۱ برابر ۳ می باشد و نه ۴ .
ضرب و تقسیم اولویتی برابر دارندهمچنین برای جمع و تفریق که البته اولویت ضرب و تقسیم از جمع و تفریق بیشتر است , بنابراین ۲+۳-۱ عدد ۵ می شود.
عملگرهایی که اولویت مشابه دارند از چپ به راست ارزیابی می شوند, بنابراین در عبارت minute*100/60 ابتدا عمل ضرب انجام می شود و ۵۹۰۰/۶۰ را نتیجه می دهد و سپس تقسیم را انجام می دهدو ۹۸ حاصل می شود. اگر عملگرها از راست به چپ ارزیابی می شدند, نتیجه ۵۹*۱ می شد که برابر بود با ۵۹ و این اشتباه است.
نویسنده: زهرا رستمی