Kahibaro
Discord Login Register

حلقه‌های for

درک حلقهٔ `for` در پایتون

در فصل حلقه‌ها، با مفهوم کلی تکرار آشنا شده‌اید. در این بخش فقط روی حلقهٔ for در پایتون تمرکز می‌کنیم و شکل و کاربردهای معمول آن را می‌بینیم.

شکل کلی حلقهٔ `for`

در پایتون حلقهٔ for معمولاً روی یک «دنباله» (مثل لیست، رشته، خروجی range() و …) حرکت می‌کند و هر بار یک عنصر از آن را در متغیری قرار می‌دهد:

for متغیر in دنباله:
    دستور_۱
    دستور_۲

مثال ساده: شمارش با `range()`

رایج‌ترین استفاده از for، تکرار یک کار تعداد مشخصی بار است. برای این کار از تابع range() استفاده می‌شود (جزییات کامل range() در بخش‌های دیگر هم خواهد آمد، اینجا فقط استفادهٔ معمولش را می‌بینیم).

for i in range(5):
    print("سلام")

خروجی:

سلام
سلام
سلام
سلام
سلام

در این مثال:

اگر بخواهید خود شمارهٔ تکرار را هم چاپ کنید:

for i in range(5):
    print("شماره تکرار:", i)

خروجی:

شماره تکرار: 0
شماره تکرار: 1
شماره تکرار: 2
شماره تکرار: 3
شماره تکرار: 4

استفاده از `range(start, stop, step)`

شکل کلی‌تر range می‌تواند شروع، پایان و گام داشته باشد:

مثال‌ها:

# از 1 تا 5 (بدون 6)
for i in range(1, 6):
    print(i)
# فقط اعداد فرد بین 1 تا 9
for i in range(1, 10, 2):
    print(i)
# شمارش معکوس از 10 تا 1
for i in range(10, 0, -1):
    print(i)

نکتهٔ مهم: stop همیشه خودش در دنباله نیست؛ تکرار تا قبل از آن عدد انجام می‌شود.

حلقهٔ `for` روی لیست

حلقهٔ for فقط برای range() نیست؛ روی هر دنباله‌ای قابل استفاده است. یک کاربرد بسیار معمول، پیمایش لیست است (خود لیست‌ها در فصل «مجموعه‌های داده» به‌طور کامل بررسی می‌شوند).

numbers = [10, 20, 30, 40]
for num in numbers:
    print(num)

در هر تکرار:

مثال کاربردی‌تر: محاسبهٔ مجموع اعداد لیست:

numbers = [5, 8, 12]
total = 0
for n in numbers:
    total = total + n
print("مجموع:", total)

حلقهٔ `for` روی رشته (متن)

رشته‌ها (str) هم دنباله‌ای از کاراکترها هستند، پس می‌توان روی آن‌ها با for حرکت کرد:

text = "Python"
for ch in text:
    print(ch)

خروجی:

P
y
t
h
o
n

مثال ساده: شمارش تعداد حروف a در یک متن:

sentence = "salam chetori?"
count = 0
for ch in sentence:
    if ch == "a":
        count = count + 1
print("تعداد a:", count)

(ساختار شرط if جای دیگری به‌تفصیل توضیح داده می‌شود؛ اینجا فقط برای نشان‌دادن استفادهٔ ترکیبی آمده است.)

استفاده از `for` برای تکرار یک کار مشخص

گاهی شما فقط می‌خواهید کاری را چند بار انجام دهید، بدون این‌که به خود شمارهٔ تکرار نیاز داشته باشید. در این صورت، بعضی‌ها از نام متغیر _ استفاده می‌کنند تا نشان بدهند که مقدارش برایشان مهم نیست:

for _ in range(3):
    print("این پیام سه بار چاپ می‌شود.")

در اینجا نام متغیر مهم نیست؛ می‌توانست هر چیز دیگری هم باشد، ولی _ فقط یک قرارداد رایج است.

حلقهٔ تو در تو با `for` (مقدماتی)

گاهی نیاز دارید یک حلقهٔ for را درون حلقهٔ for دیگر استفاده کنید (حلقهٔ تو در تو). جزئیات بیش‌تر در بخش «شرط‌های تو در تو» و در تمرین‌های حلقه خواهد آمد؛ اینجا فقط یک تصویر کلی:

for i in range(1, 4):      # حلقهٔ بیرونی
    for j in range(1, 3):  # حلقهٔ درونی
        print(i, j)

خروجی:

1 1
1 2
2 1
2 2
3 1
3 2

هر بار که حلقهٔ بیرونی یک مقدار می‌گیرد، حلقهٔ درونی به‌طور کامل اجرا می‌شود.

مقایسهٔ ذهنی `while` و `for` (در حد اشاره)

جزئیات کامل مقایسه در بخش‌های دیگر آمده است، ولی در حد یک «حس کلی»:

در عمل، در بسیاری از برنامه‌های ساده، for انتخاب پیش‌فرض برای پیمایش دنباله‌ها و تکرارهای شمارشی است.

چند تمرین پیشنهادی

برای تمرین حلقهٔ for (پاسخ‌ها را فعلاً خودتان پیدا کنید):

  1. با استفاده از for و range() اعداد ۱ تا ۱۰ را چاپ کنید.
  2. مجموع اعداد ۱ تا ۱۰۰ را محاسبه و چاپ کنید.
  3. لیستی از نام‌ها بسازید و با for به هر کدام سلام کنید (مثلاً سلام علی).
  4. یک رشته از کاربر بگیرید و با حلقهٔ for آن را برعکس چاپ کنید (کاراکترها را از آخر به اول چاپ کنید؛ می‌توانید از range کمک بگیرید).

در فصل «شمارنده‌های حلقه» و «تمرین‌های حلقه» با الگوهای متداول‌تری برای استفاده از for آشنا می‌شوید.

Views: 6

Comments

Please login to add a comment.

Don't have an account? Register now!