به نام خدا.

سلام.
خب، نوبت به قسمت پنجم میرسه.
قسمت های قبلی رو هم با استفاده از لینک های آخر همین مقاله میتانید ببینید.
این جلسه راجب Loop ها میخوایم صحبت کنیم. خیلی ساده اگه بخوایم بگیم، Loop ها این امکان رو به ما میدن که یه تیکه ای از کُد رو تکرار کنیم. تا اینجای کار ما هر کاری رو فقط یه بار میتانستیم انجام بدیم، ولی الان با Loop ها میتانیم یه کاری رو چندین بار بصورت اتوماتیک انجام بدیم.
تو این قسمت راجب یکی از این Loop ها حرف میزنیم که بهش میگن for.
یه اسم دیگه هم داره که بهش میگن counting loop، یعنی چه؟ یعنی اینکه از قبل میدانیم این Loop باید چند بار تکرار بشه.
مثلاً کد زیر رو خودتان بنویسید و ببینید چه اتفاقی میفته:
for i in range(1, 10): print(i)
اتفاقی که میفته اینه که از عدد ۱ تا ۹ رو پرینت میکنه. (ولی خود ۱۰ رو نه).
یعنی چه؟ یعنی ما آمدیم و «یه کاری رو (پرینت کردن)» چند بار انجام دادیم و از قبل هم میدانستیم که این کار مثلاً باید ۹ بار انجام بشه.
هر دفعه که Loop اجرا بشه، اون i از ۱ تا ۹ مقدارش تغییر میکنه و پرینت میشه و هروقت مقدار i مساوی ۱۰ شد، دیگه «اون کار» انجام نمیشه. عکس زیر رو ببینید:

