تقسیم صحیح در پایتون – به زبان ساده + مثال و کد
تقسیم صحیح در پایتون همانند تقسیم استاندارد است. با این تفاوت که مقدار اعشار پاسخ نهایی حذف میشود. برای مثال نتیجه عبارت 3//2 برابر با 1 است. در این مدل تقسیم، بدون توجه به نوع عملوندها در خروجی همیشه عددی کامل و بدون اعشار برگشت داده میشود. خود پایتون، بخش اعشاری پاسخ را حذف میکند. این مدل تقسیم به طور خاص در زمان اجرای وظایفی مانند «صفحهبندی» (Pagination)، تکهتکه کردن مجموعههای داده و غیره به کار برده میشود. تقسیم صحیح در زبان برنامه نویسی پایتون، مانند همان تقسیم معمولی است، با این تفاوت که همیشه خروجی را به سمت بزگترین عدد صحیح کوچکتر از جواب گرد میکند. برای اجرای این تقسیم از عملگر // در پایتون استفاده میکنیم.
- تفاوت بین تقسیم صحیح در پایتون و تقسیم استاندارد را متوجه میشوید.
- با عملگر // برای انجام تقسیم صحیح در پایتون آشنا میشوید.
- تاثیر استفاده از عملگر // را بر روی اعداد مثبت و منفی یاد میگیرید.
- تفاوت اجرای تقسیم صحیح در پایتون بر روی اعداد زوج و فرد را میآموزید.
- با کاربرد تقسیم صحیح برای تکهتکه کردن لیستها و آرایهها آشنا میشوید.
- روش استفاده از تقسیم صحیح را در پروژههای واقعی یاد میگیرید.


در این مطلب از مجله فرادرس، مفهوم تقسیم صحیح در پایتون را بررسی میکنیم. عملگر // یا «Double Slash» به عنوان علامت تقسیم صحیح شناخته میشود. این عملگر را میتوان همزمان بر روی اعداد صحیح و اعشاری به کار برد. بعد از بررسی این نوع تقسیم، آن را با تقسیم استاندارد مقایسه میکنیم. سپس چند مورد از سناریوهای مختلف کار با تقسیم صحیح را همراه با مثالهای کدنویسی شده بررسی میکنیم.
تقسیم صحیح در پایتون چیست؟
تقسیم صحیح در پایتون عملیاتی است که در طی آن دو عدد بر یکدیگر تقسیم میشوند. سپس بخش اعشاری پاسخ از آن حذف شده و فقط قسمت صحیح برگشت داده میشود. اگر هر دو عملوند این عملگر از نوع «Integer» یا عدد صحیح باشند، در خروجی هم عدد صحیح برگردانده میشود. اما اگر حداقل یکی از این عملوندها از نوع «Float» باشند، خروجی هم مقدار با نوع Float خواهد بود. برای اجرای تقسیم صحیح از عملگر // در پایتون استفاده میکنیم.
در کادر زیر، نمونه سادهای از اجرای عملیات تقسیم صحیح را پیادهسازی کردهایم.
بعد از اجرای تقسیم بالا در خروجی عدد 3 نمایش داده میشود.
اگر از تقسیم استاندار بر روی اعداد 7 و 2 استفاده میکردیم، عدد 3.5 در خروجی به عنوان پاسخ نمایش داده میشد. اما استفاده از علامت تقسیم صحیح باعث شده است که مقدار اعشار بعد از نقطه حذف شود. یکی از مهمترین کاربردهای این عملیات آن است که بدون نوشتن تابع خاصی میتوان اعداد مختلف را به سادگی به سمت پایین گرد کرد.

در عملیات بالا عدد 7 مقسوم و عدد 2 مقسومعلیه هستند. خروجی بدست آمده از تقسیم صحیح از عددی از نوع Integer است. در جدول پایین به صورت خلاصه مهمترین نکات مطرح شده در این بخش را نوشتهایم.
| بخش | توضیح کوتاه |
|---|---|
| تقسیم صحیح | حذف بخش اعشاری بعد از تقسیم |
| عملگر | // |
| ورودی Integer | خروجی Integer |
| ورودی Float | خروجی Float بدون اعشار واقعی |
| کاربرد | تقسیم مساوی، شمارش ردیفها، حذف اعشار |
چطور عملیات تقسیم صحیح در پایتون را انجام بدهیم؟
بهترین روش برای اجرای تقسیم صحیح در پایتون، استفاده از دو عملگر اسلش به صورت // در کنار هم است. این دو در کنار هم به عنوان عملگر یا علامت تقسیم صحیح شناخته میشوند. در کادر زیر، چند مثال ساده را برای اجرای تقسیم صحیح نوشتهایم.
بعد از اجرای عملیات بالا اعداد زیر در خروجی نمایش داده میشوند.
3
3
4در این تقسیم میتوانیم از اعدادی با نوع داده Float در پایتون نیز به عنوان عملوند استفاده کنیم.
با اینکه نتیجه تقسیم از نوع «عدد با ممیز شناور» است اما باز هم مقدار اعشاری آن حذف شده. در واقع، تقسیم صحیح روی همه نوعهای عددی به شکل یکسانی عمل میکند. یعنی اینکه اگر عدد Integer به عدد Integer تقسیم شود، خروجی هم از نوع Integer خواهد بود. اما اگر یکی از عملوندها از نوع Float باشد خروجی نیز از نوع Float است. اما این خروجی هم هیچ مقدار اعشاری ندارد. در تقسیم بالا خروجی برابر با 5.0 است. وجود 0 بعد از علامت ممیز شناور (نقطه .) یعنی آن که این داده از نوع Float است. اما مقدار اعشاری آن برابر با 0 قرار داده میشود.
اگر در برنامههای نوشته شده به اعداد دقیق و بدون اعشار نیاز داشته باشیم، باید از تقسیم صحیح در محاسباتمان استفاده کنیم. برای مثال شاید سعی کنیم عناصر را به صورت برابر بین کاربران تقسیم کنیم. یا اینکه تعداد ردیفهای نمایش داده شده در هر صفحه را مشخص کنیم. در چنین پروژههایی امکان استفاده از مقدار اعشاری در پاسخ وجود ندارد.
تا به این قسمت از مطلب، به شکل مختصر و کامل با عملیات تقسیم صحیح در پایتون و عملگر مورد استفاده برای آن آشنا شدهاید. در ادامه نکات بیشتری را با کمک مثالهای کدنویسی شده درباره این عملیات بررسی میکنیم. در صورت تمایل به مطالعه مطالبی مانند این مورد، پیشنهاد میکنیم که حتما اپلیکیشن مجله فرادرس را بر روی دستگاههای همراه خود نصب کنید.
برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.
فیلم های آموزش های پایتون برای نوجوانان
زبان قدرتمند، انعطافپذیر و همه کاره پایتون در حال حاضر یکی از مشهورترین زبانهای برنامهنویسی جهان است. در نتیجه منابع آموزشی فراوان و گوناگونی برای آن تولید شدهاند. افراد علاقهمند به یادگیری پایتون به خصوص نوجوانان میتوانند از تمام منابع در دسترس کمک بگیرند. برای مثال میتوان به کلاسهای آنلاین و حضوری، کتاب و فیلمهای آموزشی اشاره کرد. لازم به ذکر است که فیلمهای آموزشی نسبت به سایر منابع از امتیازات بیشتری برخوردار هستند. فرادرس هم به طور تخصصی فیلمهایی خوبی برای کمک به یادگیری پایتون توسط نوجوانان تولید کرده است.

