با کمک حلقه for میتوانیم دستور یا مجموعهای از دستورات را به تعداد مشخص اجرا کنیم. بنابراین دیگر نیاز نیست که کدهای ثابتی را چند بار، پشت سر هم و به صورت تکراری بنویسیم. تقریبا در بیشتر اپلیکیشنهای بزرگ از این ابزار استفاده میشود. در نتیجه کسب مهارت در کار با حلقههای پایتون بخصوص حلقه for برای توسعهدهندگان این زبان، ضروری است. به منظور درک بهتر عملکرد حلقه for و کسب تجربه در کار با این ابزار کاربردی بهتر است که چند نمونه سوال حلقه for در پایتون را بررسی کنیم. نمونه سوالات مطرح شده در این مطلب از موارد ابتدایی تا نکات پیشرفته را پوشش میدهند. سعی کنید روش حل تمام این سوالات را یاد بگیرید.
آنچه در این مطلب میآموزید:
-
با تابع range آشنا شده و روش استفاده از آن را برای تعریف شمارنده حلقه for یاد میگیرید.
-
میآموزید که چگونه با کمک حلقه for در پایتون بر روی دیکشنریها پیمایش کنید.
-
روش کار با تابع zip را برای ادغام دیکشنریها با کمک مثال سادهای میآموزید.
-
چند مثال مختلف درباره پیمایش بر روی لیست را بررسی میکنید.
-
روش نوشتن حلقههای تو در تو را با کمک مثال یاد میگیرید.
-
استفاده از عبارتهای continue و break در داخل حلقه for را یاد میگیرید.



در این مطلب از مجله فرادرس چند نمونه سوال حلقه for در پایتون را بررسی میکنیم. ابتدا از انجام عملیات سادهای مانند پیمایش کاراکترهای رشته و استفاده از تابع range() شروع میکنیم. اما در ادامه، مسائل رفتهرفته پیچیدهتر و حرفهای تر میشوند. در مسائل پیشرفته سعی کردیم که سناریوهای نزدیک به دنیای واقعی را پیادهسازی بکنیم. پیشنهاد میکنیم که در هر نمونه سوال قبل از بررسی پاسخ خودتان تلاش کنید که آن را حل کنید.
پیمایش بر روی حروف رشته
در این سوال، رشتهای داده شده است. باید با کمک حلقه for بر روی کاراکترهای آن پیمایش کرده و یک به یک آنها را در خروجی چاپ کنیم.
قبل از حل این سوال بهتر است با ساختار «رشته» (String) در پایتون آشنا شده باشید.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for روی یک به یک کاراکترهای رشته Faradars پیمایش میکنیم.
- در هر تکرار، شمارنده i برابر با مقدار یکی از کاراکترهای رشته میشود. این کار به ترتیب و از سمت چپ به راست اتفاق میافتد.
- سپس با دستور print(i) ، کاراکتر مورد نظر چاپ میشود.

استفاده از تابع range
در این سوال باید با کمک تابع range در پایتون بر روی محدودهای از اعداد پیمایش کرده و آنها را در خروجی نمایش بدهیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در ادامه، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for و تابع range(5) روی اعداد 0 تا4 پیمایش میکنیم.
- در این حلقه j نقش متغیر شمارنده را بازی میکند.
- در هر تکرار، شمارنده j مقدار خود را از تابع range() دریافت میکند. سپس این مقدار با کمک دستور print(j) چاپ میشود.
چاپ مضارب عدد ۳ در محدوده مشخص
اکنون میخواهیم مضارب عدد ۳ را در داخل محدوده مشخص شده چاپ بکنیم. برای تعریف کردن محدودهای از اعداد میتوانیم تابع range() را به کار ببریم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for و تابع range(3, 20, 3) روی اعدادی از 3 تا 19 با گام 3 پیمایش میکنیم.
- در هر تکرار، یکی از مضارب ۳ در متغیر i قرار گرفته و با دستور print(i) چاپ میشود.
تا به اینجای مطلب، چند نمونه سوال حلقه for در پایتون را بررسی کردهاید. این موارد ساده بودند. در ادامه با نمونه سوالات پیچیدهتری روبهرو میشوید. در صورتی که به این نوع موضوعات علاقهمند هستید، پیشنهاد میکنیم همیشه جدیدترین مطالب اپلیکیشن مجله فرادرس را مطالعه بکنید.
برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.
چاپ اعداد به شکل معکوس
در این مسئله باید برنامهای بنویسیم که با کمک حلقه for اعداد را از رقم مشخص شده تا 1 به صورت معکوس چاپ بکند.
راهنمایی: برای حل این سوال هم میتوان از تابع range() استفاده کرد.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for و تابع range(10, 0, -1) از 10 تا 1 با به شکل معکوس، پیمایش میکنیم.
- در هر تکرار، مقدار شمارنده i یک واحد کم شده و با دستور print(i) چاپ میشود.

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

مجموعه آموزشی با نام «مجموعه آموزش پروژه محور برنامه نویسی پایتون» در فرادرس تولید شده است. در این مجموعه، روش پیادهسازی پروژههای واقعی و گوناگون آموزش داده میشود. فیلمهای پروژهمحور فرادرس موضوعات ساده تا پیشرفته را پوشش میدهند. در هر یک از فیلمهای آموزشی، تکنولوژیها و کتابخانههای مختلفی به کار برده شدهاند. برخی از پروژهها با استفاده از برنامه نویسی شیءگرا پیادهسازی شدهاند و برخی دیگر با API-های پایتون کار میکنند. با مرور این آموزشها میتوانید مهارتهای خود را به میزان چشمگیری افزایش دهید.
در پایین، چند فیلم آموزشی پروژهمحور زبان پایتون را معرفی کردهایم.
پیمایش بر روی دیکشنری
در این نمونه سوال حلقه for در پایتون میخواهیم بر روی ساختمان داده دیکشنری پایتون پیمایش کرده و تمام کلیدها و مقدارهای آن را به ترتیب در مقابل هم نمایش بدهیم. برای حل این سوال میتوانیم از متدهای دیکشنری در پایتون استفاده بکنیم.
در کادر پایین، با کمک تابع keys() این مثال را حل کردهایم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for روی تک به تک کلیدهای دیکشنری programmingLanguages پیمایش میکنیم.
- در هر تکرار، یک از کلیدهای دیکشنری در متغیر key قرار میگیرد.
- سپس با دستور print() کلید و مقدار مربوط به آن چاپ میشود.
در کادر پایین، این مثال را با کمک تابع items() حل کردهایم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
متد items() هم یکی از متدهای دیکشنری در پایتون است. از این متد برای دسترسی به کلیدها و مقادیر مربوط به آنها در دیکشنری استفاده میشود.
- با حلقه for و متد items() روی تک به تک جفتهای کلیدمقدار در دیکشنری programmingLanguages پیمایش میکنیم.
- در هر تکرار، کلید در متغیر key و مقدار مربوط به آن در متغیر value قرار میگیرد.
- سپس با دستور print(key, value) چاپ میشوند.
استفاده از تابع zip برای پیمایش موازی
در این سوال دو لیست هم اندازه داده شدهاند. باید برنامهای بنویسیم که به شکل موازی بر روی این دو لیست، پیمایش کرده و عناصر متناظر آنها را چاپ کند. عناصر متناظر، عناصری هستند که اندیس یکسانی دارند.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for و تابع zip() روی عناصر لیستهای a1 و b2 پیمایش میکنیم.
- در هر تکرار، عنصر لیست a1 در متغیر i و عنصر متناظر لیست b2 در متغیر j قرار میگیرد. سپس با دستور print(i, j) چاپ میشوند.

استفاده از عبارت else در حلقه for
کد نوشته شده در بلوک else بعد از پیمایش موفق حلقه for اجرا میشود. پیمایش موفق به معنی آن است که شمارنده به طور کامل در حلقه اجرا شود. در پایتون اگر در میانه کار حلقه به عبارت break برخورد کند، پیش از پیمایش کامل متوقف میشود. برای آشنایی بیشتر با ساختار حلقه for و عبارت else میتوانید فیلم آموزش رایگان پایتون، برنامه نویسی سریع و آسان در ۱۴۰ دقیقه + گواهینامه را در فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
در این مسئله باید از عبارت else در بلوک حلقه for استفاده کنیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
Jasmine
Lotus
Rose
Sunflower
Done
در فهرست پایین، مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for روی تک به تک عناصر لیست flowers پیمایش میکنیم.
- در هر تکرار، مقدار موجود در متغیر f قرار میگیرد و با دستور print(f) چاپ میشود.
- پس از پایان حلقه، بلوک else اجرا شده و عبارت Done چاپ میشود.
پیمایش بر روی لیست
در این نمونه سوال حلقه for در پایتون، لیستی داده شده است. این لیست شامل نام چند حیوان مختلف است. باید عناصر لیست داده شده را به ترتیب در خروجی چاپ کنیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for روی تک به تک عناصر لیست AnimalList پیمایش میکنیم.
- در هر تکرار، مقدار موجود در متغیر x قرار گرفته و با دستور print(x) چاپ میشود.
محاسبه مجموعه مقادیر لیست
در این سوال لیستی از اعداد صحیح داده شده است. باید تابعی بنویسیم که با کمک حلقه for مجموعه تمام مقادیر درون لیست را محاسبه کرده و در خروجی نمایش بدهد.
بعد از اجرای کدهای بالا، خروجی به صورت عدد 10 در کنسول نمایش داده میشود. البته با تغییر دادن اعداد درون لیست خروجی هم به همان نسبت تغییر خواهد کرد. در فهرست پایین، مراحل کار این کد را توضیح دادهایم.
- در خط اول، تابعی به نام sum_list تعریف میکنیم. این تابع پارامتری به نام input_list میگیرد.
- داخل تابع متغیری به نام summed_values را با مقدار اولیه 0 میسازیم. این متغیر جمع اعداد را نگه میدارد.
- با استفاده از حلقه for و شمارنده value روی عناصر input_list پیمایش میکنیم.
- در هر بار اجرای حلقه، مقدار شمارنده value را به summed_values اضافه میکنیم. این شمارنده هر بار برابر با یکی از عناصر input_list لیست است.
- پس از پایان حلقه، مقدار نهایی summed_values را با return برمیگردانیم.
- در خط آخر تابع sum_list را با آرایه [1, 2, 3, 4] صدا میزنیم و نتیجه را چاپ میکنیم.

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

