🔄 درس سوم: حلقهها در پایتون
🎯 هدف این درس: آشنایی با حلقههای for و while برای اجرای کارهای تکراری
قسمت 1: حلقه چیست و چرا به آن نیاز داریم؟
در برنامهنویسی، گاهی نیاز داریم یک کار را چندین بار تکرار کنیم. مثلاً اگر بخواهیم ۱۰۰ بار یک پیام را چاپ کنیم، نوشتن ۱۰۰ خط کد کار هوشمندانهای نیست. اینجاست که حلقهها به کمک ما میآیند.
💡 مثال در زندگی واقعی:
• چاپ ۱۰۰ برگه
• تکرار یک ورزش در باشگاه
• خواندن تمام صفحات یک کتاب
انواع حلقه در پایتون:
- حلقه
for: زمانی استفاده میشود که تعداد تکرارها را از قبل میدانیم. - حلقه
while: زمانی استفاده میشود که تعداد تکرارها را نمیدانیم و باید تا زمانی که یک شرط برقرار است، تکرار کنیم.
قسمت 2: حلقه for
حلقه for برای پیمایش روی یک دنباله (مانند لیست، رشته، یا محدوده اعداد) استفاده میشود.
ساختار کلی:
for متغیر in دنباله:
# کدهایی که باید تکرار شوند
مثال 1: چاپ اعداد با range
for i in range(5):
print(f"عدد: {i}")
💡 نکته: تابع range(5) اعداد ۰ تا ۴ را تولید میکند. یعنی از ۰ شروع میشود و ۵-۱=۴ تمام میشود.
مثال 2: پیمایش یک لیست
fruits = ["سیب", "موز", "پرتقال"]
for fruit in fruits:
print(f"میوه: {fruit}")
مثال 3: پیمایش یک رشته
word = "پایتون"
for letter in word:
print(f"حرف: {letter}")
قسمت 3: تابع range
تابع range() یکی از پرکاربردترین توابع در حلقههای for است که یک دنباله از اعداد ایجاد میکند.
📊 سه حالت استفاده از range
| نحوه استفاده | توضیح | مثال |
|---|---|---|
range(stop) |
از ۰ تا stop-1 | range(5) → 0,1,2,3,4 |
range(start, stop) |
از start تا stop-1 | range(2, 6) → 2,3,4,5 |
range(start, stop, step) |
از start تا stop-1 با گام step | range(1, 10, 2) → 1,3,5,7,9 |
🔍 مثال عملی:
# مثال 1: range(stop)
print("مثال 1:")
for i in range(5):
print(i, end=" ")
# مثال 2: range(start, stop)
print("\n\nمثال 2:")
for i in range(2, 7):
print(i, end=" ")
# مثال 3: range(start, stop, step)
print("\n\nمثال 3:")
for i in range(1, 11, 2):
print(i, end=" ")
print("\n")
قسمت 4: حلقه while
حلقه while تا زمانی که یک شرط درست باشد، به تکرار ادامه میدهد.
ساختار کلی:
while شرط:
# کدهایی که تا زمانی که شرط برقرار است، تکرار میشوند
مثال 1: شمارش از ۱ تا ۵
count = 1
while count <= 5:
print(f"شماره: {count}")
count += 1 # افزایش شمارنده
print("پایان حلقه")
⚠️ هشدار: همیشه مطمئن شوید که شرط حلقه در نهایت false میشود، در غیر این صورت حلقه تا ابد ادامه مییابد (حلقه بینهایت).
مثال 2: دریافت ورودی از کاربر تا زمانی که عدد صحیح وارد کند
while True:
try:
age = int(input("سن خود را وارد کنید: "))
break # اگر ورودی صحیح بود، از حلقه خارج میشویم
except ValueError:
print("❌ لطفاً یک عدد صحیح وارد کنید!")
print(f"✅ سن شما: {age}")
قسمت 5: تفاوت حلقه for و while
📊 جدول مقایسه
| ویژگی | حلقه for | حلقه while |
|---|---|---|
| تعداد تکرار | معمولاً مشخص است | نامشخص است |
| کاربرد اصلی | پیمایش دنبالهها | انتظار برای وقوع یک شرط |
| خطر حلقه بینهایت | کم | بالا (در صورت فراموشی افزایش شمارنده) |
قسمت 6: کلمات کلیدی break و continue
1️⃣ دستور break
دستور break برای خروج فوری از حلقه استفاده میشود.
# پیدا کردن اولین عدد زوج در لیست
numbers = [1, 3, 5, 7, 8, 9, 11]
for num in numbers:
if num % 2 == 0:
print(f"اولین عدد زوج پیدا شد: {num}")
break # بعد از پیدا شدن، از حلقه خارج میشویم
2️⃣ دستور continue
دستور continue برای پرش به تکرار بعدی حلقه استفاده میشود و کدهای بعد از آن در همان تکرار اجرا نمیشوند.
# چاپ اعداد فرد از ۱ تا ۱۰
for i in range(1, 11):
if i % 2 == 0:
continue # اعداد زوج را نادیده بگیر
print(i, end=" ")
print("\n")
قسمت 7: پروژه عملی – جدول ضرب
📝 پروژه: ساخت جدول ضرب
برنامهای بنویسید که با استفاده از حلقههای تو در تو، جدول ضرب ۱ تا ۱۰ را نمایش دهد.
🔍 راهحل پروژه:
# حلقه بیرونی برای سطرها (عدد اول)
for i in range(1, 11):
# حلقه داخلی برای ستونها (عدد دوم)
for j in range(1, 11):
result = i * j
print(f"{i} × {j} = {result:2d}", end=" ")
print() # رفتن به خط بعدی
قسمت 8: تمرین عملی
📝 تمرین شماره 1
برنامهای بنویسید که یک عدد از کاربر بگیرد و فاکتوریل آن را محاسبه کند. (فاکتوریل ۵ = ۵×۴×۳×۲×۱)
🔍 راهحل تمرین:
# دریافت عدد از کاربر
num = int(input("یک عدد برای محاسبه فاکتوریل وارد کنید: "))
# محاسبه فاکتوریل
factorial = 1
for i in range(1, num + 1):
factorial *= i
# نمایش نتیجه
print(f"فاکتوریل {num} = {factorial}")
📝 تمرین شماره 2
برنامهای بنویسید که یک عدد از کاربر بگیرد و تشخیص دهد که آیا عدد اول است یا خیر.
🔍 راهحل تمرین:
# دریافت عدد از کاربر
num = int(input("یک عدد وارد کنید: "))
# اعداد ۰ و ۱ اول نیستند
if num < 2:
print(f"{num} عدد اول نیست.")
else:
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
print(f"{num} یک عدد اول است.")
else:
print(f"{num} عدد اول نیست.")
📚 جمعبندی درس
در این درس یاد گرفتیم:
- ✅ مفهوم حلقه و کاربرد آن
- ✅ حلقه
forو تابعrange() - ✅ حلقه
whileو نکات امنیتی آن - ✅ تفاوت حلقه
forوwhile - ✅ کلمات کلیدی
breakوcontinue - ✅ پروژههای عملی: جدول ضرب، فاکتوریل و تشخیص عدد اول
🎯 درس بعدی: توابع در پایتون (Function)
💡 برای مشاهده دورههای بیشتر، به صفحه دورهها مراجعه کنید.