فرادرس بر اثر سالها تلاش و تجربه به یکی از بهترین تولیدکنندگان منابع آموزش زبان پایتون تبدیل شده است. برای شروع آموزش این زبان برنامهنویسی، میتوان به مجموعه فیلمهای آموزش پایتون برای نوجوانان به عنوان یکی از بهترین گزینهها اشاره کرد. گزینهی مناسب دیگری که با هدف آموزش پایتون برای افراد مبتدی، تهیه شده، فیلم آموزش رایگان برنامه نویسی سریع و آسان پایتون در ۱۴۰ دقیقه از فرادرس است. فرادرس مجموعه آموزشی را هم با هدف کمک به یادگیری پایتون توسط نوجوانان جمعآوری کرده است.
در فهرست زیر، چند مورد از فیلمهای این مجموعه آموزشی را معرفی کردهایم. برای مشاهده فیلمهای بیشتر میتوانید بر روی تصویر بالا کلیک کنید.
- فیلم آموزش پایتون گرافیکی، معرفی رابط های گرافیکی پایتون + گواهینامه
- فیلم آموزش برنامه نویسی پایتون ویژه نوجوانان، بخش دوم
- فیلم آموزش طراحی رابط کاربری گرافیکی GUI با کتابخانه Tkinter در پایتون + گواهینامه
- فیلم آموزش برنامه نویسی پایتون ویژه نوجوانان، بخش یکم + گواهینامه
- فیلم آموزش رابط گرافیکی PySide2 در Python – تکمیلی
در بخش بعد، تقسیم صحیح پایتون را با تقسیم استاندار این زبان مقایسه میکنیم.
مقایسه علامت تقسیم صحیح با تقسیم استاندارد
برنامه نویسان پایتون لازم است که تفاوت بین تقسیم استاندارد با عملگر / را با علامت تقسیم صحیح // بلد باشند.
در کادر زیر با کمک مثال سادهای عملکرد این دو عملگر را مقایسه کردهایم.
خروجی تقسیم استاندار در پایتون همیشه از نوع Float است. در حالی که تقسیم صحیح، بخش اعشاری پاسخ را حذف میکند.
| نوع تقسیم | عملگر | رفتار |
|---|---|---|
| تقسیم استاندارد | / | نگه داشتن بخش اعشاری |
| تقسیم صحیح | // | حذف بخش اعشاری |
به یاد داشته باشید که عملیات تقسیم صحیح، نتیجه را به سمت «منفی بینهایت» گرد میکند. یعنی اینکه رفتار این عملگر در مقابل اعداد منفی با اعداد مثبت در ظاهر تفاوت دارد. برای درک بهتر این مسئله به مثال پایین دقت کنید.
بعد از اجرای کد بالا مقدار -4 در خروجی به عنوان پاسخ نمایش داده میشود. باید به این روش تقسیم توجه کنیم. تصور اینکه تقسیم صحیح اعداد را به سمت صفر گرد میکند، اشتباه است.
تقسیم صحیح در پایتون با اعداد منفی
عملگر تقسیم صحیح، رفتار جالبی در مقابل عملوندهای منفی از خودش نشان میدهد. در کادر پایین دو مورد از این نوع تقسیم را اجرا کردهایم.
در هر دو تقسیم، پایتون مقدار جواب را به سمت بزرگترین عدد صحیح کوچک گرد میکند. یعنی عددی که منفیتر است. رفتار پایتون در زمان اجرای تقسیم صحیح بر روی اعداد منفی با زبانهای دیگر مثل جاوا اسکریپت متفاوت است. بنابراین لازم است توسعهدهندگان در زمان انتقال منطق برنامههای خود از زبانی به زبان دیگر به این مسائل دقت بکنند.
تقسیم صحیح در کنار حلقههای پایتون
بیشتر اوقات برای جدا کردن تکههای مختلف اشیاه پیمایشپذیر از عملیات تقسیم صحیح در حلقههای پایتون استفاده میشود. در اجرای سایر عملیات مانند موارد زیر هم میتوان از ترکیب تقسیم صحیح با حلقهها در پایتون کمک گرفت.
- محاسبه اندیس میانه
- تعریف گام برای پیمایش
- و غیره
البته در استفاده از حلقههای پایتون نکات بسیار ریز و فنی متنوعی وجود دارند. برنامه نویسان پایتون باید روش کار با این ابزارهای بسیار کاربردی را بلد باشند. در صورت نیاز به کسب اطلاعات بیشتر درباره این ساختارهای جذاب، پیشنهاد میکنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.

برای مثال، در زمان محاسبه مقدار میانه در الگوریتم جستوجوی باینری، بهترین روش به کار بردن تقسیم صحیح است.
با کمک تقسیم صحیح مطمئن میشویم که اندیسها به صورت درست و دقیق محاسبه شدهاند. در ضمن با این روش از بروز خطاهای مربوط به گرد کردن اعداد اعشار هم پیشگیری میکنیم.
از تقسیم صحیح میتوانیم در حلقههای مبتنی بر محدوده هم استفاده کنیم. یعنی اینکه فرض کنیم میخواهیم نیمی از اندازه لیست را پیمایش کنیم. اگر اندازه لیست، فرد باشد نتیجه تقسیم بر دو کردن این مقدار، عدد اعشاری است. این مسئله شاید باعث بروز خطا در زمان پیمایش بشود. اما با کمک تقسیم صحیح از ظهور بخش اعشاری جلوگیری میکنیم.
در واقع با کمک این عملگر بدون نیاز به استفاده از کتابخانههای ریاضی خارجی میتوانیم آرایهها را به دو بخش تقریبا مساوی تقسیم بکنیم.
مثالهای از کابرد تقسیم صحیح در پروژههای واقعی
این عملیات کاربردهای خیلی زیادی دارد. در این قسمت از مطلب دو مورد از آنها را معرفی میکنیم.
- «صفحهبندی» (Pagination)
- «قطعهبندی» (Chunking) کردن دادهها
برای نمونه، وظیفهای مانند «صفحهبندی» (Pagination) در پروژههای مربوط به طراحی سایت استفاده میشود. در صورت تمایل به یادگیری طراحی سایت با پایتون پیشنهاد میکنیم که فیلم آموزش پروژه محور «جنگو» (Django)، درباره طراحی سایت خبری را در فرادرس مشاهده بکنید. به منظور کمک به مخاطبان مجله، لینک دسترسی مستقیم به این آموزش در پایین نیز قرار داده شده است.
صفحهبندی
صفحهبندی، کاربرد بسیار گستردهای دارد. از این مفهوم در نمایش محتوای وبسایتها، حجم انبوه داده و غیره استفاده میشود. از تقسیم صحیح در زمان صفحه بندی دادهها و صفحات وبسایتها و غیره استفاده میکنیم.
با اضافه کردن دستور items_per_page - 1 قبل از اعمال تقسیم صحیح میتوانیم از اجرای درست صفحهبندی مطمئن شویم.
قطعهبندی
یکی دیگر از کاربردهای رایج عملیات تقسیم صحیح در پایتون مربوط به قطعهبندی مجموعههای داده است. البته کد زیر با فرض این نوشته شده است که متغیر data به دیتاست مشخصی اشاره میکند.
بعد از اجرای عملیات بالا میتوانیم تعداد قطعات را هم محاسبه کنیم.
با این تکنیک به راحتی میتوانید زیرمجموعههایی با اندازه ثابت تعریف کنید.

