آموزش کار با انواع حلقه در پایتون
زبان برنامهنویسی پایتون انواع مختلفی از حلقهها را برای مدیریت کارهای تکراری ارائه میدهد. پایتون سه روش مجزا برای اجرای حلقهها دارد که هرکدام در سینتکس و مکانیسمهای بررسی شرایط متفاوت هستند. در این مطلب از مکتوب به بررسی نحوه کار حلقه در پایتون خواهیم پرداخت و برای هرکدام چندین مثال بررسی خواهیم کرد.
کار با حلقه while در پایتون
در پایتون، یک حلقه while برای اجرای مکرر مجموعهای از دستورات تا زمانی که یک شرط مشخصشده برآورده شود، استفاده میشود.
هنگامیکه شرط به نادرست ارزیابی شد، برنامه به خط بلافاصله پس از حلقه ادامه میدهد.
while expression:
statement(s)
در پایتون، تمام عباراتی که پس از یک ساختار برنامهنویسی با همان تعداد فاصله کاراکتر فرورفتهاند، بهعنوان بخشی از یک بلوک کد منفرد در نظر گرفته میشوند. پایتون از تورفتگی بهعنوان وسیلهای برای گروهبندی عبارات استفاده میکند.
مثالی از حلقه while در پایتون
برنامه پایتون زیر نوعی حلقه while را نشان میدهد:
# Python program to illustrate while loop
count = 0
while (count < 3):
count = count + 1
print("Hello Maktabkhooneh")
خروجی مثال فوق به صورت زیر است:
این برنامه پایتون استفاده از حلقه while را نشان میدهد. حلقه یک متغیر «count» را صفر میکند و تا زمانی که «count» کمتر از 3 باقی میماند به اجرا ادامه میدهد. در هر تکرار، متغیر «count» 1 افزایش مییابد و عبارت «Hello, Maktabkhooneh» چاپ میشود. در نتیجه، همانطور که در خروجی نشان داده شده است، پیام سه بار نمایش داده میشود.
استفاده از عبارت else با while Loop در پایتون
در کار با حلقه در پایتون، عبارت «else» را میتوان همراه با حلقه «while» به کار برد. این بلوک «else» تنها زمانی اجرا میشود که شرط «while» مشخصشده به نادرست ارزیابی شود. لازم به ذکر است که اگر حلقه با استفاده از دستور break پیش از موعد خارج شود یا در حین اجرای آن استثنایی ایجاد شود، بلوک ‘else’ اجرا نخواهد شد.
سینتکس حلقه while با عبارت else به صورت زیر است:
while condition:
# execute these statements
else:
# execute these statements
مثالی از حلقه while در پایتون با عبارت else به صورت زیر است:
# Python program to illustrate
# combining else with while
count = 0
while (count < 3):
count = count + 1
print("Hello Maktabkhooneh")
else:
print("In Else Block")
خروجی:
در این برنامه پایتون بالا، یک حلقه «while» با عبارت «else» استفاده میشود. این برنامه کار با حلقه در پایتون یک متغیر «count» را به صفر مقداردهی اولیه میکند و تا زمانی که «count» کمتر از 3 باقی میماند به اجرا ادامه میدهد. در هر پیمایش، متغیر count افزایش مییابد و عبارت «Hello, Geek» چاپ میشود. هنگامیکه شرط «while» نادرست شد، که پس از سه بار تکرار اتفاق میافتد، برنامه وارد بلوک «else» میشود و «In Else Block» را همانطور که در خروجی نشان داده شده است چاپ میکند.
پیشنهاد مطالعه: آموزش کار با متغیرها در پایتون
ایجاد حلقه while بی نهایت در پایتون
در پایتون، اگر نیاز به یک بلوک کد برای اجرای نامحدود باشد، میتوان از حلقه while برای رسیدن به این هدف استفاده کرد. یک حلقه بی نهایت حلقهای است که در آن شرط همیشه درست ارزیابی میشود و باعث خواهد شد کد درون آن بیانتها اجرا شود. با این حال، هنگام استفاده از حلقههای بینهایت باید احتیاط کرد، زیرا میتوانند منجر به عواقب ناخواسته شوند و ممکن است نیاز به خاتمه اجباری برنامه داشته باشند.
نمونهای از یک حلقه while بی نهایت در پایتون به صورت زیر است:
# Python program to illustrate
# Single statement while block
count = 0
while (count == 0):
print("Hello Geek")
توجه: اکیداً توصیه میشود که در کار با حلقه در پایتون از حلقههای بی نهایت استفاده نکنید مگر اینکه کاملاً ضروری باشد، زیرا میتوانند منجر به برنامههایی شوند که هرگز به خودی خود خاتمه نمییابند. در چنین مواردی، ممکن است لازم باشد برنامه را به اجبار خاتمه دهید تا کنترل را دوباره به دست آورید.
حلقه For در پایتون
حلقههای For در پایتون برای پیمایش متوالی، مانند تکرار از طریق لیست در پایتون، رشته، آرایه یا ساختارهای داده مشابه استفاده میشوند. عملکرد حلقه for in پایتون شبیه حلقه for each در بسیاری از زبانهای برنامهنویسی دیگر است. از آن برای انجام پیمایشهای متوالی به طور مؤثر استفاده میشود. سینتکس آن به صورت زیر است:
for iterator_var in sequence: statements(s)
حلقه for از طریق عناصر در دنباله مشخصشده پیمایش انجام میدهد و برای هر تکرار، دستورات مشخصشده اجرا میشوند. نمونهای از استفاده از حلقه For در پایتون به صورت زیر است:
# Python program to illustrate
# Iterating over range 0 to n-1
n = 4
for i in range(0, n):
print(i)
خروجی کد بالا به صورت زیر است:
در این برنامه کار با حلقه در پایتون، از یک حلقه for برای پیمایش محدودهای از 0 تا n-1 استفاده میشود. در طول هر تکرار، متغیر «i» مقادیر 0، 1، 2 و 3 را میگیرد و مقادیر مربوطه همانطور که در خروجی نشان داده شده است چاپ میشوند. این نشان میدهد که چگونه میتوان از یک حلقه for برای پیمایش مؤثر طیفی از اعداد استفاده کرد.
پیشنهاد مطالعه: آموزش کار با ژوپیتر پایتون به صورت تصویری
پیمایش ساختارهای مختلف داده با استفاده از حلقههای For در پایتون
پایتون قابلیت پیمایش کارآمد بر روی انواع ساختارهای داده ازجمله لیستها، تاپلها، رشتهها، دیکشنریها و مجموعهها را فراهم میکند. در زیر مثالی آورده شده است که نحوه استفاده از حلقه For را در چنین ساختارهایی نشان میدهد:
Python program to illustrate
# Iterating over a list
print("List Iteration")
l = ["geeks", "for", "geeks"]
for i in l:
print(i)
# Iterating over a tuple (immutable)
print("\nTuple Iteration")
t = ("geeks", "for", "geeks")
for i in t:
print(i)
# Iterating over a String
print("\nString Iteration")
s = "Geeks"
for i in s:
print(i)
# Iterating over dictionary
print("\nDictionary Iteration")
d = dict()
d['xyz'] = 123
d['abc'] = 345
for i in d:
print("%s %d" % (i, d[i]))
# Iterating over a set
print("\nSet Iteration")
set1 = {1, 2, 3, 4, 5, 6}
for i in set1:
print(i),
خروجی مثال فوق به صورت زیر است:
پیمایش عناصر با اندیس در پایتون
در پایتون نیز امکان پیمایش عناصر دنباله با استفاده از اندیسهای آنها وجود دارد. رویکرد اساسی این روش شامل محاسبه طول دنباله و سپس پیمایش بر روی آن در محدوده این طول است. در اینجا یک مثال برای نشان دادن این مفهوم آورده شده است:
# Python program to illustrate
# Iterating by index
list = ["geeks", "for", "geeks"]
for index in range(len(list)):
print(list[index])
خروجی مثال فوق به صورت زیر است:
در برنامه پایتون بالا، طول لیست را با استفاده از تابع len به دست میآوریم. سپس، از یک حلقه for برای پیمایش بر روی اندیسهای موجود در محدوده طول لیست استفاده میکنیم. برای هر پیمایش، عنصر را در اندیس فعلی چاپ میکنیم. این رویکرد امکان پیمایش کارآمد را از طریق عناصر یک دنباله با استفاده از اندیسهای مربوطه آنها فراهم میکند.
پیشنهاد مطالعه: کد پایتون آماده به همراه معرفی چندین منبع سورس کد پایتون
استفاده از عبارت else با حلقه for در پایتون
در پایتون، عبارت «else» را میتوان با حلقه «for» ترکیب کرد، شبیه به استفاده از حلقه «while». با این حال، توجه به این نکته مهم است که از آنجایی که هیچ شرط پایان صریحی در حلقه «for» وجود ندارد (برخلاف حلقه «while»)، بلوک «else» مرتبط با حلقه «for» بلافاصله پس از پایان بلوک «for» اجرا میشود نمونهای از کار با حلقه در پایتون با رویکرد ترکیب else با حلقه for به صورت زیر است:
# Python program to illustrate
# combining else with for
list = ["geeks", "for", "geeks"]
for index in range(len(list)):
print(list[index])
else:
print("Inside Else Block")
خروجی:
در برنامه پایتون فوق، ما از یک حلقه «for» برای پیمایش در عناصر یک لیست استفاده میکنیم. هنگامیکه بلوک «for» اجرای خود را کامل کرد، بلوک «else» مرتبط بلافاصله اجرا میشود. در این مورد، همانطور که در خروجی نشان داده شده است، Inside Else Block را چاپ میکند. این رفتار استفاده از «else» با حلقههای «for» را از حلقههای «while» متمایز میکند، جایی که بلوک «else» تنها زمانی اجرا میشود که شرط حلقه نادرست شود.
حلقه های تودرتو در پایتون
پایتون اجازه میدهد تا از یک حلقه در داخل حلقه دیگر استفاده شود که به حلقههای تو در تو معروف است. این ساختار برنامهنویسی برای انجام وظایف تکراری پیچیده که در آن یک سطح از تکرار به سطح دیگری بستگی دارد، مفید است. هم حلقههای «for» و هم حلقههای «while» میتوانند درون یکدیگر قرار بگیرند و در کار با حلقهها در پایتون به این رویکرد بسیار نیازمند خواهیم بود. سینتکس حلقههای تودرتوی «for» در پایتون به صورت زیر است:
for iterator_var in sequence: for iterator_var in sequence: statements(s) statements(s)
سینتکس حلقههای تودرتوی while در پایتون به صورت زیر است:
while expression: while expression: statement(s) statement(s)
مثالی از حلقههای تودرتوی forدر پایتون:
# Python program to illustrate
# nested for loops in Python
from __future__ import print_function
for i in range(1, 5):
for j in range(i):
print(i, end=' ')
print(
خروجی:
در برنامه پایتون بالا، ما استفاده از حلقههای تودرتو «for» را نشان میدهیم. حلقه بیرونی از 1 تا 4 را پیمایش میکند و برای هر مقدار «i»، حلقه داخلی از 0 تا «i-1» پیمایش میشود و مقدار «i» را در یک ردیف چاپ میکند. این منجر به الگوی نمایش داده شده میشود. حلقههای تودرتو ابزار قدرتمندی برای مقابله با وظایف تکراری پیچیدهتر در پایتون هستند.
پیشنهاد مطالعه: آموزش کار با پایتون در لینوکس به صورت عملی
گزارههای کنترل در کار با حلقه در پایتون
دستورات کنترل حلقه در پایتون توالی منظم اجرا در حلقهها را تغییر میدهد. این عبارات مکانیسمهایی را برای مدیریت جریان اجرا در حلقهها ارائه میکنند. پایتون از چندین دستور کنترل پشتیبانی میکند، ازجمله دستور continue و عبارت break که در ادامه مورد بررسی قرار خواهند گرفت.
دستور continue در کار با حلقه در پایتون
عبارت continue در پایتون برای انتقال کنترل به ابتدای حلقه استفاده میشود. هنگامیکه با آن مواجه میشوید، باعث میشود که حلقه از پیمایش فعلی رد شود و به پیمایش بعدی ادامه دهد. مثال با استفاده از عبارت Continue به صورت زیر است:
# Prints all letters except 'e' and 's'
for letter in 'geeksforgeeks':
if letter == 'e' or letter == 's':
continue
print('Current Letter :', letter)
خروجی مثال بالا به صورت زیر خواهد بود:
در این برنامه پایتون، ما از عبارت continue برای کنترل حلقه استفاده میکنیم. هنگامیکه حلقه با حروف e یا s روبرو میشود، از مرحله چاپ میگذرد و به پیمایش بعدی ادامه میدهد. این منجر به حذف e و s از خروجی نمایش داده میشود. عبارت continue ابزاری ارزشمند برای سفارشیسازی رفتار حلقهها در پایتون است.
عبارت Break در پایتون
دستور break در پایتون برای خروج زودهنگام از حلقه استفاده میشود و در صورت برآورده شدن یک شرط مشخص، کنترل را از حلقه خارج میکند. این عبارت امکان خاتمه فوری اجرای حلقه در پایتون را فراهم میکند. مثالی با استفاده از عبارت Break به صورت زیر است:
for letter in 'geeksforgeeks':
# break the loop as soon it sees 'e'
# or 's'
if letter == 'e' or letter == 's':
break
print('Current Letter :', letter)
خروجی به صورت زیر است:
در این برنامه پایتون، از عبارت break برای کنترل حلقه استفاده میکنیم. هنگامیکه حلقه با حروف e یا s روبرو میشود، بلافاصله خارج میشود و کنترل به عبارت بعدی از حلقه منتقل خواهد شد. در نتیجه، تنها اولین رخداد ‘e’ در خروجی چاپ میشود. عبارت break ابزاری قدرتمند برای کنترل جریان حلقهها در پایتون است.
دستور pass در پایتون
در پایتون، دستور pass برای ایجاد ساختارهای خالی مانند حلقههای خالی، دستورات کنترل، توابع یا کلاسها استفاده میشود. این دستور در اصل بهعنوان نوعی مکان نگهدار عمل میکند و در هنگام اجرا هیچ کاری انجام نمیدهد و به توسعهدهندگان اجازه میدهد تا یک ساختار را بدون مشخص کردن عملکرد آن ترسیم کنند. مثال زیر نحوه استفاده از این دستور را نشان میدهد:
# An empty loop
for letter in 'geeksforgeeks':
pass
print('Last Letter :', letter)
در این برنامه پایتون، از عبارت pass در حلقه برای ایجاد یک ساختار حلقه خالی استفاده میکنیم. حلقه هیچ عملی را انجام نمیدهد و عبارت pass به سادگی بهعنوان یک مکان نگهدار عمل میکند. بعد از حلقه، آخرین حرف در رشته همانطور که در خروجی نشان داده شده است چاپ میشود. دستور pass برای موقعیتهایی در کار با حلقه در پایتون مفید است که نیاز نحوی وجود دارد اما هیچ کنش خاصی در نظر گرفته نشده است.
کار داخلی حلقه For در پایتون
قبل از پرداختن به نحوه کار داخلی حلقه for در پایتون، داشتن درک قبلی از تکرارکنندههای پایتون ضروری است و بر همین اساس ما به صورت مرحلهای به جلو خواهیم رفت:
مرحله ١: یک مثال ساده برای حلقه for
بیایید با بررسی مثالی از حلقه for شروع کنیم:
A simple for loop example
fruits = ["apple", "orange", "kiwi"]
for fruit in fruits:
print(fruit)
خروجی:
در این مثال، حلقه for روی شیء قابل تکرار fruits که یک لیست است، پیمایشی انجام میدهد. پایتون به حلقههای «for» اجازه میدهد تا در طیف وسیعی از اشیاء قابل پیمایش، ازجمله لیستها، مجموعهها، دیکشنریها و موارد دیگر پیمایش انجام دهد.
مرحله ٢: فرآیند داخلی حلقه for در پایتون
حال، بیایید بررسی کنیم که وقتی این حلقه for اجرا میشود در داخل چه اتفاقی میافتد.
- شیء قابل پیمایش، در این مورد، لیست میوهها، با استفاده از تابع iter به نوعی پیمایش تبدیل میشود.
- یک حلقه بی نهایت while آغاز میشود، که تا زمانی که استثنای StopIteration مطرح شود، به طور نامحدود ادامه مییابد.
- در بلوک try حلقه، عنصر بعدی fruits قابل پیمایش با استفاده از تابع next بازیابی میشود.
- پس از بازیابی عنصر، عملیات مشخصشده، در این مورد، print(fruit)، با عنصر انجام میشود.
- اگر استثنای StopIteration مطرح شود که معمولاً پایان تکرار را نشان میدهد، حلقه در پایتون با استفاده از عبارت ‘break’ خارج میشود.
در اینجا مثالی از عملکرد داخلی حلقه “for” آورده شده است:
fruits = ["apple", "orange", "kiwi"]
# Creating an iterator object
# from that iterable i.e fruits
iter_obj = iter(fruits)
# Infinite while loop
while True:
try:
# getting the next item
fruit = next(iter_obj)
print(fruit)
except StopIteration:
# if StopIteration is raised,
# break from loop
break
خروجی برنامه بالا به صورت زیر است:
به طور خلاصه، حلقه for در پایتون یک ساختار سطح بالا است که به صورت داخلی از تکرارکنندهها، توابع iter و next و مدیریت استثنا با StopIteration برای پیمایش کارآمد بر روی اشیاء قابل پییایش استفاده میکند.
آموزش پایتون
اگر به فکر یادگیری برنامهنویسی پایتون و کار با حلقه در پایتون هستید ابتدا باید اصول برنامهنویسی و مقدمات پایتون را یاد بگیرید. برای کمک به یادگیری پایتون در مکتب خونه انواع دوره آموزش پایتون موجود است که به کاربران کمک میکند به سادهترین شکل ممکن پایتون را بیاموزند. از طریق صفحه آموزش پایتون مکتب خونه میتوانید انواع دورههای موجود برای پایتون را ببینید.