آشنایی با دستور continue در ساختار لوپ while در زبان برنامه نویسی پایتون


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

در این آموزش با دستور continue که یکی دیگر از دستورهای قابل استفاده در لوپ ها است آشنا خواهیم شد که به نوعی جریان اصلی اجرای دستورهای داخل یک لوپ را تغییر می دهد. در ادامه، اجرای این دستور را در قالب ارائه ی آن در یک مثال بررسی می کنیم به این شکل که می خواهیم برنامه ای بنویسیم که اعداد زوج یک رقمی مثبت یعنی 8، 6، 4، 2، و 0 را به ترتیب از بزرگ به کوچک در خروجی چاپ کند.

به خاطر داشته باشید
این توضیح را در نظر می گیریم که عدد زوج عددی است که بر 2 بخش پذیر است؛ یعنی باقیمانده ی تقسیم آن بر 2 برابر با 0 است. اعداد فرد هم در مقابل اعداد زوج قرار می گیرند؛ به عبارت دیگر باقیمانده ی تقسیم آن ها بر 2 عددی غیر از صفر است.

برای نوشتن این برنامه می توانیم از یک لوپ while برای تکرار عملیات چاپ اعداد استفاده کنیم، اما باید دقت کنیم که برنامه ی خود را به صورتی بنویسیم که اگر یک عدد زوج داشتیم در خروجی چاپ شود و اگر به عدد فرد در لوپ رسیدیم از آن بگذریم. برنامه را به صورت زیر کدنویسی می کنیم و در فایلی تحت عنوان ContinueStatement.py ذخیره می کنیم:

x = 10
while x:
    x -= 1 # Or, x = x-1
    if x % 2 != 0:
        continue # Odd? Skip print(x)
    print(x)

خروجی برنامه ی بالا به صورت زیر است:

===== RESTART: C:\SokanAcademy\ContinueStatement.py =====
8
6
4
2
0
>>  

کدهای برنامه ی بالا را در نظر بگیرید. ابتدا متغیر x را به عدد صحیح 10 منتسب می کنیم سپس از آن در شرط کنترل لوپ استفاده می کنیم. با اجرای برنامه مفسر شرط لوپ را ارزیابی می کند و از آن جا که هر عدد غیر صفر مقداری برابر True دارد، وارد لوپ می شود و اولین دستور لوپ که در آن یک واحد از مقدار متغیر x کم می شود را اجرا می کند، که در نتیجه ی آن x به عدد صحیح 9 منتسب می شود. آن گاه دستور بعدی که یک دستور شرطی if است اجرا می شود. ابتدا مفسر شرط if یعنی x % 2 != 0 را بررسی می کند. چون حاصل تقسیم 9 بر 2 برابر 1 و عددی غیر صفر است شرط if برقرار است، بنابراین دستور داخل بدنه ی آن اجرا می شود.

دستور continue در بدنه ی این شرط به مفسر اعلام می کند که به جای اجرای بقیه ی دستورهای داخل لوپ به ابتدای آن بازگردد و مجدداً شرط آن را بررسی کند. همان طور که در خروجی دیدید با وجود آن که دستور بعدی داخل لوپ باید مقدار متغیر x را چاپ کند این اتفاق نمی افتد و عدد 9 در خروجی چاپ نشده است. در عوض مفسر پایتون مجدداً به ابتدای لوپ باز می گردد و از آن جا که هنوز هم مقدار متغیر x که برابر با عدد صحیح 9 است برابر با مقدار True ارزیابی می شود باز هم وارد لوپ می شود و مجدداً دستورها را اجرا می کند.

ابتدا مانند دور قبل یک واحد از مقدار x کم می شود و برابر 8 قرار می گیرد، سپس شرط if بررسی می شود. این بار چون مقدار x عددی زوج است، شرط if برآورده نمی شود و از این رو دستور continue در داخل بدنه ی این دستور شرطی اجرا نخواهد شد. بنابراین مفسر اجرای بقیه ی دستورات داخل لوپ را ادامه می دهد و این بار فانکشن ()print که برای چاپ مقدار x در نظر گرفته بودیم عدد صحیح 8 را در خروجی چاپ می کند. به این ترتیب اجرای دستورات داخل لوپ ادامه پیدا می کند، هرگاه مقدار x عددی زوج بود در خروجی چاپ می شود و زمانی که مقدار x عددی فرد بود، این عدد چاپ نشده و با استفاده از دستور continue اجرای لوپ مجدداً از سر گرفته می شود.

این عمل تا زمانی ادامه پیدا می کند که x به عدد صحیح صفر منتسب می شود. با این کار شرط لوپ برابر با مقدار False ارزیابی می شود و اجرای آن به طور کامل متوقف می شود.

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

دانلود فایل‌های تمرین
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
RezA.h
RezA.h
موقعی که مقدار x برابر با 0 میشه بازم دستور while اجرا میشه؟؟؟؟؟؟
Mrj
Mrj
جای تشکر بسیار است برای آموزش های بسیار خوبتان.
amingar
amingar
به این شکل که می خواهیم برنامه ای بنویسیم که اعداد فرد یک رقمی مثبت یعنی 8، 6، 4، 2، و 0 را به ترتیب از بزرگ به کوچک در خروجی چاپ کند.؟؟؟؟؟