حلقههای 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
اجرا نمیشود.