حلقۀ while

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

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

ساختار کلی حلقۀ while

در پیچیده‌ترین حالت ممکن، این حلقه شامل یک آغازگر با عبارت while به همراه یک شرط اجرا می‌باشد که با دو نقطه به پایان می‌رسد. سپس در ادامه بدنه اصلی حلقه ظاهر می‌شود، که همگی دارای تورفتگی یکسان و برابر نسبت به خط آغازین هستند. بدنۀ اصلی تا زمانی که شرط مقابل عبارت while درست باشد اجرا خواهد شد. بخش بعدی این دستور یعنی بخش else آن اختیاری است. یعنی می‌توانید از این بخش بنا به نیاز برنامه استفاده نکنید. این بخش از کد در صورتی که حلقه به‌طور کامل اجرا شده و خاتمه یابد اجرا خواهد شد. در ادامه درس با دستور break آشنا خواهید شد که کار آن خاتمه دادن حلقه بدون بررسی شرط اجرای آن است. که در این صورت دستورات داخل بخش else اجرا نشده و برنامه از دستور بعدی حلقه به اجرای خود ادامه می‌دهد. شاید بهتر بود به‌جای عبارت else در این دستور از done یا on_completion استفاده می‌شد. اگر قبلاً با زبان‌های دیگری برنامه نوشته باشید حتماً با حالتی مواجه شده‌اید که باید پس از اتمام اجرای حلقه؛ در صورت کامل اجرا شدن آن کار خاصی را انجام دهید. در این حالت معمولاً شمارندۀ حلقه با مقدار پایانی مقایسه می‌شود. اما با فراهم آمدن دستور else برای حلقه این کار به‌صورت بسیار راحت‌تر و منطقی‌تری قابل اجرا است.

while <test>:     # شرط حلقه
    <statements1> # بدنۀ اصلی حلقه
else:             # بخش انتخابی
    <statements2> # اجرا زمانی که حلقه با روند عادی خاتمه یابد

مثال‌هایwhile

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

>>> while 1:
...     print 'Press Ctrl+C to stop me!'
...
Press Ctrl+C to stop me!
Press Ctrl+C to stop me!
Press Ctrl+C to stop me!
.....

مثال بعدی برنامه‌ای است که از مقدار متغییر a تا متغییر b را می‌شمارد. منطق استفاده شده بسیار شبیه زبان C است. معمولاً از چنین روش‌هایی در زبان پایتون استفاده نمی‌شود. بلکه با دستورات معادل و بسیار ساده‌تر و قابل‌فهم‌تر می‌توان به‌راحتی این برنامه را پیاده‌سازی کرد.

>>> a=0; b=10
>>> while a < b:
     print a,
     a = a+1

0 1 2 3 4 5 6 7 8 9

در این مثال با استفاده از کاراکتر ; دو دستور در سطر اول نوشته شده است. این کاراکتر در زبان C برای نمایش پایان دستور استفاده می‌شود. در پایتون نیز می‌توان از این کاراکتر و با همان هدف استفاده کرد. نکتۀ بعدی استفاده از یک ویرگول در انتهای دستور چاپ است. در حالت عادی دستور چاپ بعد از هر بار اجرا به سطر پایین می‌رود. ولی با استفاده از ویرگول عملیات چاپ از خط فعلی ادامه می‌یابد.