آموزش حلقه for در python با ویدیو + مفهوم Iterable Object

آموزش حلقه for در python با ویدیو + مفهوم Iterable Object

آموزشی
8 مهر 1405

پیش نیاز های مقاله

توجه: ویدیو قرار داده شده فقط بخش اول از آموزش حلقه for در پایتون است. اگر قصد یادگیری بیشتر در مورد حلقه for و کلی مباحث دیگه در پایتون دارید، متونید دوره آموزش پایتون رو به صورت رایگان ببینید.

اولین نکته ای که باید بدونید اینه که حلقه ها (چه for چه while) بحث اختصاصی مروبط فقط به زبان پایتون نیستن.

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

 

کاربرد و دلیل استفاده از حلقه ها 

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

خب اگر با دید برنامه نویسی بهش نگاه کنیم (به شکلی ساده) سریع متوجه دوتا نیاز میشیم:

  • اول اینکه من چطور برای چندین هزار کاربری که دارم پیام ارسال کنم، یعنی تک به تک متن رو ارسال کنم؟!
  • چون نیازه داخل هر پیام اسم و فامیل کاربر بیاد پس نمیشه یک متن کپی پیست بشه و برای همه ارسال بشه

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

 

فلسفه پشت حلقه ها از این قراره:

ما یکسری دستور تکراری داریم که نیازه روی مجموعه ای از ایتم ها اعمالش کنیم (مثل ایتم های کاربر های سایت توی مثال بالا).
بر اساس خلاقیت هم میتونید پارامتر های داینامیک بزارید که برای هر ایتم مقادیری اختصاصی اون ایتم اعمال بشن (مثل همون اسم و فامیل ارسالی کاربر که متغیر هستش توی هر پیام).

 

حلقه for در پایتون چیست؟

حلقه for در python دستوری است که روی اعضای یک مجموعه حرکت میکنه و برای هر عضو از اون مجموعه بخشی از کد رو اجرا میکنه. این مجموعه میتونه لیست، رشته، دیکشنری، تاپل، range و.. باشه.

پس روی هر نوع داده ای میشه در پایتون حلقه for زد؟ واقعیت اینه که نه.

مثالی از سینتکس کلی حلقه for:

for item in iterable:
    # کدی که برای هر آیتم اجرا می شود
    print(item)

اجزای ساختاری حلقه for:

  • کلمه for شروع حلقه رو اعلام میکنه و یک کلمه رزرو شده در پایتون است.
  • کلمه item مقدار ثابتی نداره، در واقع در هر دور از پیمایش مقدارش بر اساس ترتیب مجموعه عوض میشه. 
    نکته: بهتره که این اسم رو معنا دار انتخاب کنید، مثلا student برای لیست دانش آموزان.
  • کلمه in داره به پایتون میگه قراره روی چی پیمایش انجام بدی
  • اون بخش Iterable هم باید جایگاه مجموعه قابل پیمایش شما باشه (مثل لیست، رشته، دیکشنری، تاپل، range و..) پایین تر Iterable کامل گفته شده.
  • علامت (:) یا Colon یا دو نقطه: اگر در انتهای خط تعریف حلقه گذاشته نشود باعث SyntaxError ارور میشه.
  • تورفتگی (Indentation) : این بخشی است که به مفسر پایتون میفهماند که چه کدهایی تحت نظر این حلقه هستن، شما با قرار دادن space یا فاصله به پایتون میگویید این کد ها تحت تاثیر این حلقه هستن که بر اساس استاندارد PEP8بهتر است 4 فاصله بگذارید.
    توجه: اگر برای Indentation کمتر/بیشتر از 4 فاصله بگذارید ارور نمیگیرید، بلکه تنها ممکن از Syntax Warning بگیرید که بیشتر یک هشدار است تا یک ارور ولی از حالت استاندارد خارج شده اید.

اگر میخواید به استاندارد PEP8 مسلط تر بشید میتونید مقاله PEP8 چیست رو مطالعه کنید.

 

حلقه for قدم به قدم چطور داره اجرا میشه؟

کد زیر وظیفه جمع کردن چند عدد و محاسبه جمع کل هستش، حالا دور به دور ببینیم چی میشه:

numbers = [5, 10, 15]
total = 0

for n in numbers:
    total = total + n

print(total)  # 30
دوره حلقهمقدار nمقدار total بعد از یک دور
دور اول55
دور دوم1015
دور سوم1530

 در دور سوم چون دیگه ایتمی در لیست باقی نمونده حلقه تموم میشه و بعد به دستور print میرسه و مقدار 30 چاپ میشه.

توجه:

# ورژن بلند
total = total + n

# ورژن کوتاه شد
total += n

 

منظور از Iterable Object در پایتون چیه؟ و چه فرقی با Iterate داره؟

به هر مجموعه ای در پایتون که بتونیم روی اون حلقه for اجرا کنیم بدون اینکه ارور object is not iterable رو بگیریم یعنی اون داده قابل پیمایش یا Iterableهستش. 

پس به صورت کلی ابجکت های Iterable میشه روشون پیمایش کرد و حلقه for اجرا کرد.

ما به این عمل پیمایش که انجام میشه و روی ایتم های یک مجموعه حرکت میکنیم Iterate میگیم.

 

حلقه for else در پایتون چیست؟

یک ویژگی کمتر شناخته شده از حلقه for اینه که میتونه بخش else هم داشته باشه.

قانون ساده ای داره:
بخش else فقط وقتی اجرا میشود که حلقه بدون اینکه به دستور break بخوره تموم بشه، ساده ترش اینه بخش else همیشه بعد از تمام شدن حلقه اجرا میشود مگر اینکه حلقه به دستور break بر بخورد.

 

کار دستور break در حلقه ها:

دستور break در هر مرحله ای هم که باشه اگر حلقه بهش بر بخوره، حلقه پیمایشش تموم میشه و حلقه شکسته میشه و به پایان میرسه.

مثال:

numbers = [10, 20, 30, 40, 50]

for number in numbers:
    if number == 30:
        print("عدد پیدا شد!")
        break
else:
    print("عدد پیدا نشد!")

در این حلقه چون در لیست عدد 30 وجود داره در پیمایش چون دستور break اجرا میشه هیچوقت بخش else اجرا نمیشه.

حالا اگر نزاریم دستور break اجرا بشه:
عدد 30 رو از لیست حذف کردیم

numbers = [10, 20, 40, 50]

for number in numbers:
    if number == 30:
        print("عدد پیدا شد!")
        break
else:
    print("عدد پیدا نشد!")

اینجا دیگه در حین پیمایش به دستور break اجرا نمیشه پس بعد از اتمام حلقه بخش else اجرا میشه.

 

علامت _ در حلقه for یعنی چه؟

وقتی در یک حلقه فقط تکرار براتون مهمه و به تک تک ایتم هایی که از اون حلقه میکشید بیرون نیاز ندارید ولی میخواید این رو توی سینتکس هم نشون بدید که برنامه نویس دیگه ای کدتون رو خوند سریع متوجه بشه که اصلا برای این بخش به ایتم ها نیازی نبوده بلکه هدف تکرار کد بوده، از _ استفاده میکنید.

for _ in range(3):
    print("سلام!")

 

خلاصه

دستور for که میشه گفت یکی از مهم ترین مفاهیم و پرکاربردترین در زبان های برنامه نویسی و همچنین پایتون هستش رو به صورت مقدماتی در حد آشنایی در این مقاله آشنا شدیم.

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

مفهومکاربردنمونه کد
حلقه for سادهپیمایش آیتم های یک مجموعهfor item in items:
دستور breakتوقف کامل حلقهif found: break
ساختار for elseاجرا فقط وقتی حلقه بدون break تمام شودelse: هم تراز با for

 

author-avatar
سعید امینینویسنده مقاله

الان بیشتر از 6 ساله که مشغول برنامه نویسی وب هستم و در طول این مدت کلی چالش رو پشت سر گذاشتم و عاشق اینم که هر چیزی رو که در این مدت یاد گرفتم رو به بقیه هم یاد بدم، الانم در بستر سایت گیک باز دارم دانشم رو با بقیه تقسیم میکنم :)

نظرات

هنوز نظری وجود ندارد! شما اولین نفر باشید...