حلقه های while

در یک حلقه ی while تا زمانی که وضعیت یک شرط برابر با True باشد حلقه تکرار می شود. زمانی که وضعیت این شرط به False تغییر کند نیز حلقه ی while از کار می افتد.

فرض کنید بخواهیم 10 عدد اول (1 تا 10) را در خروجی نمایش دهیم. گفتیم که یک راه حل این مسئله 10 بار استفاده از تابع print است؛ اما آیا 10 بار استفاده از این تابع به معنای 10 بار نوشتن تابع است؟


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


در کد زیر از حلقه ی while استفاده میکنیم تا با کاهش تعداد خط های برنامه، اعداد 1 تا 10 را در خروجی نمایش دهیم:

i = 1
while i <= 10:
    print(i)
    i += 1

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

اجزای برنامه ی بالا به شرح زیر هستند:

1- مقدار دهی اولیه ی متغیر: حلقه ها نیاز به یک مقدار دهی اولیه دارند تا شروع به کار کنند. معمولا از یک متغیر برای این مسئله استفاده می شود و مقدار این متغیر در بدنه حلقه تغییر می کند. معمولا برای این متغیر از حرف i (مخفف incrementor: افزایش دهنده) استفاده میکنیم اما هر نام متغیر قابل استفاده ای را برای این متغیر میتوان در نظر گرفت. در کد بالا برای این منظور i = 1 را میبینید.

2-تنظیم حلقه ی while: این حلقه با کلمه ی کلیدی while شروع می شود. در ادامه ی while باید یک Boolean قرار بگیرد یا یک گزاره که نتیجه ی آن Boolean باشد. تا زمانی که این گزاره True باشد حلقه متوقف نمی شود و زمانی که برابر با False شود حلقه دیگر اجرا نمی شود. در کد بالا به این منظور داریم: while i <= 10

3- دستورات: مانند عبارات شرطی که پیشتر بررسی کردیم برای تفکیک بلوک کد داخلی حلقه (که در صورت برقرار بودن شرط حلقه باید اجرا شوند) از indentation استفاده میکنیم. در این قسمت هر تعداد خط و دستوری که که باید اجرا شود را می نویسیم، تا زمانی که برنامه ی ما درست باشد، حلقه نیز بدون مشکل اجرا می شود. این بخش از کد در هر اجرای حلقه اجرا می شود. در کد بالا دستور print(i) را میبینید.

4- افزایش: از ابتدای شروع حلقه ی بالا بعد از بررسی وضعیت شرط، i نمایش داده می شود و یک واحد به i افزوده می شود. اگر i افزایش پیدا نکند و از 10 عبور نکند این حلقه هیچوقت به پایان نمیرسد و بدون شک خروجی دلخواهمان را نمی بینیم. در کد بالا در هر تکرار حلقه افزایش تنها یک واحد رخ می دهد اما میتوانیم با هر میزانی که میخواهیم افزایش داشته باشیم.در کد بالا برای این منظور i += 1 را میبینید.


نکته:

اگر زمانی در یک حلقه ی بینهایت گیر افتادید برای فرار از این مسئله باید ترمینال را ببندید یا کرنل ژوپیتر نوت بوک را ری استارت کنید.