آموزش دستورات break و continue در پایتون

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

به کمک حلقه یا loop می‌توانستم کارهای تکراری انجام دهیم. به‌طور کلی، از حلقه for برای پیمایش روی مجموعه‌ای از اعضا و از حلقه while برای اجرای یک قطعه کد تا زمانی که شرط برقرار باشد استفاده می‌کنیم. هر دو دستور break و continue در بدنه‌ی حلقه‌ها استفاده می‌شوند.

خوب است پیش از ادامه این آموزش با بحث حلقه‌ها آشنایی کافی داشته باشید. در جلسه حلقه در پایتون از دوره رایگان آموزش پایتون هر دو نوع حلقه را با هم بررسی کرده و نحوه trace و خطایابی آن‌ها را یاد گرفتیم. (اگر آشنایی ندارید پیشنهاد می‌کنم ابتدا آن جلسه را ببینید)

کاربردهای break و continue

بیایید به‌طور خلاصه مرور کنیم که این دو دستور چه هستند و سپس در بخش‌های بعدی با مثال‌های کامل‌تری آن‌ها را بررسی خواهیم کرد.

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

مثلاً فرض کنید می‌خواهیم در یک لیست پایتون بررسی کنیم که آیا عدد 5 وجود دارد یا نه. در این صورت باید حلقه‌ای روی اعضای لیست بنویسم. حال اگر مقدار یکی از اعضا برابر با 5 بود، دیگر نیازی به بررسی سایر اعضا نداریم؛ چون عملاً به نتیجه رسیده‌ایم. به‌طور کلی استفاده از دستور break در پایتون دو کاربرد کلی دارد:

  • متوقف کردن اجرای حلقه بعد از برقرار شدن یک شرط خاص (مثلاً پیدا کردن مقدار مورد نظر)
  • جلوگیری از اجرای مراحل اضافی در شرایط خاص

گاهی اوقات فقط احتیاج داریم که از همان اجرای حلقه گذر کرده ولی حلقه به‌طور کامل متوقف نشود. مثلاً در بدنه حلقه در حال پرینت کردن مقادیر هستیم. می‌خواهیم اگر یک شرط خاص برقرار بود، چیزی چاپ نشود و به سراغ مقدار بعدی برود. در چنین حالتی از دستور continue استفاده می‌کنیم.

منظور از continue در پایتون این است که اجرای این دفعه از بدنه حلقه را در شرایط خاص نادیده بگیر اما کل اجرای حلقه را متوقف نکن.

به‌طور خلاصه، break برای متوقف کردن اجرای حلقه پیش از اتمام مراحل آن و از continue برای عبور کردن از اجرای یک مرحله و رفتن به مرحله بعدی کاربرد دارد.

دستور break در پایتون

دستور break در مواقعی استفاده می‌شود که بخواهیم حلقه را بدون اجرای کامل آن متوقف کنیم. از این دستور معمولاً زمانی استفاده می‌کنیم که در صورت برقراری یک شرط خاص، اجرای سایر مراحل حلقه ضروری نباشد.

استفاده از break در حلقه for

فرض کنید می‌خواهیم در یک لیست از اعداد، دنبال عدد 3 بگردیم. در این صورت کدی شبیه به زیر داریم:

for number in range(10):
    if number == 3:
        print("Here it is!")
    print(number)

خروجی قطعه کد بالا چیزی شبیه به تصویر زیر می‌شود.

نمونه کد حلقه for بدون دستور break در پایتون
نمونه کد حلقه for بدون دستور break در پایتون

درست است که عدد 3 را پیدا کرده و پیام مرتبط را چاپ کردیم اما اجرای سایر دفعات حلقه که منجر به چاپ شدن اعداد 4 تا 9 شده است، ضرورتی نداشته است. برای اینکه وقتی عدد 5 را پیدا کردیم (شرط برقرار بود) به‌طور کامل از حلقه خارج شود و سایر مراحل را اجرا نکند، از دستور break درون شرط کمک می‌گیریم.

for number in range(10):
    if number == 3:
        print("Here it is!")
        break
    print(number)

# 0
# 1
# 2
# Here it is!

گاهی استفاده از دستور break در پایتون صرفاً باعث بهبود اجرای کد پایتون ما می‌شود؛ اما گاهی استفاده از آن ضروری و اجباری است!

فرض کنید در لیستی از اعداد دنبال «اولین عدد زوج» می‌گردیم تا آن را جایگزین مقدار 0 در متغیر even_number کنیم. کدی که احتمالاً در ابتدا می‌نویسیم چیزی شبیه به قطعه کد زیر است:

numbers = [1, 3, 7, 8, 9, 10]
even_number = 0

for num in numbers:
    if num % 2 == 0:
        even_number = num


print(even_number)

به نظرتان خروجی کد بالا چند است؟

اگر حلقه را trace کنیم می‌بینیم که یک‌بار برای عدد 8 شرط زوج بودن (یعنی num%2==0) برقرار می‌شود و مقدار even_number آپدیت می‌شود. (نحوه trace را در ویدئوی حلقه‌ها ببینید: کلیک کنید »)

اما در اجرای آخر حلقه، این شرط برای مقدار 10 نیز برقرار شده و مقدار نهایی متغیر ما 10 می‌شود. با اینکه شرط و حلقه ما صحیح است، اما نتیجه اشتباه است؛ چون 10 اولین عدد زوج لیست نیست.

برای اینکه پس از یافتن اولین عدد زوج، اجرای سایر مراحل حلقه را متوقف کنیم، از break استفاده می‌کنم:

numbers = [1, 3, 7, 8, 9, 10]
even_number = 0

for num in numbers:
    if num % 2 == 0:
        even_number = num
        break


print(even_number)

حالا اجرای حلقه با رسیدن به اولین عدد زوج (یعنی 8) متوقف می‌شود.

دستور break در while پایتون

یکی از مینی پروژه‌هایی که در دوره جامع پایتون زدم، استفاده از حلقه while True برای گرفتن پسورد تا زمانی که صحیح باشد بود. یکی از ۲ روشی که بحث کردیم، استفاده از break برای خروج از حلقه است. یعنی چیزی شبیه به کد زیر:

correct_password = "sabzdanesh"
while True:
    user_input = input("رمز عبور را وارد کنید: ")
    if user_input == correct_password:
        print("successfully logged in!")
        break
    else:
        print("Try again!")

این حلقه تا زمانی که رمز درست وارد شود ادامه دارد و در صورت صحیح بودن، با break متوقف می‌شود.

دستور continue در پایتون

دستور continue برای عبور از همان مرحله از اجرای حلقه و رفتن به مرحله بعد استفاده می‌شود. با این دستور، اجرای حلقه به مرحله بعدی منتقل می‌شود بدون اینکه سایر کدهای بدنه حلقه در همان دور اجرا شوند.

دستور continue در for

فرض کنید می‌خواهیم حلقه‌ای بنویسیم که فقط اعداد فرد را چاپ کند. در نگاه اول کدی شبیه به زیر داریم:

for num in range(10):
    if num % 2 == 0:
        continue
    print(num)

در آموزش عدد در پایتون با عملگر % آشنا شدیم. این عملگر باقی‌مانده تقسیم متغیر num بر ۲ را برمی‌گرداند. اگر صفر باشد یعنی بر ۲ بخش‌پذیر بوده و زوج است، وگرنه فرد.

کد بالا را می‌توانیم با continue در پایتون هم بنویسیم. یعنی به‌جای اینکه اعداد فرد را چاپ کنیم، اعداد زوج را نادیده بگیریم.

for num in range(10):
    if num % 2 != 0:
        print(num)

خروجی کد بالا در باکس زیر آمده است:

1
3
5
7
9

آیا همیشه می‌توانیم مشابه به همین مثال، حلقه با continue را بدون continue کرد و برعکس؟ باید بگویم احتمالاً بله، اما بستگی به مسئله و نیازمندی‌های کد شما دارد.

استفاده از continue در حلقه while

پیشنهاد می‌کنم سعی کنید ساختار کد (کمی پیچیده) زیر را بررسی و درک کنید که چه کاری انجام می‌دهد سپس توضیحاتش را بخوانید.

total = 0
while True:
    number = int(input("Enter the number: "))
    if number == -1:
        break
    if number <= 0:
        print("Just positive numbers!")
        continue
    total += number

print(f"Total: {total}")

در این قطعه کد مجموع اعداد مثبتی که کاربر وارد می‌کند را محاسبه کرده و در نهایت چاپ می‌کنیم. از input برای گرفتن ورودی از کاربر در پایتون استفاده کرده‌ام.

  • حلقه while True است؛ یعنی تا زمانی که آن را break نکنیم اجرا می‌شود.
  • در خط اول بدنه، با تابع int() مقدار دریافتی از کاربر را از رشته پایتونی به عدد تبدیل کرده‌ام.
  • اگر مقدار واردشده -1 بود، از حلقه خارج می‌شوم.
  • اگر صفر یا منفی بود، پیامی نشان می‌دهم که فقط باید اعداد مثبت را وارد کند. سپس با continue از اجرای بقیه‌ی بدنه صرف‌نظر کرده و به ابتدای دور بعدی حلقه می‌روم.
  • اگر هیچ شرطی برقرار نبود (حلقه break یا continue نشد) عدد جدید را با متغیر مجموع جمع می‌کنم.
فرمت دهی رشته متن در پایتون با format

فرمت دهی رشته متن در پایتون با format

جمع‌بندی: break و continue در پایتون

به‌عنوان جمع‌بندی، از break زمانی استفاده کنید که نیاز به متوقف کردن کل حلقه و خروج از آن را دارید. از continue زمانی استفاده کنید که می‌خواهید مرحله‌ای خاص را نادیده بگیرید. دستورهای break و continue در پایتون برای مدیریت جریان اجرای حلقه‌ها کاربرد دارند.

دستورکاربردنتیجه
breakمتوقف کردن حلقه در صورت برآورده شدن شرطخروج کامل از حلقه
continueعبور از یک مرحله خاص و رفتن به مرحله بعدادامه اجرای حلقه از مرحله بعدی
جمع‌بندی آموزش دستورهای continue و break در پایتون

با درک این دو دستور می‌توانید کدهای پایتونی بهینه‌تر و هوشمندانه‌تری بنویسید. اگر سؤال یا چالشی در استفاده از break و continue دارید در بخش دیدگاه‌های پایین همین آموزش مطرح کنید.