حلقه ها در پایتون با مثال و کد – به زبان ساده

۱۵۴
۱۴۰۴/۰۸/۱۹
۲۳ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

انواع حلقه ها در پایتون به حلقه for و حلقه while و حلقه‌های تو در تو تقسیم می‌شوند. البته هر کدام از آن‌ها می‌توانند بلوک else  هم داشته باشند. بنابراین انواع حلقه ها در پایتون شامل زیر مجموعه‌هایی مانند حلقه for-else، حلقه while-else  نیز هستند. برنامه نویسان با کمک این ساختارها می‌توانند بلوک خاصی از کد‌ها را به صورت منظم و تکراری، با تعداد مشخص، اجرا کنند. فرض کنید لیستی از اعداد صحیح داریم. اکنون باید عملیات ریاضی خاصی را بر روی یک به یک اعضای آن لیست انجام دهیم. یکی از بهترین ابزارها برای انجام این کار در پایتون، حلقه ها هستند. البته ممکن است استفاده از حلقه در روز‌های اول برنامه نویسی کمی سردرگم کننده باشد. اما به هر حال، تمام برنامه نویسان پایتون باید روش کار با حلقه‌ ها را بلد باشند.

آنچه در این مطلب می‌آموزید:
  • با مهم‌ترین ساختار‌های حلقه در پایتون آشنا شده و نام آن را یاد می‌گیرید.
  • با سینتکس حلقه for و روش تعریف و استفاده از آن آشنا می‌شوید.
  • متوجه می‌شوید که بلوک else چه عملکردی در حلقه ها دارد و چطور باید نوشته شود.
  • روش درست نوشتن سینتکس حلقه while را یاد گرفته و می‌توانید حلقه بی‌نهایت بسازید.
  • با عبارت‌های کنترل حلقه مانند break و continue و pass آشنا شده و عملکرد آن‌ها را می‌آموزید.
  • دلیل و روش استفاده و نحوه نوشتن حلقه‌های تو در تو را یاد می‌گیرید.
حلقه ها در پایتون با مثال و کد – به زبان سادهحلقه ها در پایتون با مثال و کد – به زبان ساده
فهرست مطالب این نوشته
997696

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

حلقه ها در پایتون چه کاربردی دارند؟

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

زبان‌های برنامه نویسی برای کمک به اجرای کدهای پیچیده‌، ساختارهای کنترلی متنوعی را فراهم کرده‌اند. حلقه ها یکی از ساختارهای بسیار خوب برای انجام این کار هستند. ساختار حلقه تقریبا در تمام زبان‌های برنامه نویسی وجود دارد.

فلوچارت حلقه

در نمودار پایین، روش کار حلقه ساده‌ای را به تصویر کشیده‌ایم.

نمونه‌ای از فلوچارت حلقه در پایتون
نمایش کلی عملکرد حلقه ها در پایتون با کمک نمودار

انواع حلقه در پایتون

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

  • حلقه while: این حلقه، ابتدا عبارت شرطی را بررسی می‌کند. تا زمانی که این عبارت، برابر با True  باشد، کد یا مجموعه‌ای از کدها را به صورت تکراری اجرا می‌کند. همیشه و در هر تکرار، قبل از اجرای کدها یکبار شرط داده شده را بررسی می‌کند.
  • حلقه for: این حلقه، زنجیره‌ای از دستورات را چندین بار مختلف، پشت سر هم اجرا می‌کند. برای تکرار حلقه for از متغیری به عنوان شمارنده حلقه استفاده می‌کنیم. تعریف کدهای شمارنده به صورت مختصر و کوتاه انجام می‌شود.
  • حلقه های تو در تو: برنامه نویسان پایتون می‌توانند یک یا چندین حلقه مختلف را به صورت تو در تو با هم استفاده کنند. هیچ محدودیتی در نوع حلقه ها و تعداد آن‌ها وجود ندارد.

در بخش‌های بعدی، تمام روش‌های نوشتن حلقه را با مثال بررسی کرده‌ایم.

عبارت‌های کنترل حلقه در پایتون

از عبارت‌های کنترل حلقه برای تغییر روند اجرای برنامه از حالت عادی خود استفاده می‌شود. هر وقت، فرایند اجرای حلقه ناگهان متوقف شود - با کمک این عبارت‌ها - تمام متغیر‌های تعریف شده در آن چرخه به صورت خودکار نابود می‌شوند.

تصویر روشن از بلوک‌های برنامه‌نویسی متصل با فلش‌ها

پایتون برای مدیریت اجرای حلقه ها چند «عبارت کنترلی» (Control Statement) فراهم کرده است. این موارد در فهرست زیر، معرفی شده‌اند.

  • break: هر وقت در بدنه دستورات حلقه به این کد برسیم، کل جریان حلقه متوقف می‌شود. سپس اجرای برنامه از اولین دستور بعد از بلوک حلقه ادامه پیدا می‌کند.
  • continue: در صورت برخورد به این دستور در بدنه کدهای حلقه، ادامه اجرای کدهای حلقه در چرخه فعلی متوقف شده و دوباره شرایط شمارنده حلقه بررسی می‌شود. در صورت برقرار بودن این شرایط، حلقه گردش بعدی را شروع می‌کند.
  • pass: در بعضی از بخش‌های برنامه، مانند داخل بلوک حلقه‌ها حتما باید کد نوشته شود، در غیر این صورت مفسر پایتون اعلام خطا می‌کند. بعضی وقت‌ها برنامه نویسی تمایلی به اجرای هیچ دستوری ندارد. برای مثال می‌خواهد که حلقه فقط به صورت خالی فقط بچرخد. در چنین شرایطی باید از عبارت pass استفاده بکند.

در بخش‌های بعدی مطلب، روش استفاده از تمام عبارت‌های بالا را با کمک مثال‌های کدنویسی شده، توضیح داده‌ایم.

با مطالعه مطلب، تا اینجا با انواع حلقه و عبارت‌های کنترلی آن‌ها به شکل کلی آشنا شده‌اید. در ادامه، این موارد را با شکل جزئی‌تری بررسی کرده‌ایم. در صورتی تمایل به مطالعه چنین مطالبی، پیشنهاد می‌کنیم از اپلیکیشن مجله فرادرس استفاده بکنید.

برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.

حلقه for

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

دستورات حلقه for به ترتیب در فهرست زیر آورده شده‌اند.

  1. این نوع حلقه ها با کلمه کلیدی for شروع می‌شوند.
  2. سپس باید نام متغیری را بنویسیم. این متغیر نماینده عنصر فعلی در هر گردش است. این متغیر همین‌جا تعریف شده و با پایان یافتن کار حلقه هم نابود می‌شود.
  3. بعد از آن کلمه کلیدی in  قرار می‌گیرد. این کلمه نشان می‌دهد که متغیر قبل از آن در کدام ساختار پیمایش‌پذیر حرکت خواهد کرد.
  4. بعد از in  هم نام همان ساختاری را می‌نویسیم که باید بر روی آن پیمایش کنیم.
  5. در آخر خط هم کاراکتر دونقطه «:» نوشته می‌شود.
  6. در بدنه حلقه باید دستورات مورد نظر را بنویسیم. این دستورات بر روی یک به یک عناصر اجرا خواهند شد. نکته مهم این است که دستورات بدنه حلقه دست‌کم، باید به اندازه یک دندانه نسبت به کد تعریف حلقه جلوتر نوشته شوند.

در بخش بعد، سینتکس حلقه for را نشان داده‌ایم.

سینتکس حلقه for

در کادر پایین تمام مشخصات سینتکس حلقه for را مشاهده می‌کنید.

تمام پارامتر‌های سینتکس بالا را در فهرست زیر توضیح داده‌ایم.

  • متغیر iterating_var نشان دهنده عنصر فعلی در هر چرخش حلقه است.
  • متغیر sequence  نام ساختار پیمایش‌پذیری است که بر روی عناصر آن پیمایش می‌کنیم.
  • عبارت statements  هم نشان‌دهنده دستور یا دستوراتی است که باید بر روی یک به یک عناصر موجود در ساختار sequence  - به صورت تکراری - اجرا شوند.

روش کار حلقه را به صورت قدم‌به‌قدم در فهرست پایین نوشته‌ایم.

  1. قبل از اجرای حلقه، ساختار sequence  بررسی می‌شود. اگر این ساختار پیمایش‌پذیر و حاوی عنصر باشد، اولین عنصر آن به متغیر iterating_var اختصاص داده می‌شود.
  2. برنامه وارد بدنه حلقه شده و تمام دستورات آن را اجرا می‌کند.
  3. در دور بعدی، بررسی می‌شود که آیا بعد از عنصر اختصاص داده شده به iterating_var در ساختار پیمایش‌پذیر، مقدار دیگری وجود دارد یا نه.
  4. اگر مقدار دیگری وجود داشت، این مقدار به متغیر iterating_var اختصاص داده شده و حلقه دوباره اجرا می‌شود. ادامه عملیات دوباره از مرحله 3 پیگیری می‌شود. در غیر این صورت اجرای برنامه به مرحله بعد می‌رود.
  5. عملیات حلقه به پایان رسیده و بلافاصله کد بعد از بلوک حلقه اجرا می‌شود.

در هربار اجرای حلقه، بلوک statements  به طور کامل اجرا می‌شود. این بلوک می‌تواند از مقدار iterating_var استفاده کرده یا بدون توجه به آن وظیفه دیگری را انجام بدهد. حلقه تا زمانی اجرا می‌شود که تمام عناصر موجود در ساختار پیمایش‌پذیر یک به یک به متغیر iterating_var اختصاص داده شوند.

فلوچارت حلقه for

در تصور پایین، فلوچارت حلقه for در پایتون را مشاهده می‌کنید.

فلوچارت برای نمایش روش کار حلقه for
در نمودار بالا می‌توانید روش کار حلقه for را مشاهده کنید.

اجرای حلقه for بر روی رشته در پایتون

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

مثال: حذف حروف صدادار از متن

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

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Btfl s bttr thn gly.
Explct s bttr thn mplct. 
Smpl s bttr thn cmplx.
Cmplx s bttr thn cmplctd.

اجرای حلقه for بر روی تاپل

شیء تاپل در پایتون، توالی از عناصر اندیس‌گذاری شده است. بنابراین می‌توانیم با کمک حلقه for بر روی تمام عناصر آن حرکت کنیم.

مثال: جمع تمام اعداد صحیح

در مثال زیر، با کمک حلقه for بر روی عناصر شیء تاپل پیمایش می‌کنیم. در این مثال، تمام عناصر تاپل، اعداد صحیح یا «Integer» هستند. هدف محاسبه نتیجه جمع تمام این اعداد با همدیگر است.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Total = 539

اجرای حلقه for بر روی لیست

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

مثال: تشخیص و چاپ اعداد زوج

در مثال زیر، لیستی از اعداد صحیح داریم. با کمک حلقه for می‌خواهیم تمام عناصر زوج آن را در خروجی چاپ کنیم.

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

34
54
78
44
80

حلقه for با اشیاء Range

اشیاء «Range» محدوده‌ای از اعداد را نشان می‌دهند. برای ساختن این شیء‌ها باید از تابع range در پایتون استفاده کنیم. تابع range()  یکی از توابع درونی پایتون است که توالی از اعداد را در خروجی برمی‌گرداند. خروجی این تابع شامل عناصری از جنس «Integer» است.

در کادر زیر، سینتکس تعریف تابع range() را نوشته‌ایم.

در سینتکس بالا سه پارامتر وجود دارند.

  • start: این پارامتر، عدد اول توالی را نشان می‌دهد. مقدار پیش‌فرض این پارامتر برابر با 0  است.
  • stop: مقدار این پارامتر، منهای 1، برابر با عدد آخر توالی است.
  • step: مقدار این پارامتر باید عدد صحیح باشد. این عدد مقدار افزایش هر عنصر بعد از عنصر قبلی در توالی را نشان می‌دهد. step  به صورت پیش‌فرض برابر با 1  است.
تصویر تزیینی از حلقه for با اشیاء Range

مثال: روش های مختلف پیاده سازی تابع range

در کادر پایین سه روش مختلف استفاده از تابع range() را به عنوان شمارنده حلقه for پیاده‌سازی کرده‌ایم.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

0 1 2 3 4
10 11 12 13 14 15 16 17 18 19
1 3 5 7 9

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

اشیاء دیکشنری در پایتون مانند اشیاء لیست، تاپل و رشته، عناصر خود را اندیس‌گذاری نمی‌کنند. هرچند این ساختار‌ها پیمایش‌پذیر هستند اما عناصر خود را به صورت توالی نگهداری نمی‌کنند.

مثال اول: چاپ تمام کلید‌های دیکشنری

در کادر پایین، برای پیمایش بر روی اشیاء دیکشنری از حلقه for استفاده کرده‌ایم. متغیر شمارنده در حلقه for هر بار به یکی از کلید‌های موجود در دیکشنری اشاره می‌کند.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

10
20
30
40

با توجه به مثال بالا، می‌بینید که شمارنده حلقه for  بر روی کلید‌های دیکشنری پیمایش می‌کند. از آن‌جا که به راحتی می‌توان به کلید‌های دیکشنری دسترسی داشت، در نتیجه مقادیر متناظر با آن هم در دسترس هستند. برای دسترسی به مقدار مربوط به هر کلید یا باید از براکت‌های باز و‌ بسته [] یا متد get() استفاده کنیم.

مثال دوم: چاپ تمام کلید‌ و مقدارهای دیکشنری

در مثال پایین، روش دسترسی همزمان به کلید‌ها و مقادیر دیکشنری را بررسی کرده‌ایم.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

10 : Ten
20 : Twenty
30 : Thirty
40 : Forty

نکته: متد‌های items()  و keys() و values() در کلاس دیکشنری به ترتیب اشیائی با نام‌های dict_items  و dict_keys  و dict_values  را برمی‌گردانند. به این متد‌ها «تکرارگر» یا «Iterators» گفته می‌شود. بنابراین با کمک حلقه for می‌توانیم بر روی آن‌ها هم پیمایش کنیم. این متدها هم جزو متد‌های دیکشنری در پایتون هستند. برای آشنایی با انواع متد‌های دیکشنری در پایتون پیشنهاد می‌کنیم که مطلب مربوط به آن را در مجله فرادرس، مطالعه کنید.

مثال سوم: متد items برای تعریف شمارنده حلقه

شیء dict_items  لیستی است که عناصر آن تاپل هستند. این تاپل‌ها هر کدام فقط از دو عنصر تشکیل شده‌اند. عناصر تاپل همان کلید و مقدارهای متناظر با هم در دیکشنری‌اند. در نتیجه حلقه for با کمک متد items() به راحتی می‌تواند بر روی عناصر دیکشنری پیمایش کند.

در کادر زیر، مثالی از انجام این عملیات را بررسی کرده‌ایم.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

(10, 'Ten')
(20, 'Twenty')
(30, 'Thirty')
(40, 'Forty')

چگونه از فرادرس برای یادگیری پایتون کمک بگیریم؟

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

مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python – مقدماتی تا پیشرفته فرادرس
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python از مقدماتی تا پیشرفته هدایت شوید.

فرادرس، به عنوان یکی از بهترین تولیدکنندگان فیلم‌های آموزشی در کشور، مجموعه آموزش‌های باکیفیتی را برای یادگیری زبان برنامه‌نویسی پایتون تولید و منتشر کرده است. پایتون جزو محبوب‌ترین و کاربردی‌ترین زبان‌های برنامه‌نویسی جهان است. در فهرست زیر، چند نمونه از آموزش‌های سطح متوسط و پیشرفته پایتون را معرفی کرده‌ایم. همه این آموزش‌ها توسط فرادرس تولید شده‌اند. اگر مایل باشید، با کلیک روی تصویر بالا می‌توانید به آموزش‌های بیشتری دسترسی پیدا کنید.

حلقه for با بلوک else

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

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

نکته: عبارت break  به برنامه اجازه می‌دهد که در صورت برقرار بودن شرط خاصی در میانه‌های حلقه از آن خارج شود. یعنی برنامه با کمک این عبارت از اجرای ادامه عملیات حلقه، صرفه‌نظر می‌کند.

فلوچارت حلقه for-else

در فلوچارت پایین، روش کار حلقه for-else  به شکل ساده نشان داده شده است.

حلقه for-else
در حلقه for-else اگر برنامه به عبارت break بربخورد، بلوک else اجرا نمی‌شود.

سینتکس حلقه for-else

در کادر پایین، سینتکس یا روش نوشتن صحیح حلقه for-else  را پیاده‌سازی کرده‌ایم.

مثال اول: ترکیب بلوک else با حلقه for

در مثال پایین، روش ترکیب عبارت else  را با عبارت for در پایتون نشان داده‌ایم.

  1. تا وقتی که مقدار متغیرcount  کمتر‌ از 6 است، شمارنده حلقه یا همان مقدار count  چاپ می‌شود.
  2. بعد از اینکه مقدار count  برابر با 5 شد، برای آخرین بار حلقه اجرا می‌شود.
  3. با مساوی شدن مقدار count  با عدد 6 کار حلقه به پایان رسیده و دیگر دستورات بدنه for اجرا نمی‌شوند. پس به سراغ اجرای بلوک else  می‌رویم.
  4. اکنون دستور print()  درون این بلوک اجرا می‌شود.
  5. سپس برنامه از بلوک for-else خارج شده و دستور نوشته شده در خط بعد را اجرا می‌کند. البته در کادر زیر فقط کدهای مربوط به بلوک for-else نوشته شده‌اند.

بعد از اجرای کد بالا، خروجی زیر، تولید شده و در کنسول پایتون نمایش داده می‌شود.

Iteration no. 1
Iteration no. 2
Iteration no. 3
Iteration no. 4
Iteration no. 5
for loop over. Now in else block
End of for loop

حلقه for-else با عبارت break

در مواقعی که اجرای حلقه for-else  توسط عبارت break  به اجبار متوقف می‌شود، مفسر پایتون بلوک else  را نادیده گرفته و از اجرای آن صرف نظر می‌کند.

نماد حلقه ها در پایتون با لوگوی پایتون و نماد بی‌نهایت

مثال: برخورد جریان کد در for-else با عبارت break

در برنامه پایین، روش کار بلوک else  در زمان قطع حلقه با دستور break  را مشاهده می‌کنید.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

T

همین‌طور که مشاهده کردید دستورات بلوک else  اصلا اجرا نشدند. این بلوک هیچ کاری انجام نداد، زیرا دستور break  به مفسر پایتون اجازه بررسی آن را نمی‌دهد.

حلقه while در پایتون

ساختار حلقه while  را در فهرست پایین به شکل کامل، توضیح داده‌ایم.

  1. این بلوک با استفاده از کلمه کلیدی while  شروع می‌شود.
  2. سپس عبارت شرطی مورد نظر نوشته می‌شود.
  3. در انتها کاراکتر دونقطه «:» قرار می‌گیرد.
  4. بعد از دو نقطه باید بلوکی از دستورات به صورت تو رفته نوشته شوند. این تو رفتگی کافی است که حداقل به اندازه یک کاراکتر باشد.
  5. حلقه while  در پایتون، بلوک کد داده شده را به صورت تکراری اجرا می‌کند. این تکرار تا زمانی است که شرط مشخص شده برابر با True  باشد.

