از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
حلقه for Python: استفاده با مثال
سرفصلهای مطلب
For دنبالههای حلقه ابزاری اساسی در پایتون هستند که تکرار کارآمد را ممکن میسازد، چه پردازش دادهها یا خودکار کردن وظایف تکراری.
الف for حلقه در کد پایتون به شما این امکان را می دهد که روی یک دنباله مانند لیست، تاپل، رشته یا محدوده تکرار کنید و یک بلوک کد را برای هر آیتم در دنباله اجرا کنید. تا زمانی ادامه می یابد که هیچ عنصر دیگری در دنباله to وجود نداشته باشد process.
تصور کنید اضافه کنید آقای به لیستی از صدها نام مرد. به جای اینکه کار را صدها بار تکرار کنید، الف for حلقه در پایتون می تواند این کار را به صورت خودکار انجام دهد. به حلقه بگویید از چه لیستی استفاده کند، و حلقه اولین مورد را انتخاب می کند، دستوری را که برای انجام آن تعریف شده است انجام می دهد و به آیتم بعدی می رود و عمل را تکرار می کند. این کار تا زمانی که همه موارد پردازش شوند ادامه می یابد.
در این مقاله، نحو اصلی a را توضیح خواهیم داد for حلقه و روش استفاده از این حلقه ها در برنامه های مثال. ما همچنین نگاهی دقیق تر به روش استفاده از پایتون خواهیم داشت for حلقه ها برای مدیریت وظایف پیچیده تر مانند مدیریت سرور.
نحو یک for حلقه در پایتون
در اینجا ساختار اصلی بدنه حلقه آمده است:
for حلقه_متغیر in دنباله:
بلوک کد برای اجرا
فرض کنید فهرستی از اعداد دارید و می خواهید print هر عدد
numbers = [1, 2, 3, 4, 5] for number in numbers: print(number)
در این مثال حلقه، توابع و متغیرهای زیر این عملیات را انجام می دهند:
numbersدنباله ای است که در این مورد یک لیست تعریف شده از اعداد است.numberمتغیر حلقه ای است که هر یک از مقادیر را از لیست می گیرد.print(number)عبارتی در بلوک کد است که برای هر آیتم در لیست اجرا می شود.
این حلقه از هر شماره در لیست عبور می کند و آن را به صورت زیر چاپ می کند:
1 2 3 4 5
روش استفاده از a for حلقه در پایتون
بیایید از طریق مکانیک از for حلقه ها در موارد استفاده مختلف برای درک بهتر کاربردهای بالقوه آنها.
لیست ها و for حلقه ها
تصور کنید که در حال مدیریت یک فروشگاه آنلاین هستید و می خواهید برای لیست قیمت محصولات تخفیف 10 درصدی اعمال کنید.
با تکرار لیست قیمت محصولات و اعمال تخفیف می توان قیمت ها را به سرعت به روز رسانی و نمایش داد روی وب سایت
# List of product prices in dollars
product_prices = [100, 150, 200, 250, 300]
# Discount percentage
discount_percentage = 10
# Function to apply discount
def apply_discount(price, discount):
return price - (price * discount / 100)
# List to store discounted prices
discounted_prices = []
# Iterating through the list and applying the discount
for price in product_prices:
discounted_prices.append(apply_discount(price, discount_percentage))
# Printing the discounted prices
print("Discounted Prices:", discounted_prices)
را def apply_discount(price, discount) تابع لیست قیمت محصول و درصد تخفیف را به عنوان آرگومان می گیرد و پس از اعمال تخفیف، قیمت را برمی گرداند. تخفیف به صورت درصدی از قیمت اصلی محاسبه می شود (price * discount / 100).
را for حلقه از طریق هر قیمت در product_prices فهرست برای هر قیمت، آن را اجرا می کند apply_discount با قیمت فعلی و درصد تخفیف عمل کنید، سپس نتیجه را به آن اضافه کنید discounted_prices فهرست سپس این لیست به عنوان مرحله نهایی حلقه چاپ می شود.
تاپل ها و for حلقه ها
تاپل ها ساختارهای داده ای هستند که پس از تعریف نمی توان آنها را تغییر داد. آنها شبیه به لیست ها هستند، اما برای پردازش سریعتر هستند زیرا نمی توان آنها را تغییر داد. تاپل ها با استفاده از نوشته می شوند () به جای [] که لیست ها استفاده می کنند.
به عنوان مثال، بیایید چند نام دانش آموز و نمرات مربوط به آنها را در نظر بگیریم. به عنوان یک معلم، شما باید به سرعت تعیین کنید که کدام دانش آموزان امتحان را پس داده اند. با تکرار در میان چند نام و نمرات دانش آموزان، به راحتی می توانید و print از نتایج
# Tuple of student names and scores
students_scores = (("Alice", 85), ("Lin", 76), ("Ivan", 65), ("Jabari", 90), ("Sergio", 58), ("Luisa", 94), ("Elvinas", 41))
# Passing score
passing_score = 70
# Iterating through the tuple and determining who passed
for student, score in students_scores:
if score >= passing_score:
print(f"{student} passed with a score of {score}.")
else:
print(f"{student} failed, scoring {score}.")
این مثال حلقه روش استفاده از تاپل را برای ذخیره دادههای مرتبط مانند نام و نمرات دانشآموز نشان میدهد. همچنین نشان می دهد که چگونه یک for حلقه هر عنصر در تاپل را پردازش می کند، آن را سازماندهی می کند و نتایج تعریف شده را چاپ می کند.
رشته ها و for حلقه ها
رشته ها به شما امکان استفاده از a را می دهند for حلقه برای تکرار روی هر کاراکتر در رشته یک به یک.
تصور کنید در حال کار هستید روی پروژه ای که شامل ایجاد کلمات اختصاری برای سازمان های مختلف است. شما رشته هایی دارید که جملات را نشان می دهند و می خواهید از حروف بزرگ هر کلمه یک مخفف ایجاد کنید. با تکرار رشته و گرفتن حروف بزرگ هر کلمه، می توانید به راحتی کلمات اختصاری مورد نظر را ایجاد کنید.
def create_acronym_from_capitals(sentence):
# Creating an acronym by taking only the capital letters of each word
acronym = "".join(char for char in sentence if char.isupper())
return acronym
# String representing a sentence
sentence = "National Aeronautics and Space Administration"
# Creating the acronym
acronym = create_acronym_from_capitals(sentence)
# Printing the acronym
print(f"The acronym is: {acronym}")
محدوده ها و for حلقه ها
را range() تابع در پایتون دنباله ای از اعداد را تولید می کند. معمولا در استفاده می شود for حلقه ها برای تکرار بر روی یک دنباله از اعداد. را range() تابع می تواند یک، دو یا سه آرگومان داشته باشد:
range(stop): اعداد از 0 تا را تولید می کند توقف – 1.range(start, stop): اعداد را از شروع کنید به توقف – 1.range(start, stop, step): اعداد را از شروع کنید به توقف – 1، افزایش توسط گام.
فرض کنید در حال توسعه یک ابزار آموزشی هستید که به دانش آموزان کمک می کند تا جداول ضرب را یاد بگیرند. می توانید استفاده کنید range() تابعی برای تولید اعداد جدول. مثال حلقه زیر راه حلی را برای مثال ما نشان می دهد.
# Function to generate multiplication table for a given number
def multiplication_table(number, up_to):
for i in range(1, up_to + 1):
print(f"{number} x {i} = {number * i}")
# Generate multiplication table for 5 up to 10
multiplication_table(5, 10)
- تعریف تابع:
multiplication_tableتابع دو آرگومان می گیرد: عدد (thenumberکه جدول برای آن تولید می شود) وup_to(محدوده ای که جدول تولید می شود). - با استفاده از
range():range(1, up_to + 1)اعداد از 1 تا مقدار را ایجاد می کندup_to. - حلقه:
forحلقه از طریق این اعداد تکرار می شود و برای هر تکرار، نتیجه ضرب را چاپ می کند.
تو در تو for حلقه ها
حلقه های تو در تو حلقه هایی در داخل حلقه هستند. برای هر چرخه حلقه بیرونی، حلقه داخلی هر عملکردی را که برای انجام آن تعریف شده است، اجرا می کند. این ساختار برای تکرار بر روی ساختارهای داده چند بعدی مانند ماتریس ها یا شبکه ها مفید است.
در اینجا نحو اصلی برای تودرتو آمده است for حلقه ها در پایتون:
for متغیر_ بیرونی in outer_sequence:
for متغیر_ درونی in توالی_درونی:
کد برای اجرا در حلقه داخلی
به عنوان مثال، هنگام کار روی یک برنامه پردازش تصویر، باید برای هر پیکسل در یک تصویر دو بعدی که به صورت ماتریس نمایش داده می شود، یک فیلتر اعمال کنید. می توانید از حلقه های تو در تو برای تکرار در هر پیکسل استفاده کنید و این فیلتر را اعمال کنید.
# Example 3x3 image matrix. Here: grayscale values image_matrix = [ [100, 150, 200], [50, 100, 150], [0, 50, 100] ] # Function to apply a simple filter, for example, increasing brightness def apply_filter(value): return min(value + 50, 255) # Ensure the value does not exceed 255 # Applying the filter to each pixel for i in range(len(image_matrix)): for j in range(len(image_matrix[i])): image_matrix[i][j] = apply_filter(image_matrix[i][j]) # Printing the modified image matrix for row in image_matrix: for pixel in row: print(pixel, end=" ") print()
این مثال حلقه نشان می دهد که حلقه های تودرتو چگونه می توانند process هر عنصر در یک ساختار داده چند بعدی، که یک نیاز رایج در پردازش تصویر و سایر کاربردها است:
- تعریف ماتریس. را
image_matrixیک شبکه 3×3 از مقادیر پیکسل را نشان می دهد. - عملکرد فیلتر. را
apply_filterعملکرد روشنایی یک پیکسل را افزایش می دهد و اطمینان حاصل می کند که از 255 تجاوز نمی کند. - تو در تو
forحلقه ها. حلقه بیرونی از طریق هر ردیف و حلقه داخلی از طریق هر عنصر در ردیف پیکسل تکرار می شود. - اعمال فیلتر. فیلتر روی هر پیکسل اعمال می شود و ماتریس اصلاح شده با مقادیر جدید چاپ می شود.
اظهارات: break و continue با for حلقه ها
را break دستور به شما اجازه می دهد تا قبل از تکمیل حلقه از آن خارج شوید. زمانی که break دستور اجرا می شود، حلقه بلافاصله خاتمه می یابد، و برنامه با عبارت بعدی بعد از حلقه ادامه می یابد.
را continue عبارت اجازه می دهد تا از تکرار فعلی یک حلقه عبور کرده و به تکرار بعدی بروید. زمانی که continue عبارت مواجه می شود، تکرار بعدی آغاز می شود.
را break بیانیه
را break بیانیه به ویژه هنگام جستجوی یک مورد در لیست مفید است. هنگامی که مورد پیدا شد، دیگر نیازی به ادامه دادن حلقه در بقیه لیست نیست.
در مثال حلقه زیر، حلقه مورد را جستجو می کند گیلاس در لیست وقتی پیدا می کند گیلاس، پیامی را چاپ می کند و با استفاده از حلقه از آن خارج می شود break. اگر مورد پیدا نشد، else بلوک پس از اتمام حلقه اجرا می شود تا امکان خاتمه حلقه فراهم شود.
items = ['apple', 'banana', 'cherry', 'date', 'elderberry']
search_item = 'cherry'
for item in items:
if item == search_item:
print(f'Found {search_item}!')
break
# Optional else clause
else:
print(f'{search_item} not found.')
را continue بیانیه
استفاده از را در نظر بگیرید continue بیانیه هنگام پردازش لیستی که در آن موارد خاصی باید نادیده گرفته شوند روی یک شرط
در مثال زیر حلقه نام میوه هایی را که حاوی حرف نیستند چاپ می کند الف. زمانی که حلقه با آیتمی با الف به نام آن، continue بیانیه از print(item) بیانیه برای آن تکرار
items = ['apple', 'banana', 'cherry', 'lemon', 'elderberry'] for item in items: if 'a' in item: continue print(item)
عملکرد: enumerate با for حلقه ها
در پایتون، enumerate() یک تابع داخلی است که یک شمارنده به یک آیتم تکرار شده اضافه می کند و آن را به عنوان یک شیء شمارش شده برمی گرداند. این می تواند به ویژه برای حلقه زدن بر روی یک لیست یا هر آیتم دیگری که در آن شاخص و مقدار هر مورد مورد نیاز است مفید باشد.
بهعنوان یک توسعهدهنده، میتوانید از این توابع استفاده کنید تا با حذف نیاز به مدیریت دستی متغیرهای متغییر، کد خود را خواناتر و مختصرتر کنید. آنها همچنین به کاهش خطر خطاهایی که هنگام افزایش دستی شمارنده رخ می دهد کمک می کنند.
در اینجا یک مثال ساده برای نشان دادن چگونگی وجود دارد enumerate() می توان در الف استفاده کرد for حلقه:
# List of fruits
fruits = ['apple', 'banana', 'cherry']
# Using enumerate to get index and value
for index, fruit in enumerate(fruits, start=1):
print(f"{index}: {fruit}")
در این مثال حلقه، enumerate(fruits, start=1) جفت شاخص و میوه تولید می کند که شاخص را از 1 شروع می کند:
1: apple 2: banana 3: cherry
با استفاده از for حلقه هایی با وظایف پیچیده
با استفاده از پایتون for حلقه ها می توانند به طور قابل توجهی مدیریت فرآیندهای پیچیده و در عین حال تکراری را ساده کنند و کارهای روتین را کارآمدتر و کمتر خسته کننده کنند. یک مثال عالی از چنین چیزی process مدیریت سرور خصوصی مجازی (VPS) است.
For حلقهها به شما امکان میدهند کارهایی مانند بهروزرسانی بستههای نرمافزاری، پاکسازی فایلهای گزارش یا راهاندازی مجدد خدمات را خودکار کنید. به جای اجرای دستی دستورات برای هر آیتم، می توانید اسکریپتی بنویسید که روی لیست هایی که تعریف کرده اید تکرار می شود و اقدامات لازم را انجام می دهد. این نه تنها باعث صرفه جویی در زمان می شود، بلکه تضمین می کند که سرورهای شما به طور مداوم نگهداری و نظارت می شوند.
سرورهای مجازی اغلب اجرا می شوند روی سیستم عامل های مبتنی بر لینوکس، بنابراین مطمئن شوید که به عقب بروید روی نصب بسته های پایتون مورد نیاز روی اوبونتو
همچنین میتوانید از میزبانی VPS برای مدیریت کارآمدتر سرورهای خود استفاده کنید. راه حل های خارج از جعبه ما برای ساده سازی مدیریت فایل ها و فرآیندهای نگهداری سرورها طراحی شده اند. جدا از صرفه جویی در زمان، میزبانی VPS با فایروال های داخلی، دسترسی SSH و سایر اقدامات امنیتی به اطمینان از ایمنی سیستم های شما کمک می کند.


