از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
حلقه 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