یکی از مهمترین ابزارهای مورد استفاده در اکثر زبانهای برنامه نویسی، حلقهها هستند. در این قسمت از دوره آموزش رایگان پایتون فنولوژی، به مبحث دستور for در پایتون میپردازیم. با ما همراه باشید.
حلقه در پایتون
در زبانهای برنامه نویسی گاهی نیاز داریم یک مجموعه دستورات را با بررسی مجموعهای از شرطها، به دفعات زیاد بررسی کنیم. برای این کار به جای نوشتن چندین خط کد شامل شرطها و عبارات داخل آنها، از حلقهها استفاده میکنیم. در شکل زیر دیاگرام حلقهها را در برنامه نویسی مشاهده میکنید. هر حلقه شامل یک شرط در ابتدای حلقه است که اگر درست باشد عبارات داخل شرط انجام میشود و به ابتدای حلقه باز میگردد و اگر شرط اشتباه باشد از حلقه خارج میشود. در دستور for در پایتون بخش شرط بسیار ساده سازی شده است و در دل دستور for نهفته است. در اصل شرط اصلی بودن در میان اعضای یک دنباله است که در ابتدای دستور مشخص میکنیم.
در پایتون برای کار با حلقهها دو نوع دستور وجود دارد:
- حلقه while در پابتون
- حلقه for در پایتون
دستور for در پایتون
دستور for در پایتون برای پیمایش کردن در اعضای یک دنباله استفاده میشود. (ممکن است این دنباله به صورت لیست، تاپل، دیکشنری، مجموعه و یا رشته باشد.) دستور for در پایتون کمتر شبیه دستور for در سایر زبانهای برنامه نویسی است. به نوعی دستور for در پایتون بیشتر شبیه یک متد پیمایشگر در سایر زبانهای برنامه نویسی شیئ گرا است.
با دستور for میتوانیم چندین دستور را به ازای هر آیتم که داخل یک لیست، تاپل، مجموعه و … باشد اجرا کنیم. به مثال زیر توجه کنید.
مثال: همهی میوههای داخل لیست میوهها را چاپ کن.
1 2 3 |
fruits = ["apple", "banana", "cherry"] for x in fruits: print(x) |
خروجی:
1 2 3 |
apple banana cherry |
دستور for در پایتون نیازی به تعریف متغیری برای شماره گذاری قبلی ندارد.
حلقه زدن بر روی یک رشته در پایتون
حتی رشتهها نیز دارای چندین آیتم (که هر کدام از این آیتمها یک کاراکتر هستند) میباشند. به مثال زیر دقت کنید.
مثال: به ازای هر حرف در کلمهی «banana» آن را چاپ کن.
1 2 |
for x in "banana": print(x) |
خروجی:
1 2 3 4 5 6 |
b a n a n a |
استفاده از break در حلقهی for
میتوانید قبل از این که حلقه زدن روی همهی اعضای یک دنباله را تمام کنید، با استفاده از دستور break از حلقه خارج شوید.
مثل: هر موقع به «banana» رسیدی از حلقه خارج شو.
1 2 3 4 5 |
fruits = ["apple", "banana", "cherry"] for x in fruits: print(x) if x == "banana": break |
خروجی:
1 2 |
apple banana |
در مثال بالا میتوان قبل از نمایش آن عضو از حلقه خارج شد:
1 2 3 4 5 |
fruits = ["apple", "banana", "cherry"] for x in fruits: if x == "banana": break print(x) |
خروجی:
1 |
apple |
دستور continue در حلقه
با استفاده از این دستور میتوانیم یک مرحله از حلقه را به ازای یک آیتم مشخص از دنباله نادیده بگیریم و بدون اجرای آن مرحله از حلقه، به مراحل بعدی برویم.
مثال: عضو «banana» را نادیده بگیر.
1 2 3 4 5 |
fruits = ["apple", "banana", "cherry"] for x in fruits: if x == "banana": continue print(x) |
خروجی:
1 2 |
apple cherry |
تابع range در دستور for در پایتون
اگر بخواهید دستوراتی را به تعداد مشخصی دقعه، مثلا ۱۰ بار، اجرا کنید، از تابع range (در مثال ما range(10) استفاده میشود. این تابع دنبالهای را ایجاد میکند که به صورت پیشفرض از صفر شروع میشود، یکی یکی زیاد میشود و تا یکی قبل از عدد ورودی پیش میرود.
مثال: ۶ عدد از بازهی صفر تا ۵ نمایش بده.
1 2 |
for x in range(6): print(x) |
خروجی:
1 2 3 4 5 6 |
0 1 2 3 4 5 |
نکته: توجه کنید تابع range در مثال بالا اعداد صفر تا ۵ را ایجاد میکند نه صفر تا ۶.
تعیین نقطهی شروع در تابع range
تابع range در دستور for در پایتون، میتواند از عددی غیر از صفر شروع شود. برای این کار در ورودی تابع نقطهی شروع و پایان را پاس میدهیم. توجه کنید که تا عدد یکی مانده به آخر پیش میرود. برای مثال اگر داشته باشیم range(2,6) از ۲ تا ۵ را تولید میکند.
مثال:
1 2 |
for x in range(2, 6): print(x) |
خروجی:
1 2 3 4 |
2 3 4 5 |
تعیین طول گام برای range
برای تعیین طول گام در تابع range میتوانیم به عنوان پارامتر سوم طول گام صحیح مد نظر را پاس دهیم. توجه کنید که طول گام پیش فرض تابع همان طور که اشاره شد، عدد یک است.
مثال: اعداد ۲ تا ۳۰ (شامل ۲ تا ۲۹) را با فاصلههای ۳ تایی نمایش بده.
1 2 |
for x in range(2, 30, 3): print(x) |
خروجی:
1 2 3 4 5 6 7 8 9 10 |
2 5 8 11 14 17 20 23 26 29 |
else در دستور for در پایتون
با استفاده از دستور else پس از دستور for در پایتون، میتوانیم مشخص کنیم که هر موقع حلقه به اتمام رسید چه دستوری اجرا شود. این نوع استفاده از else کاربرد زیادی ندارد زیرا در هر صورت پس از حلقه دستورات بعدی اجرا میشوند.
مثال: اعداد صفر تا ۵ را نمایش بده و پس از آن عبارت مد نظر را چاپ کن.
1 2 3 4 |
for x in range(6): print(x) else: print("Finally finished!") |
خروجی:
1 2 3 4 5 6 7 |
0 1 2 3 4 5 Finally finished! |
یکی از کاربردهایی که این نوع استفاده از else در انتهای حلقه دارد، در مواقعی است که میخواهیم در حلقه از break استفاده کنیم. در این صورت عبارت روبروی else اجرا نخواهد شد.
مثال: اگر x برابر ۳ بود از حلقه خارج شو. (توجه کنید که دیگر عبارت روبروی else چاپ نمیشود.)
1 2 3 4 5 |
for x in range(6): if x == 3: break print(x) else: print("Finally finished!") |
خروجی:
1 2 3 |
0 1 2 |
حلقههای تو در تو
حلقههای تو در تو به معنای استفاده از یک حلقه درون یک حلقهی دیگر است. در این صورت حلقههای داخلی، هر بار که حلقههای خارجی اجرا شوند، مجددا اجرا خواهند شد.
مثال: هر میوه را با هر یک از صفات موجود در لیست adj نمایش بده.
1 2 3 4 5 6 |
adj = ["red", "big", "tasty"] fruits = ["apple", "banana", "cherry"] for x in adj: for y in fruits: print(x, y) |
خروجی:
1 2 3 4 5 6 7 8 9 |
red apple red banana red cherry big apple big banana big cherry tasty apple tasty banana tasty cherry |
عبارت pass در حلقههای for
دستور for در پایتون نباید خالی باشد. اما اگز به هر دلیلی مجبور شدید دستورات داخل for را خالی بگذارید، از کلیدواژه pass استفاده کنید تا با خطا مواجه نشوید.
مثال:
1 2 |
for x in [0, 1, 2]: pass |