کاربرد کلمه کلیدی else در حلقه ها

  • امین واصف پور
  • 1401/07/25
کاربرد کلمه کلیدی else در حلقه ها
پایتون, برنامه نویسی

مقدمه

در این مقاله قصد داریم کاربرد کلمه کلیدی else در حلقه ها رو در زبان برنامه نویسی پایتون بررسی کنیم. با ما همراه باشید.

کلمه کلیدی else

اگر با زبان برنامه نویسی پایتون آشنا باشین، حتما میدونید که از else  عمدتا در عبارت های شرطی استفاده میشه. به عنوان مثال به قطعه کد زیر نگاه کنید:

name = 'Reza'

if name == 'Ali':
    print('hi Ali')
else:
    print('you are not Ali')

در شرط اول ما با استفاده از if و نوشتن یک عبارت شرطی، مقدار متغیر name رو چک می کنیم و اگر برابر با رشته ای با مقدار “Ali” بود، عبارت “hi Ali” رو پرینت می کنیم.
بعد از اون با استفاده از else مشخص می کنیم که اگر به هر علتی شرط اول ما برقرار نبود و مقدار متغیر name برابر با “Ali” نبود، عبارت “you are not Ali” پرینت بشه. خروجی کد بالا طبیعتا به صورت زیر خواهد بود:

>>> you are not Ali

استفاده از else در حلقه ها

پس متوجه شدیم که با استفاده از else شما میتونید هنگام عدم برقراری یک عبارت شرطی، کد دیگری رو اجرا کنید.
اما این تنها کاربرد else نیست. شما همچنین میتونید از else در حلقه های for و while استفاده کنید. اجازه بدید از حلقه for شروع کنیم. به نمونه کد زیر نگاه کنید:

for i in range(10):
    print('hello world')

در اینجا ما یک حلقه for داریم که با استفاده از تابع range و ساخت یک generator، باعث میشه تا کد داخل بلاک for به مدت 10 مرتبه اجرا بشه و هر بار عبارت "hello world" رو پرینت بکنه. حالا ما قصد داریم که زمانی که حلقه ما بطور کامل به اتمام رسید، عبارت "finished" رو به کاربر نشون بدیم. برای اینکار میتونیم با نوشتن یک else بعد از حلقه for خودمون و سپس قرار دادن تابع print در اون، این کار رو انجام بدیم.
به نمونه کد زیر نگاه کنید:

for i in range(10):
    print('hello world')
else:
    print('finished')

پس از اجرای کامل حلقه ما، همونطور که میخواستیم عبارت "finished" پرینت میشه:

>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> finished

شاید براتون سوال شده باشه که اصلا چه نیازی هست که از else استفاده بکنیم؟ در صورتی که میتونیم عبارت print رو بعد از حلقه for قرار بدیم. در جواب این سوال باید بگم که با نوشتن else شما تعیین می کنید که فقط در صورتی که حلقه for شما به طور کامل اجرا بشه و هیچ break ای در اون اتفاق نیوفته، کد داخل بلاک else اجرا بشه.
اجازه بدید این موضوع رو با بررسی دو نمونه کد زیر بیشتر بررسی کنیم.

for i in range(10):
    if i > 1:
        break
    print('hello world')
print('finished')

در حلقه بالا ما با نوشتن یک شرط کاری می کنیم که حلقه ما پس از دو مرحله تکرار متوقف بشه و از حلقه for خارج بشیم. اینکار با استفاده از کلمه کلیدی break امکان پذیر هست. خروجی کار به صورت زیر خواهد بود:

>>> hello world
>>> hello world
>>> finished

مشاهده می کنیم که با نوشتن شرط و استفاده از break، حلقه ما دو مرحله بیشتر تکرار نمیشه. اما به دلیل اینکه از کلمه کلیدی else استفاده نکردیم، همچنان عبارت "finished" پرینت شد. برای حل این مشکل، عبارت print خودمون رو داخل یک بلاک else بعد از حلقه for قرار میدیم.

for i in range(10):
    if i > 1:
        break
    print('hello world')
else:
    print('finished')

و خروجی به صورت زیر خواهد شد:

>>> hello world
>>> hello world

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

همین نکته در مورد حلقه های while هم صادق هست. به نمونه کد زیر نگاه کنید:

num = 0

while num < 10:
    print('hello world')
    num += 1
else:
    print('finished')

در نمونه کد بالا ما با تعریف یک متغیر به اسم num با مقدار اولیه 0، یک حلقه ایجاد می کنیم و داخل حلقه هر بار مقدار اون رو یکی افرایش میدیم. همچنین هر بار در شرط حلقه بررسی می کنیم که مقدار num کوچکتر از 10 باشه. اگر مقدار num بیشتر از 10 شد، حلقه پایان میابد و در صورتی که مقدار اون هنوز کوچکتر یا مساوی با 10 بود، عبارت "hello world" پرینت بشه. همچنین همانند مثال های قبلی، با نوشتن یک بلاک else بعد از حلقه while کاری می کنیم تا در پایان کار حلقه، عبارت "finished" پرینت بشه. خروجی کار به صورت زیر خواهد بود:

>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> hello world
>>> finished

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

num = 0

while num < 10:
    if num > 1:
        break
    print('hello world')
    num += 1
else:
    print('finished')

خروجی کد بالا به صورت زیر خواهد بود:

>>> hello world
>>> hello world

مشاهده می کنیم که با شکستن حلقه و break کردن، بلاک else ما هم اجرا نشد.

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

کامنت ها :
ارسال نظر :
این نام در کامنت ها و پروفایل عمومی شما نمایش داده خواهد شد.
پست های مرتبط :
علی پورجوهری 1403/01/05