پایتون

جلسه ۳۰: حلقه‌های تودرتو در پایتون

در این درس ما حلقه‌های تو در تو را خواهیم ساخت.

اجرای حلقه‌های تودرتو

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

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

طریقه استفاده حلقه تودرتو

همراه با یک مثال ببینید. فرض کنید میخواهیم حفت المان‌هایی را پیدا کنیم که جمعشان برابر عدد مشخص n باشد.

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

n = 50
num_list = [10, 4, 23, 6, 18, 27, 47]

for n1 in num_list:
    for n2 in num_list:  # Now we have two iterators
        if(n1 + n2 == n):
            print(n1, n2)

در کدبالا، هر المان با تمام المان‌های همان لیست مقایسه میشود که آیا جمع n2+n1 برابر با n هست یا خیر. این قدرت حلقه‌های تودرتو است!

کلمه کلیدی break

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

یک مثال خوب در این مورد، همین مثالی است که بررسی کردیم. در یک نقطه مشخص n1 برابر ۲۳ و n2 برابر ۲۷ است. در این زمان شرط ما برقرار خواهد بود.(n1+n2==0) اما حلقه ادامه کار خودش را انجام میدهد و همه جفت ‌های دیگر را نیز بررسی میکند. این دلیلی است که جفت ها هرکدام درخروجی دوبار تکرار شده اند. خیلی خوب میشود اگر برنامه را طوری بنویسیم که اگر یک بار یک جفت چاپ شد دوباره چاپ نگردد.

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

حال این موضوع را به مثال بالا اضافه میکنیم:

n = 50
num_list = [10, 4, 23, 6, 18, 27, 47]
found = False  # This bool will become true once a pair is found

for n1 in num_list:
    for n2 in num_list:
        if(n1 + n2 == n):
            found = True  # Set found to True
            break  # Break inner loop if a pair is found
    if found:
        print(n1, n2) # Print the pair
        break  # Break outer loop if a pair is found

همانطور که دیدید فقط ۲۳ و ۲۷ چاپ شده است.

به این خاطر است که این دو عدد اولین جفتی هستند که شرایط مسئله برایشان برقرار است. ما حلقه را زمانی که متغیر found مقدار True بگیرد، متوقف میکنیم . پس مقدار ۲۷ و ۲۳ (برعکس قبلی)برای ما چاپ نشده‌است.

کلمه کلیدی continue

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

ما نیاز به جزئیات این موضوع نداریم. برای همین مثال ساده زیر را در نظر بگیرید.

num_list = list(range(0, 10))

for num in num_list:
    if num == 3 or num == 6 or num == 8:
        continue
    print(num)

حلقه در زمان هایی که مقدار num برابر ۳ یا ۶ یا ۸ باشد داخل if می‌رود . در این زمان ها دستور continue اجرا میشود و بقیه کد یعنی دستور print اجرا نمیگردد و از آن عبور میشود.

کلمه کلیدی pass

در معنای عملی، عبارت pass به این معناست که هیچ کدی برای اجرا وجود ندارد. میتوان زمانی استفاده کرد که مشخص کنیم این قسمت از کد باید بعدا نوشته بشود.

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

num_list = list(range(20))

for num in num_list:
    pass # You can write code here later on

print(len(num_list)) 

در درس بعدی یاد میگیریم که چگونه یک حلقه while بسازیم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا