حلقههای while
دستور شرطی if تنها یکبار اجرا میشود و در صورت برقرار بودن شرط، مقدار True و در غیر اینصورت False را برمیگرداند. اما حلقه while این توانایی را دارد که تا زمانی که شرط برقرار است، بارها و بارها اجرا شود. به عبارت دیگر، تا زمانی که شرط حلقه while True باشد، بدنهی آن اجرا خواهد شد. زمانی که شرط برقرار نباشد، یعنی مقدار آن False شود، اجرای حلقه متوقف میشود. در مثال زیر، متغیر i از مقدار ۱ شروع میشود و تا زمانی که مقدار آن کمتر یا مساوی ۵ باشد، حلقه ادامه خواهد یافت:
i = 1
while i <= 5:
print(i)
i = i + 1
print("Finished!")
خروجی:
1
2
3
4
5
Finished!
نکته: به هر بار اجرای بدنهی یک حلقه، تکرار یا iteration گفته میشود. نوع خاصی از حلقهها وجود دارد که به آنها حلقه بینهایت میگوییم؛ زیرا شرط آنها همیشه برقرار است و هیچگاه متوقف نمیشوند، مگر اینکه برنامه را بهصورت دستی متوقف کنیم. مثال:
while 1 == 1:
print("In the loop")
این برنامه تا بینهایت عبارت In the loop را چاپ میکند. برای متوقف کردن اجرای چنین برنامهای میتوانید از کلیدهای Ctrl + C استفاده کنید.
دستور break در پایتون
اگر بخواهید قبل از رسیدن به انتهای شرط حلقه، اجرای آن را متوقف کنید، میتوانید از دستور break استفاده کنید. این دستور بلافاصله باعث خروج از حلقه میشود، بدون توجه به شرط آن. مثال زیر این رفتار را نشان میدهد:
i = 0
while True:
print(i)
i = i + 1
if i >= 5:
print("Breaking")
break
print("Finished")
خروجی:
0
1
2
3
4
Breaking
Finished
نکته: استفاده از break خارج از حلقه منجر به خطای برنامهنویسی میشود.
دستور continue در پایتون
دستور continue نیز مانند break در داخل حلقهها استفاده میشود، با این تفاوت که بهجای توقف کامل حلقه، فقط اجرای فعلی را نادیده میگیرد و مستقیماً به تکرار بعدی میرود. مثال زیر رفتار آن را نمایش میدهد:
i = 0
while True:
i = i + 1
if i == 2:
print("Skipping 2")
continue
if i == 5:
print("Breaking")
break
print(i)
print("Finished")
خروجی:
1
Skipping 2
3
4
Breaking
Finished
در این مثال، زمانی که i برابر با ۲ میشود، چاپ آن رد شده و مستقیماً به مرحله بعدی حلقه میرود. نکته: استفاده از continue خارج از حلقه نیز مانند break منجر به خطا خواهد شد.
استفاده از else در حلقههای while (تغییرات جدید پایتون)
پایتون این امکان را فراهم کرده تا بتوانید پس از پایان طبیعی یک حلقه while (یعنی بدون خروج با دستور break) از بلاک else استفاده کنید. این بلاک فقط زمانی اجرا میشود که حلقه بدون هیچگونه break تمام شده باشد. مثال:
i = 1
while i <= 5:
print(i)
i += 1
else:
print("Loop completed successfully!")
در اینجا پس از اجرای کامل حلقه و بررسی شرط i <= 5، چون break وجود ندارد، بخش else اجرا میشود. اما اگر در میانهی حلقه از break استفاده کنیم، بخش else نادیده گرفته خواهد شد. مثال:
i = 1
while i <= 5:
print(i)
if i == 3:
break
i += 1
else:
print("Loop completed successfully!")
در این مثال، چون break باعث توقف حلقه در میانه راه شده، بخش else اجرا نمیشود.