به چند نمونه از روش استفاده از پایتون نگاهی بیندازید for حلقه ها می توانند گردش کار مدیریت سرور شما را کارآمدتر و کمتر مستعد خطا کنند.
پردازش خودکار فایل
در مثال حلقه زیر، می توانید از یک حلقه برای خودکارسازی فایل ها استفاده کنید. حلقه زیر یک دایرکتوری را اسکن میکند، فایلها را از پوشهها جدا میکند و فهرستی از تمام فایلهای داخل با مسیر محلیشان ارائه میکند.
import os
directory = '/path/to/directory'
# Iterate over all files in the directory
for filename in os.listdir(directory):
file_path = os.path.join(directory, filename)
if os.path.isfile(file_path):
print(f'File: {filename, file_path}')
در این مثال، متغیرها و توابع زیر این عملیات را انجام می دهند:
/path/to/directoryیک مکان نگهدار است که باید با مسیر محلی برای پردازش دایرکتوری جایگزین شود.os.listdir(directory)تمام ورودی های دایرکتوری مشخص شده را فهرست می کند.os.path.join(directory, filename)مسیر کامل فایل را می سازد.os.path.isfile(file_path)بررسی می کند که آیا مسیر یک فایل است (و نه یک دایرکتوری).
دانستن محل دقیق فایل ها به ایجاد پشتیبان گیری دقیق و بازیابی آنها در صورت نیاز کمک می کند.
مدیریت لاگ های سرور
در اینجا مثالی آورده شده است که روش تجزیه فایل های گزارش را نشان می دهد روی یک VPS با یک حلقه برای پایتون. این اسکریپت یک فایل گزارش را می خواند، اطلاعات مربوطه را استخراج می کند و آن را چاپ می کند. برای این مثال، ما با یک گزارش دسترسی آپاچی سروکار داریم.
import re
log_file_path="/path/to/access.log"
# Regular expression to parse Apache log lines
log_pattern = re.compile(
r'(?P<ip>\d+\.\d+\.\d+\.\d+) - - \[(?P<date>.*?)\] "(?P<request>.*?)" (?P<status>\d+) (?P<size>\d+)'
)
with open(log_file_path, 'r') as log_file:
for line in log_file:
match = log_pattern.match(line)
if match:
log_data = match.groupdict()
print(f"IP: {log_data['ip']}, Date: {log_data['date']}, Request: {log_data['request']}, Status: {log_data['status']}, Size: {log_data['size']}")
# Example output:
# IP: 192.168.1.1, Date: 01/Jan/1403:12:34:56 +0000, Request: GET /index.html HTTP/1.1, Status: 200, Size: 1024
در این مثال، متغیرها و توابع زیر این عملیات را انجام می دهند:
- را
log_patternعبارت منظم برای مطابقت و استخراج بخشهایی از هر خط ورود استفاده میشود. - را
with open(log_file_path, 'r') as log_fileبیانیه فایل log را برای خواندن باز می کند. - اسکریپت روی هر خط در فایل log تکرار می شود، آن را با عبارت معمولی مطابقت می دهد و داده های مربوطه را استخراج می کند.
/path/to/access.log یک مکان نگهدار برای مسیری به فایل لاگ آپاچی است. یک فایل لاگ معمولی آپاچی از چندین خط با فرمت و اطلاعات زیر تشکیل شده است:
192.168.1.1 - - [01/Jan/2024:12:34:56 +0000] "GET /index.html HTTP/1.1" 200 1024
را for حلقه این اطلاعات را تجزیه می کند و به دسته های زیر گروه بندی می کند:
IP: 192.168.1.10, Date: 01/Jan/1403:12:35:40 +0000, Request: GET /services HTTP/1.1, Status: 200, Size: 512
این اسکریپت را می توان برای انجام کارهای مختلفی گسترش داد، مانند:
- فیلتر کردن سیاهههای مربوط روی معیارهایی مانند کدهای وضعیت یا آدرس IP.
- تولید گزارش روی ترافیک، خطاها یا سایر معیارها.
- هشدار دهنده روی رویدادهای خاص، مانند تلاش های مکرر برای ورود ناموفق.
انجام وظایف سیستم
می توانید از پایتون استفاده کنید for حلقه برای خودکار به روز رسانی بسته روی یک VPS این اسکریپت از ماژول subprocess برای اجرای دستورات سیستم استفاده می کند.
import subprocess
# List of packages to update
packages = ["package1", "package2", "package3"]
# Update package list
subprocess.run(["sudo", "apt-get", "update"])
# Upgrade each package
for package in packages:
subprocess.run(["sudo", "apt-get", "install", "--only-upgrade", package])
print("Package updates completed.")
در این اسکریپت، لیست بسته ابتدا با استفاده از به روز رسانی می شود sudo apt-get update فرمان
سپس، اسکریپت از طریق هر بسته در لیست بسته ها حلقه می زند و با استفاده از آن، آن را ارتقا می دهد sudo apt-get install --only-upgrade فرمان
باید آن را اصلاح کنید "package1", "package2", "package3" متغیرهایی در لیست بسته ها با بسته های واقعی که می خواهید به روز کنید.
اگر در تلاش برای اصلاح این اسکریپت گیر افتاده اید، درباره اجرای اسکریپت های پایتون در لینوکس بیشتر بخوانید.
نتیجه گیری
مسترینگ for حلقه ها به شما کمک می کند پروژه های پایتون را کارآمدتر و موثرتر مدیریت کنید. با for حلقهها، میتوانید با طیف وسیعی از وظایف، مانند خودکار کردن کارهای تکراری و تمیز نگه داشتن کد، مقابله کنید. به عنوان مثال، با استفاده از پایتون for حلقهها میتوانند مدیریت یک VPS را با خودکارسازی بهروزرسانیها، استخراج اطلاعات از گزارشها و تولید گزارشهای مبتنی بر کارآمدتر کنند. روی این اطلاعات
سعی کنید با دنباله ها و عملیات های مختلف آزمایش کنید تا پتانسیل کامل را ببینید for حلقه ها در عمل اگر سوالی دارید یا نیاز به مثال های بیشتری دارید، در قسمت نظرات مطرح کنید.
روش نوشتن الف for حلقه در Python پرسش و پاسخ
حلقه for در پایتون چیست؟
الف for حلقه در پایتون روی یک دنباله مانند یک لیست، یک تاپل یا یک رشته تکرار می شود و یک بلوک کد را برای هر آیتم اجرا می کند. برای کارهای تکراری مانند پردازش موارد در یک لیست مفید است.fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
آیا می توانم از یک حلقه for برای تکرار روی یک رشته در پایتون استفاده کنم؟
بله، می توانید از a استفاده کنید for حلقه برای تکرار روی یک رشته در پایتون. این برای کارهایی مانند پردازش یا تجزیه و تحلیل هر کاراکتر در یک رشته مفید است. در مثال زیر، حلقه روی هر کاراکتر در متن رشته تکرار می شود و آن را چاپ می کند.
چگونه می توانم قبل از اینکه تمام تکرارها در پایتون کامل شود، از حلقه for خارج شوم؟
در پایتون می توانید از a خارج شوید for قبل از اینکه تمام تکرارها را با استفاده از break بیانیه این به ویژه زمانی مفید است که میخواهید پس از انجام یک شرط خاص، مانند یافتن یک مورد خاص در یک لیست، حلقه را متوقف کنید.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1403-12-26 10:50:05

