حلقه‌های تکرار در پایتون (Python Loops)

فرض کنید می‌خواهید جمله‌ی “سلام” را ۱۰ بار چاپ کنید. یک راه این است که دستور print() را ۱۰ بار بنویسید:

print("سلام")
print("سلام")
print("سلام")
print("سلام")
print("سلام")
print("سلام")
print("سلام")
print("سلام")
print("سلام")
print("سلام")

اما این روش اصلاً مناسب نیست. اگر بخواهید این جمله را ۱۰۰ بار یا ۱۰۰۰ بار چاپ کنید چه؟ اینجاست که حلقه (Loop) به کمک ما می‌آید. حلقه‌ها باعث می‌شوند یک یا چند دستور را بدون نیاز به تکرار دستی، بارها اجرا کنیم.

فهرست مطالب

حلقه for

در پایتون برای تکرار یک عملیات معمولاً از حلقه for استفاده می‌کنیم.

ساختار کلی آن به شکل زیر است:

 
for variable in sequence:
    دستورها
 
  • for آغاز حلقه را مشخص می‌کند.
  • variable در هر بار اجرای حلقه یک مقدار جدید دریافت می‌کند.
  • sequence مجموعه‌ای از مقادیر است که حلقه روی آن حرکت می‌کند.
  • تمام دستورهایی که با تورفتگی (Indentation) نوشته شوند، داخل حلقه قرار دارند.

اولین مثال

 
for i in range(5):
    print("Hello")
 

خروجی

 
Hello
Hello
Hello
Hello
Hello
 

در این مثال، دستور print() پنج بار اجرا می‌شود.


متغیر i چیست؟

در مثال قبل متغیری به نام i داشتیم.

 
for i in range(5):
    print(i)
 

خروجی

 
0
1
2
3
4
 

همان‌طور که می‌بینید، مقدار i در هر بار اجرای حلقه تغییر می‌کند.

در اولین دور برابر ۰ است، سپس ۱، بعد ۲ و …

نام i فقط یک نام قراردادی است و می‌توان هر نام دیگری انتخاب کرد.

مثلاً:

 
for number in range(5):
    print(number)
 

یا

 
for x in range(5):
    print(x)
 

همه این کدها دقیقاً یک کار انجام می‌دهند.

تابع range()

تابع range() یکی از پرکاربردترین توابع در حلقه‌هاست.

این تابع مجموعه‌ای از اعداد پشت سر هم تولید می‌کند.

مثلاً:

 
range(5)
 

اعداد زیر را تولید می‌کند:

 
0
1
2
3
4
 

دقت کنید که عدد ۵ تولید نمی‌شود.

یعنی همیشه از صفر شروع می‌شود و تا یک عدد قبل از مقدار نوشته شده ادامه پیدا می‌کند.


مثال

 
for i in range(8):
    print(i)
 

خروجی:

 
0
1
2
3
4
5
6
7
 

مثال کاربردی

چاپ اعداد ۱ تا ۵:

 
for i in range(1, 6):
    print(i)
 

خروجی:

 
1
2
3
4
5
 

در اینجا range(1, 6) یعنی:

  • از عدد ۱ شروع کن.
  • تا قبل از ۶ ادامه بده.

مثال دیگر

 
for i in range(3):
    print("Python")
 

خروجی:

 
Python
Python
Python
نکته مهم

هر بار که حلقه اجرا می‌شود، به آن یک دور (Iteration) گفته می‌شود. اگر range(5) را استفاده کنیم، حلقه ۵ دور اجرا خواهد شد.

تابع range() با سه پارامتر

تا اینجا از range() فقط با یک عدد استفاده کردیم:

 
range(5)
 

اما تابع range() می‌تواند سه پارامتر نیز دریافت کند:

 
range(start, stop, step)
 

که هر کدام معنی خاصی دارند:

  • start : عدد شروع
  • stop : عدد پایان (خود این عدد تولید نمی‌شود.)
  • step : میزان افزایش یا کاهش در هر مرحله

پارامتر اول (Start)

اگر عدد شروع را مشخص کنیم، حلقه از همان عدد آغاز می‌شود.

 
for i in range(3, 8):
    print(i)
 

خروجی

 
3
4
5
6
7
 

در این مثال:

  • شروع از ۳
  • پایان قبل از ۸

پارامتر سوم (Step)

پارامتر سوم مشخص می‌کند که هر بار چند واحد جلو برویم.

مثلاً اگر بخواهیم فقط اعداد زوج را چاپ کنیم:

 
for i in range(2, 11, 2):
    print(i)
 

خروجی

 
2
4
6
8
10
 

هر بار مقدار i دو واحد افزایش پیدا می‌کند.


مثال دیگر

 
for i in range(0, 21, 5):
    print(i)
 

خروجی

 
0
5
10
15
20
 

در این مثال حلقه هر بار ۵ واحد جلو می‌رود.


شمارش معکوس

اگر مقدار step را منفی قرار دهیم، حلقه برعکس حرکت می‌کند.

 
for i in range(5, 0, -1):
    print(i)
 

خروجی

 
5
4
3
2
1
 

در اینجا:

  • از ۵ شروع می‌کنیم.
  • هر بار یک واحد کم می‌کنیم.
  • قبل از رسیدن به صفر حلقه متوقف می‌شود.

شمارش معکوس از ۱۰ تا صفر

 
for i in range(10, -1, -1):
    print(i)
 

