استفاده از else با while

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

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


سینتکس پایه while-else

ساختار کلی استفاده از else با while به صورت زیر است:

while شرط:
    # کدهای حلقه
else:
    # کدهای بلوک else

نکته کلیدی اینجاست که بلوک else فقط زمانی اجرا می‌شود که حلقه به صورت طبیعی و بدون وقفه (مثلاً با دستور break) پایان یابد.

سناریو اجرای else
شرط while نادرست شود ✅ اجرا می‌شود
استفاده از break ❌ اجرا نمی‌شود

مثال کاربردی

فرض کنید می‌خواهیم بررسی کنیم آیا عددی اول است یا خیر:

number = 11
i = 2

while i < number:
    if number % i == 0:
        print(f"{number} عددی اول نیست")
        break
    i += 1
else:
    print(f"{number} عددی اول است")

در این مثال اگر حلقه بدون برخورد به break کامل شود، بلوک else اجرا شده و پیام مناسب نمایش داده می‌شود.

تفاوت با حلقه for-else

این ساختار مشابه استفاده از else با حلقه for است. در هر دو حالت:

  • else پس از اتمام طبیعی حلقه اجرا می‌شود
  • در صورت وقفه (break) اجرا نمی‌شود
  • حتی اگر حلقه اصلاً اجرا نشود (شرط ابتدا نادرست باشد) else اجرا می‌شود

برای مطالعه بیشتر می‌توانید به منبع مراجعه کنید.

استفاده از else با while می‌تواند خوانایی کد را بهبود بخشد و نیاز به استفاده از پرچم‌های اضافی (flag) برای تشخیص اتمام طبیعی حلقه را از بین ببرد.

موارد استفاده متداول

برخی کاربردهای رایج این ساختار عبارتند از:

  1. جستجوی عناصر در لیست یا ساختارهای داده
  2. اعتبارسنجی ورودی‌ها
  3. بررسی شرایط خاص در پردازش‌های تکراری
  4. پیاده‌سازی الگوریتم‌های عددی

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