در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- ابتدا تابعی به نام avg_list تعریف میکنیم. این تابع، پارامتری با نام input_list دریافت میکند.
- متغیر summed_values را با مقدار اولیه 0 تعریف میکنیم. در این متغیر میخواهیم مجموع تمام اعداد لیست را جمع کنیم.
- متغیر دیگری نیز به نام number_of_values و با مقدار اولیه 0 در خط ۳، ایجاد میکنیم. این متغیر، تعداد عناصر لیست را میشمارد.
- با استفاده از حلقه for روی تک به تک عناصر لیست پیمایش میکنیم.
- در هر تکرار حلقه، مقدار value را به summed_values اضافه میکنیم.
- همزمان مقدار متغیر number_of_values را یک واحد افزایش میدهیم تا تعداد عناصر ثبت شود.
- پس از پایان حلقه، مقدار summed_values را بر تعداد عناصر لیست یا number_of_values تقسیم میکنیم تا میانگین به دست آید.
- در خط آخر، تابع avg_list را با لیست [1, 2, 3, 4] صدا میزنیم.
دو برابر کردن عناصر لیست
تابعی بنویسید که در ورودی لیستی را به عنوان پارامتر دریافت کند. سپس در خروجی هم لیستی برگرداند که عناصر آن دو برابر عناصر لیست دریافت شده هستند.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را توضیح دادهایم.
- در خط اول، ابتدا تابعی به نام multiply تعریف میکنیم. این تابع پارامتری با نام input_list دریافت میکند.
- در خط دوم، متغیری به نام output را با مقدار اولیه لیست خالی [] میسازیم. این متغیر برای ذخیره کردن نتایج به کار برده خواهد شد.
- با استفاده از حلقه for روی تک به تک عناصر input_list پیمایش میکنیم.
- در هر تکرار حلقه، عنصر جاری ele را دو برابر کرده سپس با کمک متد append() به لیست output اضافه میکنیم.
- پس از پایان حلقه، لیست output را با return برمیگردانیم.
- در خط آخر، تابع multiply را با لیست [1, 2, 3, 4] صدا میزنیم و نتیجه چاپ میشود. خروجی برنامه لیست [2, 4, 6, 8] خواهد بود.
در تصویر پایین فلوچارت روش کار کدهای بالا را رسم کردهایم.

کشف بزرگترین عنصر لیست
در این نمونه سوال حلقه for در پایتون، لیستی از اعداد داده شده است. باید با کمک حلقه for برنامهای بنویسید که بزرگترین عنصر این لیست را پیدا کرده و در خروجی چاپ بکند.
بعد از اجرای کدهای بالا، عدد 80 به عنوان بزرگترین عنصر در کنسول نمایش داده میشود. در فهرست پایین، مراحل اجرای این کد را توضیح دادهایم.
- با حلقه for روی تک به تک عناصر لیست numbers پیمایش میکنیم.
- در هر تکرار، بررسی میکنیم که آیا مقدار موجود در متغیر n بزرگتر از متغیر max است.
- اگر بزرگتر بود، مقدار n را در متغیر max ذخیره میکنیم.
- پس از پایان حلقه، بزرگترین عدد لیست در متغیر max قرار دارد و با دستور print(max) چاپ میشود.
کشف کوچکترین عنصر درون لیست
در این مسئله لیستی از اعداد صحیح داده شده است. باید برنامهای برای پیدا کردن کوچکترین عنصر لیست بنویسیم. لازم است این عملیات با کمک تابع for پیادهسازی شود.
بعد از اجرای کدهای بالا، عدد 1 به عنوان کوچکترین عنصر در کنسول نمایش داده میشود.