کار با لیستها و اندیسگذاری
یکی دیگر از رایجترین کاربردهای تقسیم صحیح در پایتون مربوط به محاسبه اندیسها در زمان کار با لیست است.
تکنیک بالا را میتوان بر روی لیستهایی با اندازه فرد هم پیادهسازی کرد. با کمک این روش، اندیس عنصر میانه در لیست به راحتی به دست میآید.
تقسیم صحیح در توابع
با کمک تقسیم صحیح میتوانیم برای اجرای درست و خودکار منطقهای تکرارشونده، توابع کاربردی تعریف کنیم. برای مثال، تابعی را در نظر بگیرید که وظیفه آن تقسیم کردن آرایهها از وسط به دو بخش است.
یا حتی توابع پیچیدهتری که برای تقسیم یکنواخت آرایهها به کار برده میشوند.
در تابع بالا از علامت تقسیم صحیح در پایتون برای قطعهقطعه کردن آرایهها به اندازههای تقریبا برابر استفاده میکنیم.
تقسیم صحیح برای تبدیل زمان
برای مثال در برنامه زیر، میخواهیم ثانیهها را به دقیقه تبدیل کنیم. تبدیل ثانیه به ساعت و دقیقه در پایتون یکی از عملیات بسیار رایج است.
در برنامه بالا، علامت تقسیم صحیح پایتون، ثانیههای باقیمانده را دور میریزد. یعنی اینکه در خروجی فقط دقیقهها را برمیگرداند.
تفاوت تقسیم صحیح با سایر روشهای تقسیم
در این بخش از مطلب، رفتارهای تقسیمهای مختلف در پایتون را به شکل خلاصه بررسی کردهایم. اول از همه باید با انواع تقسیم آشنا بشویم.
- تقسیم استاندارد با علامت «/»: این تقسیم همیشه در خروجی دادهای از نوع فلوت برمیگرداند.
- تقسیم صحیح با علامت «//»: خروجی این تقسیم همیشه عددی کامل و بدون مقدار اعشار است.
- تقسیم ماژولو با عملگر «/%»: این عملگر، مقدار باقیمانده عملیات تقسیم صحیح را برمیگرداند.
در کادر پایین، عملیات تقسیم صحیح را در کنار عملگر ماژولو به کار بردهایم.
این تکنیک در زمان بازسازی اعداد تقسیم شده یا تایید منطق اجرای عملیات در زمان پاسخ دادن به سوالات برنامه نویسی به کار برده میشود.
در پایتون، تابعی به نام divmod() تعریف شده است. این تابع مقدار باقیمانده و خارج قسمت را به صورت همزمان و در یک مرحله برمیگرداند. برای نمونه، خروجی تابع divmod(7, 2) به شکل تاپل (3, 1) است. در این تاپل، عنصر اول آن خارج قسمت و عنصر دوم آن باقیمانده است.

