کاربرد else با حلقه ها چیست ؟
کاربرد else با حلقه ها چیست ؟
تا به حال امکاناتی را در زبان پایتون ملاحظه کردهایم که وجود یا عدم وجود آنها، تأثیر چندانی بر توانایی ما در برنامهنویسی نداشتهاند. اشتمال لیستها، توابع با فرم lambda ،استفاده از سمیکلـن و حتـی اسـتفاده از حلقـههـاي for تنها براي سادهتر ساختن برنامه نویسی و خواناکردن کد سـاخته شـدهانـد. مـا مـیتـوانیم بـدون استفاده از این قابلیتها هم برنامههایمان را بنویسیم. در این بخش یکی از امکانات پایتون را بررسی میکنیم که وجود آن با اینکه شاید آنچنـان هـم ضروري نیست، اما در بعضی کاربردها میتواند مفید باشد. در بسیاري از برنامهها میخواهیم مقادیر یکسانی را بر اساس یک خصوصـیت مرتـب کنـیم. در بخش 19-6 مثالی را دیدید که بازیکنان بازي گلف را بر اساس امتیاز آنها از کم به زیاد مرتب میکرد. در برخی از کاربردها میخواهیم لیستی از رشتهها را بر اساس طول رشته مرتب کنیم. در اینجا تابعی مینویسیم که هدف آن برآوردن این منظور است. روشهاي متنوعی براي انجـام این کار وجود دارد. روشی که مـا در پـیش مـیگیـریم بسـیار انعطـافپـذیر اسـت و مـیتـوانیم انـواع مرتبسازيها از جمله این نوع مرتبسازي را در آن انجام دهیم. ما لیستی که بهعنوان آرگومان به تابع ارسـال مـیکنـیم را listOfStrings مـینـامیم و میخواهیم لیست دیگري با همـین اعضـاء، امـا بـا یـک ترتیـب ویـژه بسـازیم. آن را sortedList مینامیم. ابتدا یک عضو را از listOfStrings برمیداریـم و در sortedList قـرار مـیدهـیم. حال در هر مرتبه یک عضو را برمیداریم و اندازة آن را بـا انـدازة عضـوهـاي sortedList مقایسـه میکنیم. اگر بزرگتر باشد، عضو بعديِ sortedList را بررسی میکنیم و اگر کوچکتر بود قبـل از آن عضو قرار میدهیم. در صورتی که این رشته از همۀ رشتههاي sortedList بزرگتر بود آن را به آخر این لیست اضافه میکنیم:
def sort(listOfStrings):
sortedList = []
sortedList.append(listOfStrings[0])
for i in range(1, len(listOfStrings)):
for j in range(len(sortedList)):
if len(listOfStrings[i]) < len(sortedList[j]):
sortedList[j:j] = listOfStrings[i:i+1]
break
if listOfStrings[i] not in sortedList:
sortedList.append(listOfStrings[i])
return sortedList
به شرطی که پس از حلقۀ for دوم گذاشتهایم، دقت کنید. اگر اندازة رشتۀ مورد بررسی مـا از اندازة همۀ رشتههاي درون sortedList بزرگتر بوده باشد، پس هیچگاه به این لیست اضافه نشده است. در اینجا ما آن را به آخر لیست اضافه میکنیم. جالب است بدانید که میتوانید به جاي استفاده از این شرط از کلمۀ else اسـتفاده کنیـد. در صورتی که کلمۀ else را در یک کنگرهگذاري یکسان با حلقهها استفاده کنید، مـیتوانیـد از خاصـیت جدیدي بهره بگیرید. اگر تکرار حلقه با موفقیت به اتمام برسد، دستور else هم اجرا میشود، اما اگـر توسط یک دسـتور داخلـی ماننـد break یـا return از حلقـه خـارج شـویم، دسـتور else اجـرا نمیگردد. در اینجا شما میتوانید به جاي دستور شرطی دوم از کلمۀ else استفاده کنید:
def sort(listOfStrings):
sortedList = []
sortedList.append(listOfStrings[0])
for i in range(1, len(listOfStrings)):
for j in range(len(sortedList)):
if len(listOfStrings[i]) < len(sortedList[j]):
sortedList[j:j] = listOfStrings[i:i+1]
break
else:
sortedList.append(listOfStrings[i])
return sortedList
بهترین زمان براي بهکار بردن این نحوة نگارش، زمانی اسـت کـه دسـتورات شـرطی زیـادي در حلقه وجود دارد که در صورت اجرا شدن دستورات درونی آنها، روند تکرار حلقه متوقف مـیشـود. اگـر بخواهیم دستور خاصی را تنها زمانی که حلقه بهطور کامل اجرا شده باشد، اجرا کنیم میتـوانیم از ایـن نحوة نگارش استفاده کنیم.
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید