سلام. امیدوارم حالتون خوب باشه و همیشه واسه یادگیری و برنامه نویسی انرژی داشته باشین.
جواب تمرین جلسه ی قبل رو در این جلسه نمیدم، چون خیلی ها برنامه فرستادن و برنامشون ایراد داشت و وقت خواستن تا خودشون ایرادشون رو پیدا کنند.
در جلسه ی بعد جواب رو میدم.
در این جلسه بالاخره حلقه for رو یاد میگیریم !
خوب در حلقه while ما یک شرط داشتیم و هر زمان شرط برقرار نبود چرخش حلقه ما تموم میشد، در حلقه for اصلا به این شکل نیست.
حلقه for میتونه تمام اشیایی رو که داخل کلاسشون متد __next__ یا __iter__ رو دارن، پیمایش کنه. در واقع در بطن کار این حلقه از شئ مورد نظرمون یه شئ قابل پیمایش یا iterable میسازه.
هی شئ که قابل پیمایش باشه متد __next__ رو در کلاسش داره و هر شئ هم که متد __next__ رو نداشت ولی متد __iter__ رو داشت میتونه به iterable یا یه شئ قابل پیمایش تبدیل بشه.
متد __next__ چه ربطی به حلقه for داره؟
واسه جواب به این سوال اول باید ببینیم اصلا این متد چیکار میکنه؟
خوب حلقه for از شئ ما یه شئ قابل پیمایش میسازه و تا زمان وقوع این خطا ()next رو صدا میزنه، و هر زمان این خطا رخ داد، بدون نشون دادنش به کاربر، حلقه خاتمه پیدا میکنه.
خط اول حلقه :
for VARAIBLE in OBJECT:
در اینجا VARAIBLE در هر دور از حلقه نسبت دهی میشه به خروجی که ()next بهش میده، و OBJECT شئ هست که داریم پیمایش میکنیم.
مثال بالا رو با حلقه for میزنیم:
همونطور که دیدید در اینجا char در هر دور از حلقه تبدیل شد به خرورجی که در مثال قبل ()next بهمون میداد !
در حلقه for مثل حلقه while نیازه به شرط و شروط نداریم !
حلقه for میتونه به جز رشته ها روی list ها و چندتایی ها و دیکشنری ها هم کار کنه:
همچنین مثل حلقه while میتونید از دستور های break و continue هم داخل حلقه for استفاده کنید:
خوب وقت این رسیده هر چیزیو که با حلقه while تمرین کردین رو سعی کنید با حلقه for هم بنویسیدش که بتونید بهتر یادش بگیرید.
حلقه for اینجا تموم نمیشه و در جلسات بعد ادامش رو میگم، یاد گرفتن این قسمت برای ورود به قسمت های بعد الزامیه، فعلا خدا نگهدار.