رفتار نوع در تقسیم صحیح
نتیجه تقسیم صحیح با نوع داده عملوندهای آن ارتباط مستقیم دارد. برای مثال در کادر زیر از عملوندهایی با نوع صحیح و اعشاری استفاده کردهایم.
خروجی عملیات بالا برابر با 4 بوده و از نوع Integer است. خروجی عملیات پایین به صورت 4.0 نمایش داده میشود. این خروجی از نوع Float است. یعنی اینکه اگر حتی یکی از عملگرها هم مقدار اعشار داشته باشند، در خروجی عددی با نوع Float برگشت داده میشود. در غیر این صورت، خروجی همیشه از نوع Integer است. در زمان نوشتن توابعی که به نوع داده خروجی وابسته هستند، باید به این تفاوت توجه بکنیم.
شاید در زمان تقسیم صحیح نخواهیم که از عملگر // استفاده کنیم. در این صورت میتوانیم از تابع math.floor() کمک بگیریم. این تابع (همین طور که از نام آن مشخص است) در داخل ماژول math در پایتون تعبیه شده و میتواند هر عددی را گرد بکند. خروجی تابع math.floor() بزرگترین عدد کوچکتر مساوی عدد ورودی است.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
3
5
10
-3
7فیلم آموزش های پیشرفته پایتون در فرادرس
با صرف زمان و تمرکز بر روی یادگیری مهارتهای پیشرفته پایتون، میتوانید موقعیتهای شغلی متنوعی مانند طراحی سایت، طراحی نرمافزار، بازی سازی، هوش مصنوعی و غیره را بدست بیاورید. البته توجه کنید، با اینکه مراحل اولیه فرایند یادگیری پایتون را به شکل ساده و سریع میآموزید، اما برای یادگیری تکنیکهای پیشرفتهتر به کمک و منابع بهتری نیاز دارید. فیلمهای آموزشی فرادرس، شامل نکات مفیدی برای دانشجویان هستند. حتی اشخاص کارجو و برنامه نویسان حرفهای نیز میتوانند از محتوای این فیلمها کمک بگیرند.
در پایین، چند مورد از فیلمهای آموزشی مربوط به تکنیکهای پیشرفته را در پایتون معرفی کردهایم.
- فیلم آموزش جنگو، فریمورک تحت وب Django با Python + گواهینامه
- فیلم آموزش بازی سازی در پایتون با کتابخانه Pygame + گواهینامه
- فیلم آموزش الگوهای طراحی یا دیزاین پترن در پایتون
- فیلم آموزش «الستیک سرچ» (ElasticsSearch) در پایتون همراه با پروژه عملی ساخت برنامه Search
- فیلم آموزش پردازش موازی در پایتون، بررسی روش کار با کتابخانه Thread و Async IO
در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی مجموعه فیلمهای آموزش برنامه نویسی پایتون هدایت شده و فیلمهای بیشتری را مشاهده کنید.

در بخش بعد، روش اجرای تقسیم صحیح را بر روی آرایههای NumPy بررسی میکنیم.
اجرای تقسیم صحیح با کمک NumPy
در صورت استفاده از کتابخانه NumPy هم میتوانید با همان روش سابق عملگر // را به کار ببرید.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
[1 2 4]با تکنیک بالا میتوانید عملیات تقسیم صحیح را به صورت عنصر به عنصر بر روی تمام مقادیر درون آرایه به کار ببرید. در این روش برای انجام محاسبات بر روی آرایههای پایتون، بسیار کارآمد و مفید است.
جمعبندی
در این مطلب از مجله فرادرس با علامت تقسیم صحیح، روش استفاده و کاربرد این ابزار در پایتون آشنا شدیم. عملگر تقسیم صحیح در پایتون، روش سر راست و کارآمدی برای تقسیم اعداد و گرد کردن آنها فراهم کرده است. این عملیات نقش بسیار مهمی در الگوریتمها، پیادهسازی منطقهای مبتنی بر حلقه، صفحهبندی و کار با آرایهها دارد. عملگر تقسیم صحیح // تمام پاسخها را به سمت منفی بینهایت گرد میکند. این قانون حتی در زمان کار با اعداد منفی هم رعایت میشود. در نتیجه با عملیات مربوط به گردن کردن ساده نتیجه محاسبات به عدد صحیح تفاوت دارد.
در زمان انتخاب بین تقسیم استاندارد و تقسیم صحیح باید به این فکر کنید که آیا به بخش اعشاری پاسخ نیاز دارید یا فقط مقدار صحیح آن را به کار خواهید برد. از تقسیم صحیح در پایتون برای سناریوهایی استفاده کنید که در آنها به خروجیهای Integer و قابل پیشبینی نیاز هست. برای مثال میتوان به محاسبه اندیسها، قطعه بندی ساختارهای داده مانند لیست، آرایه و دیتاستها یا قالببندی صفحات برای نمایش داده اشاره کرد.












