در برنامه نویسی کامپیوتری، حلقه(loop) به دنباله ای از دستورات گفته میشود که به طور مداوم تکرار می شوند تا زمانی که به یک شرایط خاص برسند. حلقه ها از ابتدایی ترین و قدرتمندترین مفاهیم برنامه نویسی هستند. در پایتون دو نوع حلقه وجود دارد: حلقه while که قبلا به آن پرداخته ایم و حلقه for پایتون که در این بخش به آن میپردازیم.
راهنمای مطالعه:
حلقه for در پایتون
عملکرد حلقه for پایتون کمی با زبان های دیگر متفاوت است. حلقه for در پایتون برای پیمایش درون دنباله ها یا دیگر آبجکت های قابل پیمایش برای دسترسی به تک تک آیتم ها استفاده میشود. این دنباله ها میتوانند یک لیست یا تاپل یا دیکشنری یا یک رشته از حروف باشند.
در پایتون ، حلقه for به شکل زیر ساخته می شوند:
for [val] in [sequence]:
[do something]
در کد بالا، sequence دنباله ای است که میخواهیم به آیتم های آن دسترسی داشته باشیم و val اشاره به تک آیتم های دنباله میکند. مقدار something هم به طور تکراری اجرا میشود. حلقه for تا زمانی که به آخرین آیتم دنباله برسیم تکرار خواهد شد. بدنه حلقه for با یک تورفتگی از بقیه حلقه جدا شده است.
برای اینکه بهتر حلقه for پایتون را درک کنید میتوانید به فلوچارت آن دقت کنید:
بیایید یک مثال از حلقه for پایتون ببینیم:
names = ['jack', 'kevin', 'mark', 'bob']
for name in names:
print(name)
# OUTPUT
jack
kevin
mark
bob
در مثال بالا، ابتدا یک لیستی از نام ها را داریم. سپس در خط دوم با استفاده از حلقه for درون لیست names پیمایش کرده و تک تک آیتم های آن را چاپ میکنیم.
حلقه for در کنار تابع range در پایتون
با تابع range پایتون میتوانیم دنباله ای از اعداد را ایجاد کنیم. مثلا (10)range یک لیست از اعداد 0 تا 9 را ایجاد میکند. همچنین میتوانیم شروع و پایان و فاصله بین اعداد را نیز در range مشخص کنیم:
range(start, stop, step)
- start نقطه شروع اعداد را مشخص میکند که به صورت پیشفرض 0 است.
- stop نقطه پایان اعداد را مشخص میکند.
- step فاصله بین اعداد را مشخص میکند که به صورت پیشفرض 1 است.
میتوانیم از تابع range در کنار حلقه for نیز استفاده کنیم تا درون دنباله ها پیمایش کنیم. این تابع میتواند با len ترکیب شده و به عنوان شماره ایندکس دنباله استفاده شود. در اینجا یک مثال از range و حلقه for داریم:
genre = ['pop', 'rock', 'jazz']
for i in range(len(genre)):
print("I like", genre[i])
# OUTPUT
I like pop
I like rock
I like jazz
حلقه for و بلاک else در پایتون
حلقه for پایتون میتواند یک بلاک else اختیاری نیز داشته باشد. بلاک else زمانی اجرا میشود که حلقه به طور کامل و بدون مشکل به اتمام برسد. اگر داخل حلقه از کلمه کلیدی break استفاده شده باشد، بلاک else اجرا نخواهد شد.
یک مثال از حلقه for و بلوک else ببینیم:
digits = [0, 1, 5]
for i in digits:
print(i)
else:
print("No items left.")
اگر کد بالا اجرا کنید بلوک else هم اجرا خواهد شد زیرا حلقه به طور کامل بدون مشکل تمام میشود:
0
1
5
No items left.
اگر داخل حلقه for از break استفاده کرده باشید بخش else اجرا نخواهد شد:
names = ['jack', 'kevin', 'mark', 'bob']
for name in names:
if name == 'mark':
break
print(name)
else:
print('Done...')
خروجی برنامه بالا به شکل زیر خواهد بود:
jack
kevin
حلقه for تودرتو در پایتون
شما میتوانید هر نوع کدی را داخل حلقه for قرار دهید که به این معنی است که میتوانید حلقه for در حلقه for داشته باشید. قرار دادن یک حلقه for در یک حلقه دیگر کاملا امری عادی است. حلقه های تودرتو یا nested loops به حلقه هایی گفته میشود که داخل یکدیگر باشند. در این حالت به حلقه بیرونی outer loop و به حلقه درونی inner loop گفته میشود. نحوه کار حلقه تودرتو به این شکل است که به ازای هر بار چرخش حلقه بیرونی، حلقه داخلی به طور کامل چرخش های خود را انجام میدهد:
adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]
for x in adj:
for y in fruits:
print(x, y)
کنترل اجرای حلقه for با break و continue در پایتون
حلقه های for از بالا به پایین اجرا میشوند اما ممکن است نیاز داشته باشید که جریان اجرای حلقه را تغییر دهید. مثلا ممکن است در شرایط خاصی بخواهید یک دور از حلقه را نادیده بگیرید یا بخواهید به طور کامل اجرای حلقه for را متوقف کنید. در این حالت میتوانید از break یا continue استفاده کنید.
در پایتون میتوانید با دستور continue یک دور از حلقه را رد کرده و به دور بعدی حلقه بروید. این دستور زمانی مفید است که بخواهید تحت شرایط خاصی حلقه اجرا نشود:
for number in range(1, 11):
if number % 2 == 0:
continue
print(number)
در کد بالا، هر زمان که number بر 2 بخش پذیر بود آن دور از حلقه نادیده میگیرد. اگر کد بالا اجرا کنید فقط اعداد فرد نمایش داده میشود.
دستور break برخلاف continue اجرای تمام حلقه for را متوقف میکند. به طور مثال، در کد زیر اگر به کلمه elephant برسیم، حلقه for به طور کامل متوقف خواهد شد:
animals = ["monkey", "lion", "elephant", "rhino", "jackal"]
for animal in animals:
if animal == "elephant":
print("elephant found. Terminating the loop")
break
print(animal)
اگر کد بالا را اجرا کنید نتیجه به شکل زیر خواهد بود:
monkey
lion
elephant found. Terminating the loop
همانطور که میبینید، بعد از elephant چیزی چاپ نشده است.
ایجاد حلقه for خالی در پایتون
ممکن است متوجه شده باشید که نمی توانید یک حلقه for را خالی بگذارید. همیشه باید کدی را به بدنه حلقه اضافه کنید. در غیر این صورت، با یک خطا مواجه خواهید شد. با این حال ممکن است بخواهید پیاده سازی یک حلقه را خالی گذاشته تا بعدا به بدنه آن را اضافه کنید. در این حالت میتوانید از دستور pass استفاده کنید.
به عنوان مثال، بیایید یک حلقه for ایجاد کنیم که روی لیستی از اعداد پیمایش میکند اما کاری انجام نمی دهد:
for x in [0, 1, 2]:
pass
اکنون می توانید این قطعه کد را بدون خطا اجرا کنید. اگر دستور pass را بردارید، باید کدی را در حلقه بنویسید وگرنه خراب می شود.
چند مثال از حلقه for در پایتون
حالا که به خوبی با حلقه for پایتون آشنا شدید، میتوانیم چند مثال ببینیم. در مثال اول، تمام کاراکترهای یک رشته را چاپ میکنیم:
string = "Hello World"
for x in string:
print(x)
در مثال دوم، با استفاده از حلقه تودرتو به اعضای یک لیست تودرتو دسترسی پیدا میکنیم:
list_of_lists = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]
for list in list_of_lists:
for x in list:
print(x)
ارسال نظر