اون range هم یه فانکشنه که فعلاً باهاش کاری نداریم، فعلاً فقط یاد بگیرید که با استفاده از range به Loop میگیم که باید چند بار اجرا بشه.
نکته ای که هست اینه که هر Loop باید بالاخره یه جایی stop کنه دیگه! راجب این به مرور زمان بیشتر یاد میگیرید. فعلاً همین کافیه که بدانید مثلاً وقتی تو این مثال به عدد ۱۰ رسیدیم، Loop وای میسه و دیگه اجرا نمیشه.
مثال ۱
for number in range(1, 10, 2): print(number)
اول از هرچیزی این رو بگم که شما به جای i میتانید هرچیزی که دوس دارید بزارید. اینجا من به جای i از number استفاده کردم. مهم اینه یه اسمی بزارید که به ما بگه داریم رو چه چیزی کار میکنیم. یعنی چه؟ یعنی مثلاً الان این number به ما میگه که داریم هر دفعه که Loop اجرا میشه، با یه عدد سر و کله میزنیم.
ولی یه نکته جدید اینجا داریم. چه نکته ای؟ اینجا فانکشن range به جای اینکه ۲ تا «چیز» بگیره، ۳ تا گرفته. چرا؟ اون مقدار سوم (یعنی عدد ۲) داره به Loop میگه که هردفعه چقدر به number اضافه کنه، به همین راحتی. اگه این مثال رو اجرا کنید، می بینید که عدد های ۱، ۳، ۵، ۷ و ۹ رو پرینت میکنه.
بعداً مثال های دیگه رو هم خواهیم دید. فعلاً در این حد کافیه.
مثال ۲
for number in range(10, 1, -3): print(number)
اینجا هم مثل قبلیه با این تفاوت که از ۱۰ به سمت ۱ حرکت میکنیم و عدد سوم هم منفیه. این یعنی چه؟ یعنی اگه این کد رو اجرا کنید، عددهای ۱۰، ۷ و ۴ رو پرینت میکنه.
مثال ۳
word = "virgool" for i in word: print(i)
خب اینجا دیگه خبری از range نیست. چرا؟ اینجا دیگه با یه range از اعداد سر و کار نداریم! اینجا داریم یه String رو به Loop میدیم و ازش میخوایم که تک تکِ character هاش رو پرینت کنه. به همین راحتی.
یه چیز دیگه. اگه به جای i از یه چیزی مثل harf یا character یا هرچیز دیگه استفاده کنید، کد شما خیلی قابل فهم تر میشه. مثل زیر:
word = "virgool" for harf in word: print(harf)
یعنی: به ازای هر حرف از کلمه virgool، تک تک حروفش رو پرینت کن.
راجب مثال ها این خیلی مهمه که علاوه بر چیزهایی که من نوشتم، خودتان هم امتحان کنید و سعی کنید که حتی یه ذره تغییرشان بدید و خلاصه حسابی باهاشان وقت بگذرانید.
خب، بازم رسیدیم به بهترین و لذت بخش ترین قسمت کار.
چالش ها از این به یعد یکم به فکر و وقت بیشتری نیاز دارن و باید هم رو این قسمت و هم قسمت های قبلی حسابی کار کرده باشید.
ولی بازم مثل همیشه میگم که اگه نتانستید حل کنید، نگران نشید. با تمرین همه چی حل میشه به مرور زمان.
و طبق روال معمول، هر چیزی که برای حل کردن چالش ها لازم دارید، توی این قسمت و قسمت های قبلی وجود داره و چیزی جز اینها نمیخواد.
یادتان باشه که Loop ها خیلی خیلی مهم و پرکاربرد هستن تو برنامه نویسی. حسابی روشان کار کنید که به مهارت برسید.
از user بخواید که اسمش رو وارد کنه، بعد اسمش رو ۳ بار بهش نشان بدید.
چالش قبلی رو جوری تغییر بدید که user علاوه بر اسمش، یه عدد هم وارد کنه و بعد اسمش رو به تعداد همون عددی که وارد کرده، بهش نشان بدید.
از user بخواید که اسمش رو وارد کنه و بعد تک تک حروف اسمش رو تو یه خط جدا بهش نشان بدید.
چالش قبلی رو جوری تغییر بدید که user یه عدد هم وارد کنه و همون کارِ چالش قبلی رو به تعداد اون عدد تکرار کنه.
از user بخواید که یه عدد بین ۱ تا ۱۰ وارد کنه، و بعد ستون مربوط به اون عدد تو جدول ضرب رو براش پرینت کنید. مثلاً اگه user عدد ۵ رو وارد کنه، یه اینجور چیزی رو مثلاً باید بهش نشان بدید:
Shoma adade 5 ro vared kardid. In mishe sotoune marbout be adade 5 tou jadvale zarb: 5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 5 x 6 = 30 5 x 7 = 35 5 x 8 = 40 5 x 9 = 45 5 x 10 = 50
از user بخواید یه عدد زیر ۵۰ وارد کنه و بعد از ۵۰ تا اون عددی که وارد کرده رو بهش نشان بدید. یعنی باید از ۵۰ رو به پایین و به سمت اون عددی که وارد کرده برید. (یه راهنمایی: سومین چیزی که به range میدید باید ۱- باشه).
از user بخواید که اسمش و یه عدد رو وارد کنه. اگه عددی که وارد کرده از ۱۰ کمتر باشه، اسمش رو به اون تعداد بهش نشان بدید. اگر هم از ۱۰ بیشتر بود، بهش بگید "!kheili ziade hosele nadaram".
اول یه متغیر به اسم total بسازید و اون رو مساوی صفر قرار بدید. بعد از user بخواید که ۵ تا عدد رو وارد کنه. بعد از هر بار که یه عدد رو وارد میکنه ازش بپرسید که آیا دوسداره اون عددی که وارد کرده رو با total جمع کنیم یا نه. اگه دوس داشت خب جمع کنید، اگرم دوس نداشت که هیچ. در آخر کار هم (یعنی وقتی هر ۵ عدد رو وارد کرد) مقدار جدیدِ total رو بهش نشان بدید.
از user بخواید که جهت بالا یا پایین رو انتخاب کنه. اگه «بالا» رو انتخاب کرد، ازش بخواید یه عدد به عنوان حد بالا (مثلاً بالای ۵۰) انتخاب کنه و از ۱ تا اون عدد رو بهش نشان بدید. اگه «پایین» رو انتخاب کرد، ازش بخواید یه عدد کمتر از ۲۰ رو انتخاب کنه و بعدش هم از ۲۰ تا اون عدد رو بهش نشان بدید.
از user بپرسید که چندتا مهمان قراره دعوت بشن به مهمانی. اگه تعداد مهمان ها از ۱۰ کمتر بود، اسم اون ۱۰ تا مهمان رو ازش بپرسید و بعد از پرسیدنِ اسمِ هر مهمان، بهش پیام بدید:
[Felani] davat shod.
به جای Felani هم اون اسم هایی که user وارد کرده رو مینویسید.
اگر هم تعداد مهمان ها بیشتر از ۱۰ بود، بهش پیام بدید که مثلاً تعداد خیلی زیاده و حوصله مهمانی نداریم!
یا علی.