حلقه for در پایتون که به اصطلاح for in Python نامیده میشود، یک تابع گردش یا iterating است. اگر یک object دنبالهدار مانند یک لیست دارید، میتوانید از for in Python برای حلقه iterate روی آیتمهای موجود در لیست استفاده کنید.
عملکرد حلقه for در پایتون با آنچه که از عملکرد این حلقه در چندین زبان برنامه نویسی دیگر میدانید، تفاوت چندانی ندارد.
در این مقاله، حلقه for in Python را با جزئیات بررسی میکنیم و یاد میگیریم که روی دنبالههای (sequence) مختلف از جمله لیستها، tuple ها و موارد دیگر iterate (تکرار) کنیم. علاوه بر این، یاد خواهیم گرفت که با استفاده از دستورات break و continue ، جریان حلقه را کنترل کنیم.
Syntax اصلی for in Python
Syntax اصلی حلقه for در پایتون چیزی شبیه به آنچه که در زیر آمده است به نظر میرسد:
for itarator_variable in sequence_name:
Statements
. . .
Statements
بگذارید Syntax حلقه for in Python را بهتر توضیح دهم.
اولین کلمه این عبارت با کلیدواژه for شروع میشود که به معنای شروع حلقه for است.
سپس متغیر iterator را داریم که روی دنباله تکرار میشود و میتواند درون حلقه، برای انجام توبع مختلف استفاده شود.
مورد بعدی ،کلیدواژه in در in Python است که به متغیر iterator میگوید برای عناصر داخل دنباله، حلقه ایجاد کند.
و در نهایت، متغیر دنباله (sequence) را داریم که میتواند یک لیست، یک tuple یا هر نوع iterator دیگری باشد.
بخش عبارات حلقه (statements part of the loop) جایی است که میتوانید با متغیر iterator بازی کنید و توابع مختلفی را اجرایی کنید.
1. حروف جداگانه یک string را با استفاده از حلقه for چاپ کنید
String پایتون دنبالهای از کاراکترهاست. اگر در هر یک از اپلیکیشنهای برنامه نویسی خود، باید کاراکترهای یک string را به صورت جداگانه مرور کنید، حلقه for در اینجا به کار شما میآید.
در اینجا، نحوه انجام دادن این کار برای شما آمده است.
word="anaconda"
for letter in word:
print (letter)
خروجی:
a
n
a
c
o
n
d
a
دلیل اینکه این حلقه کار میکند، این است که پایتون به جای اینکه به string به عنوان یک کل نگاه کند، آن را به عنوان دنبالهای از کاراکترها در نظر میگیرد.
2. استفاده از حلقه for in Python برای تکرار بر روی لیست یا tuple پایتون
لیستها و tuple ها، object هایی قابل تکرار (iterable) هستند. بیایید ببینیم چگونه میتوانیم بر روی عناصر درون این object ها حلقه (loop) ایجاد کنیم.
words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
print (word)
خروجی:
Apple
Banana
Car
Dolphin
اکنون بیایید به جلو برویم و روی عناصر یک tuple کار کنیم:
nums = (1, 2, 3, 4)
sum_nums = 0
for num in nums:
sum_nums = sum_nums + num
print(f'Sum of numbers is {sum_nums}')
# Output
# Sum of numbers is 10
3. تو در تو کردن پایتون (Nesting) برای حلقهها
وقتی یک حلقه for in Python در داخل حلقه for دیگری داریم، به آن حلقه for تو در تو یا nested میگویند. یک حلقه for تو در تو، کاربردهای متعددی دارد.
مثال لیست بالا را در نظر بگیرید. حلقه for کلمات جداگانه را از لیست چاپ میکند. اما اگر بخواهیم به جای آن، کاراکترهای جداگانه هر یک از کلمات موجود در لیست را چاپ کنیم چه؟
اینجاست که یک حلقه for in Python تو در تو بهتر کار میکند. حلقه اول (parent loop) کلمات را یکی یکی میگذراند. حلقه دوم (child loop) روی کاراکترهای هر یک از کلمات loop میشود.
words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
#This loop is fetching word from the list
print ("The following lines will print each letters of "+word)
for letter in word:
#This loop is fetching letter for the word
print (letter)
print("") #This print is used to print a blank line
خروجی:

4. for in Python با تابع range()
Python range() یکی از توابع داخلی (built-in) است. وقتی میخواهید حلقه for به تعداد مشخصی اجرا شود، یا میخواهید محدودهای از object ها را برای چاپ مشخص کنید، تابع range واقعاً خوب کار میکند. مثال زیر را در نظر بگیرید. من در این مثال میخواهم اعداد 1، 2 و 3 را چاپ کنم:
for x in range(3):
print("Printing:", x)
# Output
# Printing: 0
# Printing: 1
# Printing: 2
تابع range به جز start و stop ، پارامتر دیگری را هم میگیرد. این پارامتر step است. این پارامتر به تابع range میگوید که بین هر شمارش چند عدد skip شوند.
در مثال زیر، من از عدد 3 به عنوان step استفاده کردم و میتوانید ببینید که اعداد خروجی، اعداد بزرگتر از 3 هستند.
for n in range(1, 10, 3):
print("Printing with step:", n)
# Output
# Printing with step: 1
# Printing with step: 4
# Printing with step: 7
5. عبارت break با حلقه for
دستور break برای خروج پیش از موعد از حلقه for in Python استفاده میشود. هنگامی که یک شرط خاص برآورده میشود، از این دستور برای شکستن (break) حلقه for استفاده میشود.
فرض کنید لیستی از اعداد داریم و میخواهیم بررسی کنیم که آیا یک عدد خاص در این تعداد عدد وجود دارد یا خیر. میتوانیم روی لیست اعداد iterate کنیم و اگر عدد پیدا شد، از حلقه خارج شویم، زیرا نیازی به iterate روی عناصر باقیمانده نیست.
در این مورد، از شرط Python if else به همراه حلقه for in Python خود استفاده میکنیم.
nums = [1, 2, 3, 4, 5, 6]
n = 2
found = False
for num in nums:
if n == num:
found = True
break
6. عبارت continue با حلقه for
برای skip کردن اجرای حلقه body for در یک وضعیت خاص، میتوانیم از عبارت continue در یک حلقه for in Python استفاده کنیم.
فرض کنید لیستی از اعداد داریم و میخواهیم مجموع اعداد مثبت در این لیست را چاپ کنیم. برای skip کردن از حلقه for برای اعداد منفی، میتوانیم از عبارات continue استفاده کنیم.
nums = [1, 2, -3, 4, -5, 6]
sum_positives = 0
for num in nums:
if num < 0:
continue
sum_positives += num
print(f'Sum of Positive Numbers: {sum_positives}')
7. حلقه for in Python با یک بلوک else
همچنین میتوانیم از بلوک else با حلقه for in Python استفاده کنیم. بلوک else فقط زمانی اجرا میشود که حلقه for با دستور break خاتمه نیابد.
فرض کنید تابعی داریم که مجموع اعداد را اگر و فقط اگر همه اعداد زوج باشند، چاپ میکند.
در صورت وجود یک عدد فرد، میتوانیم از دستور break برای پایان دادن به حلقه for استفاده کنیم. همچنین میتوانیم مجموع اعداد را در قسمت else چاپ کنیم، تا زمانی که حلقه for به طور معمول اجرا شود، چاپ شود.
def print_sum_even_nums(even_nums):
total = 0
for x in even_nums:
if x % 2 != 0:
break
total += x
else:
print("For loop executed normally")
print(f'Sum of numbers {total}')
# this will print the sum
print_sum_even_nums([2, 4, 6, 8])
# this won't print the sum because of an odd number in the sequence
print_sum_even_nums([2, 4, 5, 8])
# Output
# For loop executed normally
# Sum of numbers 20
نتیجهگیری
حلقه for in Python بسیار شبیه به سایر زبانهای برنامه نویسی است. ما میتوانیم از دستورات break و continue با حلقه for برای تغییر اجرا (execution) استفاده کنیم. با این حال، در پایتون میتوانیم بلوک اختیاری else را هم در حلقه for in Python داشته باشیم.
امیدوارم ایدههای جالبی از آموزش بالا به ذهنتان رسیده باشد. اگر سؤالی دارید، نظراتتان را با ما در میان بگذارید.
Leave feedback about this