حلقه‌ها در پایتون

حلقه for، while، range، break، continue و else در حلقه‌های پایتون

حلقه چیست؟

حلقه (Loop) برای تکرار یک بلوک کد استفاده می‌شود. پایتون دو نوع حلقه اصلی دارد: for و while.

حلقه for

برای پیمایش روی یک دنباله (لیست، رشته، range و...):

# پیمایش لیست
fruits = ["سیب", "موز", "پرتقال"]
for fruit in fruits:
    print(fruit)

# پیمایش رشته
for char in "Python":
    print(char)

تابع range()

برای تولید دنباله اعداد:

# range(stop) — 0 تا stop-1
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

# range(start, stop)
for i in range(2, 6):
    print(i)  # 2, 3, 4, 5

# range(start, stop, step)
for i in range(0, 10, 2):
    print(i)  # 0, 2, 4, 6, 8

# شمارش معکوس
for i in range(5, 0, -1):
    print(i)  # 5, 4, 3, 2, 1

حلقه while

تا وقتی شرط درست باشد، تکرار می‌کند:

count = 0
while count < 5:
    print(f"شمارش: {count}")
    count += 1
مراقب حلقه بی‌نهایت باشید! اگر شرط همیشه درست بماند، حلقه تمام نمی‌شود:
# ❌ حلقه بی‌نهایت!
# while True:
#     print("بی‌نهایت!")

# ✅ درست
count = 0
while count < 5:
    print(count)
    count += 1  # مهم!

break — خروج از حلقه

با break می‌توانید حلقه را زودتر تمام کنید:

for i in range(10):
    if i == 5:
        break  # وقتی i برابر ۵ شد، حلقه تمام می‌شود
    print(i)
# خروجی: 0, 1, 2, 3, 4

continue — پرش از این دور

با continue می‌توانید بقیه کد این دور را رد کنید و به دور بعد بروید:

for i in range(10):
    if i % 2 == 0:
        continue  # اعداد زوج را رد کن
    print(i)
# خروجی: 1, 3, 5, 7, 9

else در حلقه

بلوک else در حلقه وقتی اجرا می‌شود که حلقه طبیعی تمام شده باشد (نه با break):

for i in range(5):
    print(i)
else:
    print("حلقه تمام شد")

# با break اجرا نمی‌شود
for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("این چاپ نمی‌شود!")

حلقه تو در تو

# جدول ضرب
for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i} × {j} = {i * j}")
    print("---")

enumerate — ایندکس و مقدار

fruits = ["سیب", "موز", "پرتقال"]
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

# با شروع از ۱
for index, fruit in enumerate(fruits, 1):
    print(f"{index}. {fruit}")

zip — پیمایش موازی

names = ["علی", "مریم", "حسن"]
ages = [25, 30, 22]

for name, age in zip(names, ages):
    print(f"{name}: {age} سال")

حلقه روی دیکشنری

person = {"name": "علی", "age": 25, "city": "تهران"}

for key, value in person.items():
    print(f"{key}: {value}")

while با else

count = 0
while count < 3:
    print(count)
    count += 1
else:
    print("تمام شد")

مثال: حدس عدد

import random
secret = random.randint(1, 100)
attempts = 0

while True:
    guess = 50  # در واقع از کاربر گرفته می‌شود
    attempts += 1
    
    if guess == secret:
        print(f"آفرین! در {attempts} تلاش")
        break
    elif guess < secret:
        print("بزرگ‌تر")
    else:
        print("کوچک‌تر")

خلاصه

ساختارتوضیح
for x in seqپیمایش دنباله
while condتکرار تا وقتی شرط درست است
range(n)دنباله اعداد
breakخروج از حلقه
continueپرش از این دور
enumerate()ایندکس + مقدار
zip()پیمایش موازی

این مبحث بخشی از دوره آموزش کامل پایتون است.

ابزارهای مرتبط