برای نوشتن شرط می‌توانیم از هر عبارتی استفاده کنیم. اگر مقدار آن True  باشد، حلقه اجرا می‌شود. اگر مقدار آن False  بوده یا بعدا برابر با False  شود، اجرای حلقه متوقف شده و مفسر پایتون اولین خط کد بعد از بلوک while  را اجرا می‌کند.

اگر شرط نوشته شده در مقابل while  هیچ وقت False  نشود، حلقه به طور دائم اجرا می‌‌شود. اجرای حلقه، متوقف نمی‌شود مگر اینکه با اعمال زور از خارج آن را متوقف کنیم. به چنین حلقه هایی، حلقه بی‌نهایت گفته می‌شود. معمولا استفاده از حلقه های بی‌نهایت در برنامه‌های کامپیوتری توصیه نمی‌شود.

سینتکس حلقه while

در کادر پایین، سینتکس حلقه while  را در زبان برنامه نویسی پایتون نوشته‌ایم.

در زبان پایتون تمام عبارت‌هایی که با اندازه مساوی - برای مثال یک کاراکتر - تو رفتگی داشته باشند به عنوان بلوک شناخته می‌شوند. پایتون از دندانه‌گذاری به عنوان روشی برای دسته‌بندی عبارت‌ها و کدها استفاده می‌کند.

فلوچارت حلقه while

در تصویر پایین، با کمک فلوچارت، ساختار ساده حلقه while  را نمایش داده‌ایم.

فلوچارت ساختار ساده حلقه while 
فلوچارت ساده حلقه while

مثال اول: پیاده سازی عملکرد حلقه while

در مثال پایین عملکرد حلقه while  را نشان داده‌ایم. در این کد، تا زمانی که مقدار count  کمتر از ۵ است، دستورات درون بلوک while  اجرا می‌شوند.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Iteration no. 1
Iteration no. 2
Iteration no. 3
Iteration no. 4
Iteration no. 5
End of while loop

مثال دوم: اجرای حلقه با تعداد تکرار وابسته به کاربر

در این مثال، روش دیگری از کارکرد حلقه while  نمایش داده شده است. به این صورت که در هر بار اجرای حلقه، برنامه از کاربر می‌خواهد عددی را وارد کند. این فرایند تا زمانی تکرار می‌شود که کاربر رشته‌ رقمی - رشته‌های تشکیل شده از کاراکتر‌های ۰ تا ۹ - بنویسد. تابع isnumeric()  اگر مقدار ورودی معادل با عدد صحیح باشد،‌ True  برمی‌گرداند. در غیر این صورت برابر با False  می‌شود.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

enter a number..10
Your input 10
enter a number..100
Your input 100
enter a number..543
Your input 543
enter a number..qwer
End of while loop

حلقه while بی‌نهایت در پایتون

اگر شرط نوشته شده در مقابل عبارت while  هیچ وقت False  نشود، حلقه به حلقه بی‌نهایت تبدیل می‌شود. در زمان استفاده از حلقه های while  باید خیلی دقت کنیم. زیرا اگر شرط به روش صحیح نوشته نشود و همیشه True  باشد، عملیات حلقه هیچ‌وقت متوقف نمی‌شود. به این حلقه ها، حلقه بی‌نهایت گفته می‌شود.

تصویر روشن از حلقه while پایتون با نماد بی‌نهایت - حلقه ها در پایتون

البته حلقه های بی‌نهایت هم کاربردهای خودشان را دارند. در برنامه نویسی کلاینت‌-سرور می‌توان از حلقه های بی‌نهایت استفاده کرد. در این ساختار‌ها کامپیوتر‌های سرور باید به صورت دائم و همیشگی کار کنند. در این صورت کلاینت‌ها می‌توانند در مواقع نیاز با آن‌ها ارتباط برقرار کرده و درخواست ارسال کنند.

مثال: پیاده سازی حلقه بی نهایت

در کادر پایین با کمک مثال ساده‌ای روش کار حلقه های بی‌نهایت در پایتون را پیاده‌سازی کرده‌ایم.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Enter a number :20
You entered: 20
Enter a number :29
You entered: 29
Enter a number :3
You entered: 3
Enter a number :11
You entered: 11
Enter a number :22
You entered: 22
Enter a number :Traceback (most recent call last):
   File "examples\test.py", line 5, in
      num = int(input("Enter a number :"))
KeyboardInterrupt

توجه: با اجرای کد بالا، کامپیوتر وارد حلقه بی‌نهایتی می‌شود. این برنامه هرگز متوقف نمی‌شود، حتی با وارد کردن کاراکتر‌های نامعتبر. برای متوقف کردن آن باید از ترکیب دکمه‌های «CTRL» و «C» استفاده کنیم.

حلقه while-else در پایتون

در زبان برنامه نویسی پایتون می‌توانیم از بلوک else  به صورت یکپارچه با حلقه while  هم استفاده کنیم. اگر عبارت else  بعد از حلقه while  و به صورت یکپارچه با آن - در دندانه‌گذاری مساوی - نوشته شود، دستورات داخل این بلوک بلافاصله بعد از False  شدن while  و قبل از رفتن مفسر به سراغ خطوط اصلی برنامه، اجرا می‌شوند.

فلوچارت حلقه while-else در پایتون

در نمودار پایین، مسیر اجرای کدها در حلقه while-else  به صورت ساده نشان داده شده‌ است.

فلوچارت عملکرد حلقه while-else
در حلقه while-else اگر برنامه به عبارت break بربخورد بلوک else اجرا نمی‌شود.

مثال: ترکیب بلوک else با حلقه while

در مثال پایین، از ترکیب عبارت else  با حلقه while  استفاده کرده‌ایم.

  1. تا وقتی که مقدار متغیر count  کمتر از 5  است، هربار اندازه count  یک واحد زیاد شده و شماره پیمایش در خروجی چاپ می‌شود.
  2. به محض مساوی شدن count  با 5، دستور print()  درون بلوک else  اجرا می‌شود.
  3. سپس اجرای برنامه از اولین خط بعد از بلوک while-else  ادامه پیدا می‌کند.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Iteration no. 1
Iteration no. 2
Iteration no. 3
Iteration no. 4
Iteration no. 5
While loop over. Now in else block
End of while loop

حلقه های تو در تو در پایتون

یکی از جذاب‌ترین حلقه ها در پایتون، حلقه های تو در تو هستند. وقتی که یک یا چند حلقه مختلف را در داخل حلقه دیگری بنویسیم، «حلقه تو در تو» (Nested Loop) ساخته می‌شود. به حلقه اصلی، «حلقه خارجی» (Outer Loop) و به حلقه های تعریف شده در آن «حلقه داخلی» (Inner Loops) می‌گویند.

زبان برنامه نویسی پایتون به توسعه‌دهندگان اجازه می‌دهد که حلقه‌ای را در داخل حلقه دیگری تعریف کنند. می‌دانیم که وظیفه حلقه ها اجرای تکراری دستورات است. برای اجرای حلقه به صورت تو در تو هم می‌توانیم از حلقه های for و while استفاده کنیم.

نکته: هر نوع حلقه‌ای را می‌توان در داخل هر نوع حلقه دیگر نوشت. برای مثال می‌توانیم درون حلقه while، حلقه for بنویسیم و برعکس.

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

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

سینتکس حلقه for تو در تو

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

مثال: نمایش روز‌ها و ماه‌های سال در کنار هم

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

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

jan sun
jan mon
jan tue
feb sun
feb mon
feb tue
mar sun
mar mon
mar tue
Good bye!

حلقه while تو در تو در پایتون

یکی دیگر از انواع حلقه ها در پایتون، حلقه while  تو در تو است. به حلقه while  که در آن یک یا چند حلقه while  دیگر تعریف شده‌اند، حلقه while  تو در تو می‌گوییم. از حلقه های while  برای اجرای بلوک‌های کد به تعداد نامشخص استفاده می‌کنیم. این حلقه فقط وقتی متوقف می‌شود که ارزش بولین عبارت شرطی تعریف شده برای آن برابر با False  شود.

پایتون در داخل فلش‌هایی به عنوان نماد‌های حلقه

سینتکس حلقه while تو در تو

در کادر پایین سینتکس حلقه while  تو در تو را نوشته‌ایم. در این مثال هم برای سادگی نمایش از دو حلقه while  استفاده کردیم. اما هیچ محدودیتی در تعداد حلقه های while  وجود ندارد.

مثال: کشف اعداد اول

در برنامه زیر از حلقه while  به صورت تو در تو برای پیدا کردن اعداد اول بین 2  تا 100  استفاده کرده‌ایم.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

2 is prime
3 is prime
5 is prime
7 is prime
11 is prime
13 is prime
17 is prime
19 is prime
23 is prime
Good bye!

break در حلقه ها در پایتون

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

از دستور break  در پایتون زمانی استفاده می‌شود که در صورت به وجود آمدن شرایط مشخصی باید اجرای حلقه متوقف شود. از break  می‌توان هم در حلقه‌ for استفاده کرد و هم حلقه while.

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

سینتکس عبارت break

در کادر پایین روش استفاده از دستور break  را با کمک سینتکس آن بررسی کرده‌ایم.

  • looping statement: عبارت مربوط به حلقه است.
  • condition check: دستور شرطی است. در صورت برقرار بودن این شرط، دستور break  اجرا می‌‌شود.