در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- در خط اول، با حلقه for روی تک به تک عناصر لیست numbers پیمایش میکنیم.
- در خط دوم متغیر min را تعریف کرده و برابر با 1000 گذاشتهایم. البته روش بهتر حل مسئله آن است که مقدار این متغیر برابر با اولین عنصر از لیست numbers قرار داده شود.
- در هر تکرار، بررسی میکنیم که آیا مقدار موجود در متغیر n کوچکتر از متغیر min است.
- اگر کوچکتر بود، مقدار n را در متغیر min ذخیره میکنیم.
- پس از پایان حلقه، کوچکترین عدد لیست در متغیر min قرار دارد و با دستور print(min) چاپ میشود.
نوشتن تابع توان
تابعی به نام pow() بنویسید. این تابع باید دو پارامتر دریافت کند. پارامتر اول، لیستی از اعداد است و پارامتر دوم فقط یک عدد صحیح است.
تابع باید تمام عناصر لیست دریافت شده را به توان پارامتر دوم برساند و در خروجی به صورت لیست نمایش بدهد. برای ساخت این تابع از حلقه for در پایتون استفاده بکنید.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
[1, 4, 9, 16]
[1, 8, 27, 64]
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- در خط اول، تابعی به نام pow() تعریف میکنیم. این تابع دو پارامتر دریافت میکند.
- در خط دوم، متغیری به نام output را با مقدار اولیه یک لیست خالی میسازیم تا نتایج در آن قرار بگیرد.
- با استفاده از حلقه for روی تک به تک عناصر لیست ورودی پیمایش میکنیم.
- در هر تکرار حلقه، عنصر جاری ele را به توان power میرسانیم. سپس مقدار بهدستآمده را با استفاده از append() به لیست output اضافه میکنیم.
- پس از پایان حلقه، لیست output را بهعنوان نتیجه نهایی برمیگردانیم.
در خطهای آخر، تابع pow() را دو بار با لیست [1, 2, 3, 4] صدا میزنیم، یکبار با توان 2 و یکبار با توان 3.
حلقه های تو در تو
در این سوال دو لیست مختلف داده شدهاند. باید با کمک حلقه for به صورت تو در تو تمام عناصر لیست دوم را به ترتیب در مقابل همه عناصر لیست اول چاپ کنیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
5 Tomatoes
5 Potatoes
5 Carrots
5 Cucumbers
10 Tomatoes
10 Potatoes
10 Carrots
10 Cucumbers
15 Tomatoes
15 Potatoes
15 Carrots
15 Cucumbers
20 Tomatoes
20 Potatoes
20 Carrots
20 Cucumbers
در فهرست پایین، مراحل اجرای این کد را به شکل کلی توضیح دادهایم.
- با دو حلقه for تو در تو بر روی لیستها پیمایش میکنیم.
- حلقه بیرونی روی تک به تک عناصر list1 و حلقه درونی روی تک به تک عناصر list2 اجرا میشود.
- در هر تکرار حلقه درونی، مقدارهای جاری x و y در دستور print(x, y) چاپ میشوند.
استفاده از عبارت break در داخل حلقه for
در این نمونه سوال حلقه for در پایتون باید از دستور break استفاده بکنیم. این دستور کاربرد زیادی در مدیریت و کنترل اجرای حلقهها دارد. برنامه نویسان این زبان، بهتر است در کار با انواع حلقه ها در پایتون مهارت کافی داشته باشند. در صورت نیاز به کمک در این زمینه، پیشنهاد میکنیم مطلب مربوط به آن را در مجله فرادرس مطالعه بکنید.

در مثال پایین، لیستی از وسایل نقلیه مختلف داده شده است. باید حلقه for بر روی این لیست پیمایش کرده و نام عناصر را چاپ کند. اما به محض روبهرو شدن با کلمه Bus پیمایش متوقف بشود.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for روی تک به تک عناصر لیست vehicles پیمایش میکنیم.
- در هر بار گردش حلقه، مقدار موجود در متغیر v بررسی میشود.
- اگر مقدار v برابر Bus باشد، دستور break اجرا شده و حلقه متوقف میشود.
- در غیر این صورت، مقدار v با دستور print(v) چاپ میشود.

