از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
ساختار حلقه For-Else پایتون چگونه کار می کند؟
سرفصلهای مطلب
پایتون از ساختار حلقه for-else که کمتر شناخته شده اما فوق العاده مفید است، پشتیبانی می کند.
اگر در پایتون برنامه نویسی کرده اید، ممکن است از آن استفاده کرده باشید for حلقه برای تکرار بر روی آیتم های تکرارپذیر مانند لیست ها. اما برای برخی موارد استفاده از حلقه for همراه با else بند می تواند مفید باشد.
در این آموزش، روش استفاده از حلقههای for-else را با کدنویسی چند مثال برای درک روش عملکرد آنها یاد خواهیم گرفت.
نحو از for-else در پایتون حلقه بزنید
در پایتون، for-else حلقه ساختاری است که a را ترکیب می کند for حلقه با یک else عبارت.
بدنه حلقه معمولاً یک وضعیت را بررسی می کند. اگر شرط باشد True، کنترل از حلقه خارج می شود. این else بلوک فقط زمانی اجرا می شود که for حلقه به طور معمول بدون مواجهه با a کامل می شود break بیانیه.
بیایید به یک ژنریک نگاه کنیم for-else ساختار حلقه:
for item in iterable:
# loop body
if condition:
break
else:
# else body
در اینجا خلاصه ای از روش کار این است:
- این
forحلقه روی هر یک از آیتم ها تکرار می شودiterable. - اگر
conditionاستTrueو کنترل از حلقه خارج می شود، theelseبلوک حذف شده است. - اگر
forحلقه روی همه آیتم ها تکرار می شودiterable—بدون برآورده شدن شرط خروج از حلقه—theelseبلوک اجرا می شود.
حالا اجازه دهید چند مثال را کدنویسی کنیم.
مثال 1: پیدا کردن یک عدد اول
بیایید استفاده کنیم for-else حلقه برای بررسی اول بودن یک عدد. همانطور که ممکن است به خاطر داشته باشید، عددی اول است که فقط بر 1 و خودش بخش پذیر باشد و هیچ عامل دیگری نداشته باشد.
به قطعه کد زیر نگاه کنید:
import math
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(math.sqrt(n))+ 1):
if n % i == 0:
print(f"{n} is divisible by {i}. Not a prime number.")
break
else:
# This block executes if the loop did not encounter a break statement
print(f"{n} is a prime number.")
return True
اینجا is_prime() تابع ابتدا شماره ورودی را بررسی می کند n کمتر یا مساوی 1 است. اگر چنین است، برمی گردد False از آنجایی که اعداد اول بزرگتر از 1 هستند. به یاد داشته باشید که کوچکترین عدد اول 2 است.
ما استفاده می کنیم for حلقه برای تکرار در محدوده اعداد از 2 تا مربع root از n (شامل).
- اگر
nبر هر کدام بخش پذیر استiدر این محدوده (2√n)، به این معنیnیک عدد اول نیست، زیرا ما یک عامل پیدا کرده ایم. تابع یک پیام را چاپ می کند و از حلقه خارج می شود. وelseبلوک حذف شده است. - اگر حلقه بدون یافتن هیچ عاملی کامل شود – بدون زدن a
breakبیانیه –elseبلوک اجرا می شود تابع آن را چاپ می کندnیک عدد اول است و برمی گرددTrue.
می توانید تأیید کنید که is_prime() تابع با چند فراخوانی تابع همانطور که انتظار می رود کار می کند:
# Test with a non-prime number
is_prime(10)
# Output: 10 is divisible by 2. Not a prime number.
# Test with a prime number
is_prime(13)
# Output: 13 is a prime number.
📑 یک یادداشت روی بررسی اعداد اول
احتمالاً حلقه را روی همه اعداد از 2 تا اجرا می کنید n برای بررسی اینکه آیا عاملی وجود دارد. اما در واقع برای تکرار تا حد کافی کافی است مربع root از n. چرا؟
به یاد بیاورید که اگر p یک عامل است، شما همیشه می توانید پیدا کنید q به طوری که p x q = n:
- اگر
nپس یک مربع کامل استp = q. - اگر
nمربع کاملی نیست، شما موارد زیر را دارید. اگرpکمتر است از√n،qبزرگتر است از√n. و اگرqبزرگتر است از√n،pکمتر است از√n.
💡 پس اگر فاکتوری تا √n، شما نمی توانید آن را پیدا کنید √n یا
مثال 2: جستجوی یک آیتم در لیست
بیایید مثال دیگری بزنیم که در آن for-else حلقه مفید است.
به شرح زیر search item() تابع یک لیست و یک آیتم می گیرد. هدف این است که موارد موجود در لیست را حلقه بزنید و بررسی کنید که آیا آیتم وجود دارد یا خیر. برای این مشکل می توانید از ساختار حلقه for-else مانند زیر استفاده کنید:
def search_item(lst, item):
for i in lst:
if i == item:
print(f"Found {item} in the list.")
break
else:
print(f"{item} is not in the list.")
اگر item یافت می شود که کنترل از حلقه خارج می شود. این else مسدود کردن تنها در صورتی فعال می شود که مورد در لیست یافت نشود.
بیایید با چند فراخوانی تابع را تأیید کنیم:
# Test with a list containing the item
search_item([1, 2, 3, 4, 5], 3)
# Output: Found 3 in the list.
# Test with a list not containing the item
search_item([1, 2, 3, 4, 5], 6)
# Output: 6 is not in the list.
بسته بندی
امیدوارم این آموزش را پیدا کرده باشید روی را for-else ساخت حلقه در پایتون مفید است.
این می تواند مفید باشد، به خصوص زمانی که خروج از حلقه پس از تکرار روی همه موارد – بدون خروج زودتر از حلقه – مورد توجه است. گفتنی است، اگر نیازی به خروج مشروط از حلقه ندارید، به a نیاز ندارید for-else حلقه، و ساده for حلقه کافی خواهد بود.
به کدنویسی ادامه دهید. تا آموزش بعدی!
منتشر شده در 1403-06-19 20:49:07