فلوچارت حلقه با دستور break

در فلوچارت پایین روش کار حلقه با وجود دستور break  نمایش داده شده است.

فلوچارت حلقه با دستور break
در این تصویر، عملکرد دستور break در حلقه ها در پایتون را بررسی کرده‌ایم.

مثال: دستور break در حلقه for

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

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Current Letter : P
Current Letter : y
Current Letter : t
Good bye!

مثال دستور break در حلقه while

از دستور break  می‌توان در حلقه while  هم برای متوقف کردن جریان عادی حلقه استفاده کرد. فقط توجه کنید که برای بررسی حالت باید از شرط استفاده کنیم.

در کد زیر، روش استفاده از دستور break  درون حلقه while  را نشان داده‌ایم.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Current variable value : 10
Current variable value : 9
Current variable value : 8
Current variable value : 7
Current variable value : 6
Good bye!

دستور break در حلقه های تو در تو

می‌دانیم که حلقه تو در تو یکی از انواع رایج و پرکاربر حلقه ها در پایتون است. وقتی که از دستور break  در حلقه های تو در تو استفاده می‌کنیم یکی از دو حالت زیر اتفاق می‌افتد.

  • اگر دستور break  درون حلقه درونی نوشته شده باشد، فقط حلقه درونی متوقف شده و برنامه با اجرای دستورات بعد از آن ادامه پیدا می‌کند. توجه کنید که اگر هیچ دستوری بعد از آن نوشته نشده باشد، اجرای حلقه بیرونی به مرحله بعد می‌رود. در دور بعدی دوباره حلقه درونی اجرا خواهد شد.
  • وقتی که عبارت break  در حلقه بیرونی تعریف شود، با رسیدن مفسر پایتون به آن اجرای هر دو حلقه بیرونی و درونی متوقف شده و فرایند برنامه از اولین کد بعد از حلقه بیرونی ادامه پیدا می‌کند.

مثال: پیدا کردن عدد مشخص در ماتریس

در برنامه زیر، مثال ساده‌ای برای نمایش کاربرد دستور break  در حلقه for بررسی شده است. این حلقه بر روی لیست numbers  کار می‌کند. این لیست به شکل ماتریس نوشته شده است. در داخل آن به دنبال عدد 33  می‌گردیم. بنابراین باید از حلقه های تو در تو استفاده کنیم. بعد از پیدا شدن نتیجه، دیگر نیازی به ادامه حلقه نیست. پس با عبارت break  از آن خارج می‌شویم.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

number found in list

کاربرد عبارت continue در حلقه ها در پایتون

از عبارت continue  در پایتون برای توقف اجرای این دور از حلقه و شروع دور بعدی استفاده می‌شود. هر وقت که برنامه در بدنه دستورات حلقه با عبارت continue  روبه‌رو شود، از اجرای ادامه دستورات حلقه در این دور صرف نظر کرده و بلافاصله دور بعدی حلقه را شروع می‌کند. البته قبل از شروع دور بعد، عبارت شمارنده در حلقه for یا برقرار بودن شرط حلقه while  بررسی می‌شوند.

ساختار حلقه for در پایتون برای پرینت i

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

سینتکس عبارت continue در حلقه ها در پایتون

در کادر پایین سینتکس دستور continue  را در حلقه نوشته‌ایم.

در سینتکس بالا به‌جز continue دو عبارت دیگر وجود دارند. آن‌ها را در فهرست پایین معرفی کرده‌ایم.

  • looping statement: کد مربوط به تعریف حلقه است.
  • condition check: عبارت شرطی است که در صورت برقرار بودن آن دستور continue  اجرا می‌‌شود.

فلوچارت حلقه با دستور continue

در فلوچارت پایین روش کار حلقه با وجود دستور continue  نمایش داده شده است.

فلوچارت حلقه با دستور continue
عملکرد حلقه با وجود دستور continue در آن

مثال: دستور continue با حلقه for

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

در کادر زیر از دستور continue  در حلقه for استفاده کرده‌ایم. با این روش، از نمایش حرف h  در کلمه python  جلوگیری شده است.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : o
Current Letter : n
Good bye!

دستور continue با حلقه while

دستور continue در پایتون با حلقه while  هم مانند حلقه های for کار می‌کند. یعنی از اجرای ادامه دستورات در این دور از حلقه منصرف شده و مستقیم به سراغ اجرای دور بعدی حلقه - در صورت برقرار بودن شرط while  - می‌رود.