خروجی

 
10
9
8
7
6
5
4
3
2
1
0
 

دقت کنید که چون عدد پایان -1 نوشته شده است، مقدار 0 نیز چاپ می‌شود.


چند مثال کاربردی

چاپ مضرب‌های ۳

 
for i in range(3, 31, 3):
    print(i)
 

چاپ اعداد فرد

 
for i in range(1, 20, 2):
    print(i)
 

چاپ اعداد زوج

 
for i in range(2, 21, 2):
    print(i)
 

جدول خلاصه

دستورخروجی
range(5)0 تا 4
range(2, 6)2 تا 5
range(1, 10, 2)1، 3، 5، 7، 9
range(10, 0, -1)10 تا 1
range(20, -1, -5)20، 15، 10، 5، 0
نکته مهم

بسیاری از افراد مبتدی انتظار دارند دستور زیر عدد ۵ را نیز چاپ کند:

for i in range(1, 5):
    print(i)

اما خروجی این برنامه چنین است:

1
2
3
4

دلیل آن این است که عدد پایان (stop) هرگز در خروجی range() تولید نمی‌شود و حلقه همیشه تا یک عدد قبل از مقدار پایان ادامه پیدا می‌کند.

حلقه‌های تو در تو (Nested Loops)

گاهی لازم است یک حلقه را داخل حلقه‌ی دیگری قرار دهیم. به این نوع حلقه‌ها حلقه‌های تو در تو (Nested Loops) گفته می‌شود.

در این حالت، به ازای هر بار اجرای حلقه‌ی بیرونی، حلقه‌ی داخلی به طور کامل اجرا می‌شود.

ساختار کلی آن به شکل زیر است:

 
for i in range(...):
    for j in range(...):
        دستورها
 

در اینجا:

  • حلقه‌ی بیرونی تعداد دفعات تکرار اصلی را مشخص می‌کند.
  • حلقه‌ی داخلی در هر بار اجرای حلقه‌ی بیرونی، از ابتدا اجرا می‌شود.

مثال اول

 
for i in range(3):
    for j in range(2):
        print(i, j)
 

خروجی

 
0 0
0 1
1 0
1 1
2 0
2 1
 

در این مثال:

  • مقدار i ابتدا صفر است.
  • حلقه‌ی داخلی دو بار اجرا می‌شود و j به ترتیب ۰ و ۱ خواهد بود.
  • سپس i برابر ۱ می‌شود و دوباره حلقه‌ی داخلی از ابتدا اجرا می‌شود.
  • این روند تا پایان ادامه پیدا می‌کند.

روند اجرای برنامه

جدول زیر نشان می‌دهد که مقادیر i و j چگونه تغییر می‌کنند:

دور اجرای حلقهمقدار iمقدار j
100
201
310
411
520
621

همان‌طور که مشاهده می‌کنید، هر بار که مقدار i تغییر می‌کند، مقدار j دوباره از ابتدا شروع می‌شود.


رسم مربع با ستاره

یکی از کاربردهای حلقه‌های تو در تو، رسم شکل‌های مختلف است.

 
for i in range(5):
    for j in range(5):
        print("*", end="")
    print()
 

خروجی

 
*****
*****
*****
*****
*****
 

توضیح

حلقه‌ی داخلی در هر سطر، پنج ستاره چاپ می‌کند.

 
print("*", end="")
 

پارامتر end="" باعث می‌شود پس از چاپ هر ستاره، مکان‌نما به خط بعد نرود.

بعد از پایان حلقه‌ی داخلی، دستور زیر اجرا می‌شود:

 
print()
 

که باعث می‌شود چاپ از سطر بعدی ادامه پیدا کند.


رسم مستطیل

 
for i in range(3):
    for j in range(8):
        print("*", end="")
    print()
 

خروجی

 
********
********
********
 

رسم جدول اعداد

 
for i in range(3):
    for j in range(4):
        print(j, end=" ")
    print()
 

خروجی

 
0 1 2 3
0 1 2 3
0 1 2 3
نکته مهم

در حلقه‌های تو در تو، تعداد کل دفعات اجرای حلقه‌ی داخلی برابر است با حاصل‌ضرب تعداد تکرار دو حلقه. مثلاً در کد زیر:

for i in range(5):
    for j in range(4):
        print("*")

حلقه‌ی بیرونی ۵ بار اجرا می‌شود. حلقه‌ی داخلی در هر بار، ۴ مرتبه اجرا می‌شود. بنابراین دستور print("*") در مجموع ۲۰ بار اجرا خواهد شد.

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

سربرگ

عنوان توجه

پاراگراف نوشته شود.

some code here

📝 تمرین

متن تمرین
some code

عنوان مطلب بعدی

پاراگراف نوشته شود.

گام بعدی :

برای شرکت در آزمون آماده‌اید؟

با ورود به پنل کاربری می‌توانید جهت ثبت نام در آزمون‌ها و دسترسی به منابع آموزشی اقدام نمایید. کارشناسان ما در اسرع وقت با شما تماس می‌گیرند.

آموزش نصب پایتون

آموزش نصب پایتون و ابزارهای موردنیاز (راهنمای کامل برای ویندوز) اگر تصمیم گرفته‌اید برنامه‌نویسی را یاد بگیرید، احتمالاً نام زبان

ادامه مطلب »