استفاده از عبارت continue در داخل حلقه for
در این نمونه سوال حلقه for در پایتون، لیستی از نامهای وسایل نقلیه داده شده است. باید تمام اعضای این لیست به غیر از Bus را در خروجی چاپ بکنیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for روی تک به تک عناصر لیست vehicles پیمایش میکنیم.
- در هر تکرار، مقدار موجود در متغیر v بررسی میشود.
- اگر مقدار v برابر Bus باشد، دستور continue اجرا میشود. با اجرا شدن این دستور، حلقه از انجام بقیه کار صرف نظر کرده و دور بعدی پیمایش خود را شروع میکند. بنابراین عبارت Bus چاپ نمیشود.
- در غیر این صورت، مقدار v با دستور print(v) چاپ میشود.
کشف مضارب ۵ در لیست
اکنون باید برنامهای بنویسید که با کمک حلقه for در پایتون تمام مضارب عدد ۵ را از لیست داده شده پیدا کرده و در خروجی چاپ کند.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for تک به تک عناصر لیست numbers را پیمایش میکنیم.
- در هر تکرار، با کمک عبارت شرطی if n%5 == 0 بررسی میکنیم که آیا مقدار موجود در متغیر n بر 5 بخشپذیر است یا نه.
- اگر بخشپذیر بود، مقدار n با دستور print(n) چاپ میشود.
چاپ مثلث با کاراکتر ستاره
اکنون باید برنامهای بنویسیم که از حلقه for برای چاپ شکل مثلث با کاراکتر * استفاده کند.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با دو حلقه for تو در تو در محدوده مورد نظر، پیمایش میکنیم.
- حلقه بیرونی روی اعداد 1 تا 4 تابع (range(1,5)) اجرا میشود.
- حلقه درونی به تعداد i در حلقه بیرونی اجرا شده و در هر تکرار یک ستاره * بدون رفتن به خط بعدی چاپ میکند. عبارت end= به معنای آن است که بعد از چاپ رشته در خروجی به خط بعد نرو!
- پس از پایان هر پیمایش کامل حلقه درونی، دستور print() اجرا شده و به خط بعدی میرویم تا الگوی ستارهها شکل بگیرد.
کپی کردن لیستها با کمک حلقه for
در این سوال، لیستی با چند عنصر داده شده است. باید برنامهای بنویسیم که با کمک حلقه for اعضای این لیست را در لیست دیگر کپی کند.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون، نمایش داده میشود.
['Mango', 'Banana', 'Orange']
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با حلقه for روی تک به تک عناصر لیست list1 پیمایش میکنیم.
- در هر تکرار، مقدار موجود در متغیر i را با استفاده از متد append() به لیست list2 اضافه میکنیم.
- پس از پایان حلقه، لیست list2 با دستور print(list2) چاپ میشود.

مرتبسازی اعداد درون لیست به شکل صعودی
لیستی به نام numbers داده شده است. باید برنامهای بنویسیم که تمام عناصر درون لیست را به ترتیب صعودی مرتب کرده و سپس لیست جدید را در خروجی چاپ کند.
برای حل این مسئله بهتر است با الگوریتمهای مرتبسازی آشنا باشید. به طور کل برنامه نویسان پایتون باید بتوانند انواع این الگوریتمها را پیادهسازی کنند.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با کمک دو حلقه for به صورت تو در تو روی اندیسهای لیست numbers پیمایش میکنیم.
- حلقه بیرونی روی اندیسهای 0 تا یکی کمتر از طول لیست (range(0, len(numbers))) اجرا میشود.
- حلقه درونی روی اندیسهای بعد از ایندکس i+1 تا پایان لیست، اجرا میشود.
- در هر بار گردش حلقه درونی، مقادیر موجود در numbers[i] و numbers[j] را مقایسه میکنیم.
- اگر مقدار numbers[i] بزرگتر از numbers[j] بود، آنها را با استفاده از متغیر موقت temp جابهجا میکنیم.
- پس از پایان کار برنامه، لیست numbers به ترتیب صعودی مرتب شده و با دستور print(numbers) چاپ میشود.
مرتبسازی اعداد درون لیست از بزرگ به کوچک
در این نمونه سوال حلقه for در پایتون، لیست numbers داده شده است. باید برنامهای بنویسیم که تمام عناصر درون لیست را به ترتیب نزولی از بزرگ به کوچک مرتب کرده و سپس لیست جدید را در خروجی چاپ کند.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- با کمک دو حلقه for به صورت تو در تو روی اندیسهای لیست numbers پیمایش میکنیم.
- حلقه بیرونی روی اندیسهای 0 تا یکی کمتر از انتهای لیست (range(0, len(numbers))) اجرا میشود.
- حلقه درونی روی اندیسهای بعد از ایندکس فعلی حلقه بیرونی، یعنی از i+1 تا پایان لیست، اجرا میشود.
- در هر بار اجرای حلقه درونی، مقادیر numbers[i] و numbers[j] را مقایسه میکنیم.
- اگر مقدار numbers[i] کوچکتر از numbers[j] باشد، آنها را با استفاده از متغیر موقت temp جابهجا میکنیم.
- پس از پایان حلقهها، لیست numbers به ترتیب نزولی مرتب شده و با دستور print(numbers) چاپ میشود.
خواندن داده از فایل خارجی
در این نمونه سوال حلقه for در پایتون، باید تابعی بنویسیم که به عنوان ورودی آدرس فایلی را دریافت کند. در خروجی تابع هم میانگین اعداد موجود در فایل محاسبه شده و نمایش داده شوند. برای حل این سوال باید مهارت مربوط به کار با فایلها را بلد باشید. در صورت نیاز به کسب اطلاعات اولیه در این حوزه پیشنهاد میکنیم که فیلم آموزش رایگان خواندن و نوشتن فایل ها در پایتون را در فرادرس مشاهده بکنید. برای کمک به مخاطبان مجله، لینک این فیلم را در پایین نیز قرار دادهایم.
راهنمایی: برای خواندن عناصر درون فایل تمام آنها را در لیست ذخیره بکنید. با کمک توابع sum و len میتوانید میانگین این عناصر را به راحتی محاسبه کنید. نسبت به وجود ردیفهای خالی و دادههای غیرعددی هوشیار باشید. برای خط به خط خواندن فایل از حلقه for استفاده کنید.
در فایل مورد نظر دادههای زیر را نوشتهایم.
بعد از اجرای کدهای بالا بر روی این فایل، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
Bad value: Faradars
23.75
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- ابتدا تابعی به نام average_from_file() را تعریف میکنیم. این تابع، پارامتری با نام filename دریافت میکند.
- متغیری به نام grade_list میسازیم. مقدار اولیه آن را برابر با لیست خالی قرار میدهیم. از این متغیر برای ذخیره اعداد معتبر استفاده خواهیم کرد.
- با دستور with open(filename) as file فایل موردنظر را باز میکنیم.
- با استفاده از حلقه for روی تک به تک خطوط فایل پیمایش میکنیم.
- در هر تکرار حلقه با کمک شرط if line.strip() ابتدا بررسی میکنیم که آیا خط خوانده شده شامل فاصله یا خط خالی هست یا نه. اگر کاراکتر فضای خالی نبود، ادامه میدهیم.
- داخل بلوک try تلاش میکنیم مقدار خوانده شده را به عدد اعشاری تبدیل کنیم. اگر تبدیل موفق باشد، مقدار عددی را به لیست grade_list اضافه میکنیم.
- اگر تبدیل مقدار به عدد ممکن نباشد، خطای ValueError ایجاد شده و برنامه وارد بخش except میشود. در این حالت پیام «Bad value» را همراه با مقدار نادرست چاپ میکنیم.
- پس از به پایان رسیدن فایل، مجموع تمام مقدارهای موجود در لیست grade_list را محاسبه کرده و بر تعداد آنها تقسیم میکنیم. اینطوری مقدار میانگین بهدست میآید.
- در خط آخر، تابع average_from_file() را با نام فایل for_data.txt صدا میزنیم.

شبیه سازی پرتاب سکه
در این سوال باید تابعی برای شبیهسازی پرتاب سکه بنویسیم. این تابع در ورودی تعداد پرتاب سکه را به صورت عدد صحیح دریافت میکند. در خروجی نیز باید نتیجه هر پرتاب را با کاراکترهای H و T نشان بدهد.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود. این خروجی به صورت تصادفی تولید شده است. ممکن است در کامپیوتر شما فرق بکند.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- ابتدا تابعی به نام coin_toss() تعریف میکنیم. این تابع پارامتری با نام number دریافت میکند.
- داخل تابع، کتابخانه random را ایمپورت میکنیم.
- با دستور random.seed(503) مقدار اولیه تولید اعداد تصادفی را تثبیت میکنیم. در نتیجه با هر اجرای برنامه همان دنباله تصادفی تولید شود.
- متغیری به نام output میسازیم و مقدار اولیه آن را رشته خالی قرار میدهیم. از این متغیر برای ذخیره نتایج پرتابها استفاده خواهیم کرد.
- با استفاده از حلقه for روی بازه range(number) پیمایش میکنیم. یعنی حلقه به تعداد پرتابها اجرا میشود.
- در هر تکرار حلقه، با دستور random.randint(0, 1) یک عدد تصادفی بین 0 و 1 تولید میکنیم و آن را در متغیر toss ذخیره میکنیم.
- اگر toss برابر 0 باشد، رشته H را به عنوان نماد شیر به متغیر output اضافه میکنیم. در غیر این صورت T را به عنوان نماد خط، اضافه میکنیم.
- پس از پایان حلقه، رشته output را برمیگردانیم. این رشته شامل نتایج تمام پرتابها است.
در خط آخر، تابع coin_toss() را با پارامتر 10 صدا میزنیم. نتیجه به صورت رشته دهکاراکتری مانند HHTHTTHHHT چاپ میشود.
محاسبه احتمال روی دادن شیر یا خط
در این نمونه سوال حلقه for در پایتون، باید تابعی به کمک این حلقه بنویسیم. هدف از این برنامه آن است که احتمال روی دادن T و H را محاسبه کند.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول نمایش داده میشود. این خروجی با توجه به اعداد تصادفی تولید شده است. ممکن است در کامپیوتر شما فرق بکند. هر چه مقدار اعداد تصادفی بیشتر باشد خروجی به ۵۰-۵۰ نزدیکتر میشود.
در فهرست پایین، تمام مراحل اجرای تابع coin_toss_probability() را قدمبهقدم توضیح دادهایم. تابع انداختن تاس در بخش قبلی توضیح داده شده بود.
- در خط ۱۶، ابتدا تابعی به نام coin_toss_probability() تعریف میکنیم.
- در خط ۱۷، درون این تابع، با استفاده از تابع coin_toss(number) رشتهای از نتایج پرتاب سکه تولید کرده و آن را در متغیر result ذخیره میکنیم.
- دو متغیر head_count و tail_count را با مقدار اولیه 0 میسازیم تا تعداد شیرها و خطها را بشماریم.
- با استفاده از حلقه for روی تک به تک کاراکترهای رشته result پیمایش میکنیم.
- اگر کاراکتر جاری H باشد، مقدار head_count را یک واحد افزایش میدهیم.
- اگر کاراکتر جاری T باشد، مقدار tail_count را یک واحد افزایش میدهیم.
- پس از پایان حلقه، احتمال شیر را با تقسیم تعداد شیرها (head_count) بر طول کل رشته (len(result)) و احتمال خط را با تقسیم تعداد خطها (tail_count) بر طول کل رشته محاسبه میکنیم.
- در نهایت، یک تاپل شامل دو مقدار احتمال شیر و احتمال خط برمیگردانیم.

محاسبه اعداد سری فیبوناچی از ۰ تا ۵۰
در این نمونه سوال حلقه for در پایتون، باید برنامهای برای محاسبه اعداد سری فیبوناچی بنویسیم. سپس با کمک این برنامه، عناصر این سری را از ۰ تا ۵۰ شناسایی کرده و در خروجی چاپ بکنیم. برنامه باید با استفاده از حلقه for نوشته شود.
بعد از اجرای کدهای بالا، خروجی زیر، تولید شده و در کنسول پایتون نمایش داده میشود.
در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- ابتدا دو متغیر a و b را با مقادیر 0 و 1 میسازیم تا دو عنصر اول از سری فیبوناچی را نگه دارند.
- اول، عددa را با دستور print(a) چاپ میکنیم.
- با حلقه for ۵۰ بار پیمایش میکنیم تا اعداد سری فیبوناچی تولید شوند.
- در هر تکرار، عدد بعدی سری را با جمع a + b محاسبه کرده و در متغیر next_fib ذخیره میکنیم.
- اگر next_fib از 50
بزرگتر شد، حلقه با break متوقف میشود. - در غیر این صورت، عدد next_fib را چاپ میکنیم.
- سپس مقادیر a و b را بهروزرسانی میکنیم. با کمک دستورات a = b و b = next_fib این متغیرها برای تکرار بعدی آماده میشوند.
یادگیری مفاهیم پایتون از مبتدی تا پیشرفته
پایتون گزینهای بسیار مناسب برای توسعه نرمافزارهای مدرن و پیچیده است. سینتکس آن به زبان انسان نزدیک بوده و همین موضوع مراحل یادگیری و کار با آن را سادهتر میکند. برای افراد علاقهمند به شغلهای برنامه نویسی، یادگیری پایتون با استفاده از فیلمهای آموزشی، انتخاب مناسبی است. وبسایت فرادرس یکی از تولیدکنندگان قدرتمند فیلمهای آموزش پایتون به شمار میرود. فرادرس سالهاست به شکل اختصاصی به تولید فیلمهای آموزشی در حوزههای مختلف میپردازد و به همین دلیل تخصص و تجربه بالایی در این زمینه دارد.
در پایین، چند مورد از فیلمهای آموزشی پایتون را معرفی کردهایم. این فیلمها برای آموزش سطوح پیشرفته پایتون مفید هستند.
در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی هدایت شده و از فیلمهای پروژهمحور بیشتری دیدن کنید.

شمارش تعداد حروف و ارقام در رشته
اکنون باید برنامهای بنویسیم که ابتدا رشته خاصی را از کاربر دریافت بکند. کاربر مجاز به نوشتن هر رشتهای است. برنامه باید تعداد حروف و رقمهای نوشته شده در رشته را شمرده و در خروجی به شکل صحیح اعلام کند. برای مثال اگر کاربر رشته Rashidi1234 را وارد کرد در خروجی باید پیغام زیر نوشته بشود.
The input string Rashidi1234 has 7 letters and 4 digits.
در کادر پایین راه حل این مسئله را پیادهسازی کردهایم.
بعد از اجرای کدهای بالا و با فرض نوشتن رشته Faradars 54321 به عنوان ورودی، خروجی زیر تولید شده و در کنسول نمایش داده میشود.
The input string Faradars 54321 has 8 letters and 5 digits.
توجه کنید که برنامه بالا کاراکتر خالی را هم به عنوان یکی از کاراکترهای حروف الفبا در نظر گرفته است. در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- ابتدا با دستور input() رشتهای از کاربر دریافت کرده و در متغیر user_input ذخیره میکنیم.
- دو متغیر digits و letters را با مقدار اولیه 0 میسازیم تا تعداد ارقام و حروف را شمارش کنیم.
- با حلقه for روی تک به تک کاراکترهای رشته user_input پیمایش میکنیم.
- اگر کاراکتر جاری عدد باشد (i.isdigit() )، مقدار متغیر digits یک واحد افزایش مییابد.
- اگر کاراکتر جاری حرف باشد (i.isalpha() )، مقدار متغیر letters یک واحد افزایش مییابد.
- در پایان، تعداد حروف و ارقام موجود در رشته همراه با خود رشته با دستور print() چاپ میشود.
سنجش اعتبار کلمه عبور با کمک حلقه for
فرض کنیم برای تایید هویت کاربران اپلیکیشن خود باید برنامهای بنویسیم. شرایط زیر را برای کلمه عبور تعریف کردهایم.
- کلمه عبور در کمترین حالت از ۸ و در بیشترین حالت از ۱۶ کاراکتر تشکیل شده باشد.
- حداقل یک حرف کوچک در کلمه عبور وجود داشته باشد.
- حداقل یک حرف بزرگ در کلمه عبور وجود داشته باشد.
- در کمترین حالت از یک عدد در کلمه عبور استفاده شده باشد.
- حداقل یکی از کاراکترهای ویژه در کلمه عبور به کاربرده شده باشند.
برنامه نوشته شده باید در ورودی کلمه عبور را دریافت کرده و در خروجی معتبر بودن یا نبودن آن را اعلام بکند.

راهنمایی: باید با کمک حلقه for بر روی یک به یک کاراکترهای رشته داده شده پیمایش بکنیم. سپس از چند فلگ برای بررسی شرایط استفاده بکنیم.
در کادر پایین، راه حل این سوال نوشته شده است.
بعد از اجرای کدهای بالا و با فرض نوشتن رشته Mostafa1234@ عبارت Valid Password در کنسول نمایش داده میشود. در فهرست پایین، تمام مراحل اجرای این کد را قدمبهقدم توضیح دادهایم.
- ابتدا با دستور input() رشتهای از کاربر گرفته و در متغیر password ذخیره میکنیم.
- از خط ۶ تا ۱۰ چند متغیر بولی میسازیم. مقدار اولیه همه آنها را برابر با False قرار میدهیم. از این متغیرها برای بررسی معیارهای پسورد استفاده میکنیم.
- در خط ۱۵ بررسی میکنیم که طول پسورد بین ۸ تا ۱۶ کاراکتر باشد. اگر بود، متغیر has_valid_length برابر True میشود.
- از خط ۲۱ به بعد با حلقه for روی تک به تک کاراکترهای پسورد پیمایش میکنیم و هر معیار را بررسی میکنیم.
- اگر کاراکتر حرف کوچک باشد، has_lower_case = True میشود.
- اگر حرف بزرگ باشد، has_upper_case = True میشود.
- اگر عدد باشد، has_digits = True میشود.
- اگر یکی از کاراکترهای ویژه @ و $ و _ و # و ^ و & و * باشد، مقدار متغیر has_special_characters هم برابر با True میشود.
- در نهایت، اگر همه متغیرهای بررسی شده True باشند، پسورد معتبر است و پیام Valid Password چاپ میشود. در غیر این صورت، پیام Invalid Password چاپ میشود.
جمعبندی
در این مطلب آموزشی از مجله فرادرس، ۳۰ نمونه سوال حلقه for در پایتون را بررسی کردهایم. گاهی اوقات لازم است عمل خاصی را چندین بار اجرا کنیم. در چنین شرایطی تکرار دستی کد منطقی و کاربردی نیست. به همین دلیل از حلقهها استفاده میکنیم. با کمک حلقه میتوانیم بخشهای مشخصی از برنامه را به صورت تکراری و کنترلشده اجرا کنیم. حلقهها علاوه بر کاهش حجم کد، خوانایی و سرعت توسعه برنامه را نیز بیشتر میکنند. در ضمن برنامه نویس میتواند با کمک حلقه، منطقهای پیچیده را به شکل سادهتری پیادهسازی کند.
تمرینات این مطلب شامل چاپ کاراکترهای رشته، استفاده از range() برای اعداد معکوس یا مضارب، پیمایش موازی با zip() ، کاربرد دستورهای break و continue، محاسبه مجموع، میانگین و توان عناصر لیست، مرتبسازی صعودی و نزولی، چاپ الگوهای مثلثی، شبیهسازی پرتاب سکه و محاسبه احتمال هستند. تمام تمرینها با کمک حلقه for نوشته شدهاند. این مجموعه ابزاری عالی برای یادگیری عملی و حل مسائل واقعی در برنامه نویسی است. به خوانندگان پیشنهاد میکنیم ابتدا خودشان تمرینها را حل کرده و سپس راه حلهای نوشته شده را بررسی کنند.
source
