سطح مقدماتی (Beginner Level)
حلقهها (Loops) یکی از مهمترین مفاهیم در برنامهنویسی هستند. آنها به ما اجازه میدهند یک قطعه کد را چندین بار تکرار کنیم بدون اینکه نیاز باشد آن را چند بار بنویسیم. در پایتون دو نوع حلقه اصلی داریم: while و for.

۱. حلقه While (تکرار شرطی)
حلقه while تا زمانی که یک شرط خاص True باشد، دستورات داخل خود را اجرا میکند. این حلقه برای زمانی مناسب است که نمیدانیم کد دقیقاً چند بار باید اجرا شود، اما شرط پایان را میدانیم.
مثال اول: شمارش ساده
در این مثال، تا زمانی که count کمتر از ۵ است، حلقه اجرا میشود.
مثال دوم: حلقه با شرط منطقی
گاهی شرط پایان وابسته به محاسبات است.
۲. حلقه For (تکرار روی مجموعهها)
حلقه for در پایتون برای پیمایش روی یک دنباله (مانند لیست، رشته یا بازه اعداد) استفاده میشود. برخلاف زبانهای دیگر، for در پایتون بیشتر شبیه به یک "Iterate" عمل میکند.
مثال اول: پیمایش لیست
مثال دوم: پیمایش رشته
رشتهها نیز در پایتون مجموعهای از کاراکترها هستند.
۳. تابع Range
برای تولید دنبالهای از اعداد (مثلاً برای تکرار به تعداد مشخص)، از تابع range() استفاده میکنیم.
ساختار Range
این تابع به سه صورت استفاده میشود:
range(stop): از صفر تا یکی کمتر از عدد.range(start, stop): از شروع تا یکی کمتر از پایان.range(start, stop, step): همراه با گام حرکت.
۴. کنترل حلقه (Break و Continue)
گاهی لازم است رفتار طبیعی حلقه را تغییر دهیم.
- Break: حلقه را بلافاصله متوقف میکند.
- Continue: تکرار جاری را نیمهکاره رها کرده و به تکرار بعدی میرود.
مثال Break (توقف اضطراری)
مثال Continue (پرش)
سطح پیشرفته (Professional Level)
در سطح حرفهای، حلقهها در پایتون قابلیتهای منحصربهفردی دارند که کد را کوتاهتر، سریعتر و خواناتر میکنند. درک این مفاهیم برای نوشتن کد "Pythonic" ضروری است.
۱. بلوک Else در حلقهها
پایتون قابلیتی دارد که در کمتر زبانی دیده میشود: else برای حلقهها.
کد داخل else تنها زمانی اجرا میشود که حلقه به صورت طبیعی تمام شود (یعنی با break متوقف نشده باشد). این برای جستجوها بسیار کاربردی است.
مثال: جستجو با Else
۲. تابع Enumerate (دسترسی به ایندکس)
در بسیاری از زبانها برای داشتن ایندکس حلقه باید از i استفاده کنید. در پایتون حرفهای، هرگز نباید بنویسید for i in range(len(list)). به جای آن از enumerate استفاده کنید.
روش غیر حرفهای (استاتیک)
# این روش توصیه نمیشود
data = ["a", "b", "c"]
for i in range(len(data)):
print(i, data[i])
روش حرفهای (Interactive)
۳. تابع Zip (پیمایش همزمان)
اگر بخواهید روی دو لیست به صورت همزمان حلقه بزنید، از zip استفاده کنید.
۴. حلقههای تو در تو (Nested Loops)
استفاده از حلقه داخل حلقه دیگر. باید مراقب پیچیدگی زمانی (Big O) باشید، زیرا تعداد اجراها ضرب میشود.
۵. List Comprehensions (تولید لیست تکخطی)
حرفهایترین روش برای ساخت لیستها بر اساس یک حلقه، استفاده از Comprehension است. این روش معمولاً سریعتر از حلقه for معمولی است.
تبدیل کد معمولی به Comprehension
کد زیر نحوه ساخت لیست توان دوم اعداد را نشان میدهد.