در کد پایین می‌خواهیم برنامه‌ای برای شناسایی عوامل اول عدد داده شده بنویسیم. در حل این مسئله از حلقه while  و دستور continue  استفاده می‌کنیم. برای پیدا کردن عامل‌های اول آن عدد ابتدا باید عدد داده شده را تقسیم بر دو کنیم. اگر عدد بر دو بخش‌پذیر بود، آن را چاپ می‌کنیم و سپس نتیجه را محاسبه می‌کنیم. نتیجه تقسیم را در متغیر num  ذخیره کرده و سپس مقسوم علیه را یک واحد افزایش می‌دهیم.این فرایند به همین‌ شکل ادامه پیدا می‌کند تا زمانی که باقیمانده برابر با ۱ یا کمتر از آن شود.

بعد از اجرای کد بالا، با فرض اینکه در ورودی عدد 60  را نوشته‌ایم، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Prime factors for: 60
2
2
3
5

اکنون عدد دیگری را در ورودی وارد می‌کنیم. برای مثال عدد 75  را نوشته‌ایم. بعد از آن، نتایج بدست آمده به شکل زیر نمایش داده خواهند شد.

Prime factors for: 75
3
5
5

پیاده سازی پروژه ‌های پایتون در فرادرس

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

در پایین چند مورد از فیلم‌های پروژه‌محور پایتون را معرفی کرده‌ایم.

در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی هدایت شده و فیلم‌های پروژه‌محور بیشتری را تماشا کنید.

مجموعه آموزش پروژه محور برنامه نویسی پایتون (Python)
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش پروژه محور برنامه نویسی پایتون هدایت شوید.

کاربرد عبارت pass در حلقه ها در پایتون

از عبارت pass در پایتون،‌ زمانی استفاده می‌کنیم که از لحاظ سینتکسی باید دستور خاصی نوشته شود، اما برنامه نویسان نمی‌خواهند هیچ کدی را اجرا کنند. عبارت pass  در زمان اجرا هیچ کاری انجام نمی‌دهد. اغلب اوقات از عبارت pass  به عنوان «نگهدارنده فضا» (Placeholder) استفاده می‌شود. یعنی برنامه نویسان جایی از pass  استفاده می‌کنند که در حال حاضر ایده‌ای ندارند اما باید در آینده آنجا برنامه نویسی کنند. تنها هدف فعلی از نوشتن این کد آن است که به برنامه برای اجرای بدون خطا کمک کنند.

برای نمونه، در توابع یا تعریف کلاس‌هایی که هنوز پیاده‌سازی نشده‌اند، برای جلوگیری از بروز خطا سینتکس می‌توانیم عبارت pass  را بنویسیم. علاوه بر این در داخل عبارت‌های کنترل جریان برنامه - مانند for و while  - هم می‌توانیم از عبارت pass  به عنوان Placeholder استفاده کنیم.

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

مثال: استفاده از pass در حلقه for

در کد پایین، روش استفاده از عبارت pass  را در حلقه for  در پایتون بررسی کرده‌ایم.

بعد از اجرای کد بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n
Good bye!

مثال: حلقه بی‌نهایت با کمک عبارت pass

با کمک عبارت pass  به راحتی می‌توان حلقه بی‌نهایت در پایتون ایجاد کرد. در کادر زیر، حلقه بی‌نهایتی را نوشته‌ایم که در واقع هیچ کاری انجام نمی‌دهد. بلکه فقط بار‌ها و بار‌ها اجرا می‌شود.

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

جمع‌بندی

در این مطلب از مجله فرادرس انواع حلقه ها در پایتون را بررسی کرده‌ایم. به طور کل انواع حلقه ها به ساختار‌های for و while  تقسیم می‌شوند. البته در زبان برنامه نویسی پایتون می‌‌توان از بلوک else  هم در انتهای حلقه ها استفاده کرد. دستورات این بلوک بلافاصله با پایان روند عادی کار حلقه‌ها اجرا می‌شوند. مفسر پایتون فقط وقتی دستورات بلوک else  را نادیده می‌گیرد که روند طبیعی کار حلقه با روبه‌رو شدن با دستور break  متوقف شود. حلقه بی‌نهایت یکی از حلقه های کاربردی و در عین حال خطرناک پایتون است. برای نوشتن این حلقه ها بهتر است که از while  استفاده کنیم.

ساختار‌های کنترل حلقه با عبارت‌های break  و continue  و pass  نام‌گذاری شده‌اند. هر کدام از این ساختار‌ها با هدف انجام وظیفه منحصر به فردی به کار برده می‌شوند. نوع دیگری از حلقه ها حلقه‌ تو در تو هستند. در این ساختار می‌توان یک یا چند حلقه مختلف را در داخل همدیگر به شکل موازی یا عمقی تعریف کرد. در زبان برنامه نویسی پایتون با کمک حلقه های تو در تو، بلوک else  و ساختارهای کنترل حلقه می‌توانیم، مسیر‌های اجرای کد پیچیده‌ای را طراحی کنیم. به همین دلیل برنامه نویسان پایتون باید در کار با انواع حلقه مهارت پیدا بکنند.

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
tutorialspoint
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *