سوالی دارید؟
تمایل دارید صفحه اینستاگرام کبیر را مشاهده نمایید؟

محتوای الکترونیکی

صفحه اصلی محتوای الکترونیکی

آموزش کار با حلقه در پایتون و ترفندهای آن

آموزش کار با حلقه در پایتون و ترفندهای آن

به کمک حلقه‌ها که جزء دستورات کنترلی هستند، می‌توانیم در توالی‌ها پیمایش کرده یا یک قطعه کد را چندین بار تکرار کنیم. در این مقاله به آموزش حلقه در پایتون پرداخته و با ۲ نوع اصلی و ترفندهای کار با آن‌ها آشنا خواهیم شد.فرض کنید در یک لیست پایتون تعدادی عدد دارید که می‌خواهید تمام آن‌ها را با هم جمع کنید. یا یک رشته متنی دارید که می‌خواهید تک به تک کاراکترهای آن را بررسی کنید. شاید بخواهید تا زمانی که یک شرط برقرار بود، برنامه پایتون یک کار ثابت یا مشابه را انجام دهد.
برای انجام تمام این‌گونه کارها می‌توان از حلقه‌ها (Python Loops) کمک گرفت. حلقه‌ها یکی از پر کاربردترین دستورات کنترلی هستند.


فهرست محتوای آموزش


انواع حلقه در پایتون
حلقه while در پایتون
حلقه for در پایتون
o تابع range
ترفندهای کار با حلقه
o دستور break در حلقه پایتون
o استفاده از دستور continue
o حلقه تودرتو در پایتون
مرور آموزش حلقه ها در پایتون


انواع حلقه در پایتون


در زبان برنامه نویسی پایتون دو نوع اصلی حلقه داریم:


حلقه while
حلقه for


هر کدام از این Loopها در جای خاص خود کاربرد دارند ولی کار اصلی هر دو تقریباً مشابه است.
اگر کمی خلاقیت را چاشنی کارتان کنید، احتمالاً بتوانید این دو نوع حلقه را به یکدیگر تبدیل کرده و به جای هم استفاده کنید! اما بهتر است از هر کدام در جای مناسب خود بهره ببرید.
در تصویر زیر یک فلوچارت (یا روندنما) کلی از عملکرد حلقه‌ها در برنامه‌نویسی نمایش داده شده است.
بعضاً نیاز است در ابتدای کار یک یا چند متغیر مورد نیاز را مقداردهی اولیه کنیم. سپس یک شرط برای حلقه تعریف می‌کنیم.
مادامی که آن شرط برقرار باشد، قطعه کد درون محدوده حلقه اجرا خواهد شد. پس از هر بار اجرای کد، مجدداً شرط مورد نظر چک می‌شود. هر زمان که شرط برقرار نبود، از حلقه خارج شده و ادامه برنامه اجرا خواهد شد.


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


با استفاده از حلقه while می‌توان مجموعه‌ای از کدها را تا زمانی که شرط مورد نظرمان برقرار است اجرا کرد.
ساختار (نحو یا syntax) حلقه while در پایتون به شکل زیر است:


:while condition
    code#


condition همان شرط ماست که خروجی آن باید به صورت True  یا False  باشد.
فرض کنید متغیری به نام i  داریم. می‌خواهیم تا زمانی که مقدار آن از عدد 5  کمتر است، مقدارش را چاپ کنیم. به قطعه کد زیر دقت کنید:


i = 1
:while i<5
    print(i)
i+=1


شرط حلقه while را i<5  تعریف کردیم. در بدنه حلقه، مقدار متغیر را چاپ کرده و در نهایت مقدار آن را یک واحد افزایش داده‌ایم.
اگر در آخرین خط، مقدار متغیر را افزایش ندهیم، حلقه ما تا بی‌نهایت اجرا خواهد شد.
در این‌گونه مواقع معمولاً گفته می‌شود به حلقه بی‌نهایت یا Infinitive Loop برخورد کرده‌ایم!
خروجی اجرا شده این قطعه کد، به صورت زیر خواهد بود:


1
2
3
4


حلقه for در پایتون


حلقه for که به حلقه for in در پایتون هم معروف است بیشتر برای پیمایش (Traversal) استفاده می‌شود.
فرض کنید یک تاپل در python دارید. این تاپل یک نوع توالی از اعضای خودش به ما می‌دهد. اگر بخواهیم روی تک تک این اعضا حرکت یا به اصطلاح پیمایش کنیم، از حلقه for استفاده خواهیم کرد.
در حالت کلی، هر چیزی که به ما مجموعه‌ای از توالی عناصر (collection) را بدهد می‌توانیم در حلقه for پایتون قرار دهیم؛ نوع‌های داده‌ای لیست، رشته، تاپل و … .
ساختار کلی حلقه for در پایتون به صورت زیر است:


:for Value in Sequence
    execution and use of Value#


سینتکس حلقه for دارای سه بخش اصلی است:


Value: نام متغیری که در هر بار اجرای حلقه، هر کدام از اعضای مجموعه در آن قرار می‌گیرد.
Sequence: همان مجموعه قابل پیمایش مورد نظر ماست.
بدنه حلقه: کدهایی که در هر بار اجرای حلقه پردازش می‌شوند.


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


names = ["Nazanin", "Mehran", "Omid", "Melisa", "sina"]
:for name in names
    print("Hello " + name + "!")


رشته در پایتون هم یک مجموعه است؛ مجموعه‌ای از کاراکترها که رشته متنی را شکل داده‌اند. بنابراین به کمک حلقه for in  می‌توان بر روی تک تک کاراکترهای یک رشته پیمایش انجام داد.


"!string = "Welcome to SabzDanesh.com site
i = 0
:for char in string
    i+=1

print("Lenght is: " + str(i))


در قطعه کد بالا، با استفاده از حلقه for تعداد کاراکترهای رشته string  را محاسبه کردیم.


تابع range


فرض کنید می‌خواهیم یک حلقه for ایجاد کنیم که متغیر آن در هر بار اجرا، یکی افزایش پیدا کند. چیزی شبیه به کاری که در حلقه while داشتیم.
فرض کنید می‌خواهیم با یک حلقه، حاصل جمع اعداد 1 تا 9 را محاسبه کنیم.
اولین راه‌حل ایجاد یک لیست از اعداد متوالی به صورت دستی و استفاده از آن در حلقه for است.


nums= [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = 0
:for n in nums
    result += n

print(result)


اما راه‌حل ساده‌تری هم داریم!
تابع ()range  یک لیست از اعداد صحیح ایجاد می‌کند. از این تابع می‌توان به طور مستقیم در حلقه for در پایتون برای تولید یک رنج از اعداد (بازه عددی) استفاده کرد.
کد زیر دقیقاً معادل کد بالا بوده و عدد 45  را به عنوان نتیجه به ما می‌دهد.


result = 0
:for i in range(10)
    result += i

print(i)


تابع range(n) به ما لیستی از اعداد 0 تا n-1 را می‌دهد.
از این تابع می‌توان به صورت حرفه‌ای‌تر هم استفاده کرد. ساختار کلی آن به صورت زیر است:


range(start, stop, step)


سه آرگومان ورودی این تابع عبارت‌اند از:


start: نقطه شروع شمارش
stop: نقطه پایانی (این نقطه جزء توالی عددی نخواهد بود)
step: گام حرکت از شروع تا پایان (اختیاری، پیش‌فرض عدد 1 در نظر گرفته می‌شود)


اگر فقط یک ورودی برای ()range  وارد شود، به طور پیش‌فرض مقدار شروع برابر 0 و گام برابر 1 خواهد بود.
به مثال‌های زیر از این تابع توجه کنید:


range(9)
# [0, 1, 2, 3, 4, 5, 6, 7, 8]

range(5, 21)
 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] #

range(5, 21, 3)
 [5, 8, 11, 14, 17, 20] #


ترفندهای کار با حلقه


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


دستور break در حلقه پایتون


فرض کنید یک لیست از اعداد در اختیار داریم و می‌خواهیم آن را پیمایش کنیم. در صورتی که به یک عدد خاص رسیدیم، پیمایش کل مجموعه خاتمه یابد.
بعد از آن که به عدد مورد نظر رسیدیم چه اتفاقی می‌افتد؟! باید به طور کامل از حلقه (for  یا while) خارج شویم!
برای این که از حلقه خارج شویم، از دستور break استفاده می‌کنیم.
به محض رسیدن به دستور break بلافاصله از حلقه خارج شده و تکرارهای بعدی نادیده گرفته خواهد شد؛ بدون توجه به این که در اولین تکرار حلقه هستیم یا آخرینِ آن!
معمولاً این‌گونه کارها به کمک ساختارهای شرط در پایتون انجام می‌شود.


lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
:for i in lst
    :if i == 5
        break
    print(i)

:Result#
1#
2#
3#
4#


خروجی این قطعه کد، فقط اعداد 1  تا 4  هستند.


استفاده از دستور continue


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


lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
:for i in lst
    :if i == 5
        continue
    print(i)


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


حلقه تودرتو در پایتون


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


mtrx = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
x = 0
:for i in mtrx
    :for j in i
        x += j

print(x) 45#


مرور آموزش حلقه ها در پایتون


در این آموزش با نحوه تعریف حلقه در پایتون آشنا شدیم. یک loop دو بخش اصلی شرط و بدنه دارد. قبل از شرط، می‌توانیم برای آن مقداردهی اولیه انجام دهیم. سپس مادامی که شرط برقرار باشد، کدهای درون بدنه حلقه اجرا می‌شود. برای اینکه با مشکل حلقه بی‌نهایت مواجه نوشیم، بهتر است به چگونگی تغییر شرط توجه کنیم. معمولاً از عملیات افزایش برای این کار استفاده می‌شود.
در هر با اجرای حلقه for در پایتون، متغیری که تعریف کرده‌ایم مقدار جدیدی گرفته و کدهای بدنه برای آن مقدار اجرا می‌شوند. دقت کنید که می‌توانیم از این متغیر در بدنه هیچ استفاده‌ای نکنیم!  حلقه while در پایتون، مادامی که شرطش برقرار باشد اجرا می‌شود.
علاوه بر حلقه‌ها، با تابع ()range  برای تولید لیستی از اعداد، دستور break  برای متوقف کردن اجرای حلقه و دستور continue  برای پرش به حلقه بعدی آشنا شدیم.

0 نظر


لطفا وارد شوید و نظر خود را ثبت نمایید.

بهترین ها

  نام تعداد آزمون میزان موفقیت
Photo َAmeneh Darvishzadeh 1 100/00 %
Photo Mehrad Hashemi 1 100/00 %
Photo مهدی حسین پور آقائی 1 100/00 %
Photo zahra namdari 46 98/21 %
Photo یاسمن محمدی پور 4 98/08 %
Photo فرنوش طغیانی 17 98/06 %
Photo Tara Mohammadi 3 96/43 %
Photo yasaman mohamadipur 51 95/86 %
Photo محمدجواد ملائی اردستانی 3 94/44 %
Photo Arzhang Saberi 4 93/33 %
Photo Soheila Karimi 123 92/71 %
Photo aram farhmand 10 92/31 %
Photo یاشار اسکندری 98 91/14 %
Photo پریسا سلوکی شهرضایی 72 89/49 %
Photo ارشیا قلمکاری 33 89/23 %
Photo Omid Aghababaei 20 87/92 %
Photo سجاد آقابابایی 2 87/50 %
Photo محدثه درویشی 1 87/50 %
Photo Fardin Azhdari 27 86/58 %
Photo نازيلا حاجي صباغ 31 85/94 %