تابع تعیینکنندهٔ دنبالهای از عددها برای کنترل تعداد تکرار حلقه
آشنایی با ورودیهای تابع range
تابع range سه ورودی اصلی دارد که هر کدام نقش مهمی در ساختن دنبالهٔ عددها ایفا میکنند. بیایید با مثالهایی ساده و ملموس، هر کدام را بررسی کنیم.
ورودی اول: نقطهٔ شروع
این ورودی مشخص میکند که دنبالهٔ عددی از چه عددی آغاز شود. اگر آن را ننویسیم، بهطور خودکار از عدد 0 شروع میشود. فرض کنید میخواهیم عددهای کلاسهای یک مدرسه را از کلاس هفتم تا دهم نشان دهیم. با نوشتن range(7, 11) دنبالهٔ 7, 8, 9, 10 ساخته میشود.
ورودی دوم: نقطهٔ پایان
این عدد مشخص میکند که دنباله تا کجا ادامه پیدا کند، اما خود این عدد در دنباله قرار نمیگیرد. یعنی تابع range تا یک عدد قبل از این ورودی را تولید میکند. برای نمونه، اگر بخواهیم شمارهٔ صفحههای یک کتاب از صفحهٔ 1 تا 5 را داشته باشیم، مینویسیم range(1, 6) که دنبالهٔ 1, 2, 3, 4, 5 را میسازد.
ورودی سوم: گام یا پرش
گام مشخص میکند که بین هر عدد و عدد بعدی چقدر فاصله باشد. اگر گام را ننویسیم، مقدار پیشفرض آن 1 است. مثلاً اگر بخواهیم اعداد زوج بین 2 تا 10 را داشته باشیم، مینویسیم range(2, 11, 2) که دنبالهٔ 2, 4, 6, 8, 10 را تولید میکند. همچنین میتوانیم گام را منفی بدهیم تا دنباله بهصورت نزولی ساخته شود.
| نام ورودی | نقش | مثال |
|---|---|---|
| شروع | عدد اول دنباله | range(3, 8) → 3,4,5,6,7 |
| پایان | عددی که دنباله پیش از آن متوقف میشود | range(1, 5) → 1,2,3,4 |
| گام | فاصلهٔ بین اعداد | range(0, 10, 3) → 0,3,6,9 |
کاربردهای جذاب range در دنیای واقعی
حالا که با ورودیهای تابع range آشنا شدیم، ببینیم در چه موقعیتهای روزمرهای میتوانیم از آن استفاده کنیم. فرض کنید معلمی میخواهد نمرات دانشآموزان کلاس را که در یک لیست ذخیره شدهاند، یکییکی بررسی کند. با استفاده از range(len(لیست)) میتواند به راحتی به تمام نمرات دسترسی پیدا کند.
یا فرض کنید میخواهیم یک برنامه بنویسیم که جدول ضرب عدد 7 را چاپ کند. با حلقهای که از range(1, 11) استفاده میکند، بهراحتی میتوانیم حاصل ضرب 7 در اعداد 1 تا 10 را محاسبه کنیم. همچنین اگر بخواهیم از آخرین روز هفته به اولی برسیم، با نوشتن range(6, -1, -1) میتوانیم شماره روزها را بهصورت نزولی تولید کنیم.
یکی از کاربردهای جالب دیگر، تولید شمارهٔ صندلیهای یک سالن سینماست. اگر صندلیها بهصورت ردیفی شمارهگذاری شدهاند و میخواهیم فقط صندلیهای با شمارهٔ فرد را به تماشاگران خاصی اختصاص دهیم، با range(1, 21, 2) میتوانیم دنبالهٔ اعداد فرد 1, 3, 5, ..., 19 را بسازیم.
پرسشهای کلیدی دربارهٔ تابع range
این قانون به ما کمک میکند تا بهراحتی تعداد عناصر دنباله را محاسبه کنیم. اگر از 0 شروع کنیم و به عدد n برسیم، دقیقاً n عنصر داریم. مثلاً range(10) دقیقاً 10 عدد از 0 تا 9 تولید میکند که برای شمارش اعضای یک لیست با 10 عضو بسیار مناسب است.
خیر، تابع range بسیار انعطافپذیر است. اگر فقط یک عدد بنویسیم، مانند range(5)، همان range(0, 5) معنی میدهد. اگر دو عدد بنویسیم، مانند range(2, 7)، یعنی شروع و پایان را مشخص کردهایم و گام بهصورت پیشفرض 1 در نظر گرفته میشود. بنابراین بسته به نیاز خود، میتوانیم یک، دو یا سه ورودی به آن بدهیم.
خیر، ورودیهای تابع range باید عددهای صحیح باشند. اگر نیاز به دنبالهای از اعداد اعشاری داریم، باید از روشهای دیگری استفاده کنیم. اما برای بیشتر کاربردهای روزمره در برنامهنویسی، اعداد صحیح کافی هستند. مثلاً شمارش دانشآموزان، تعداد صفحات کتاب، یا شمارهٔ روزهای هفته همگی با اعداد صحیح نمایش داده میشوند.