آشنایی با حلقه ها در پایتون
حلقهها بخش جداییناپذیر از هر زبان برنامهنویسی هستند. زمانی که بخواهیم عملی را روی دادهای بارها تکرار کنیم از حلقهها استفاده میکنیم. بنابراین حلقهی for و while بخش مهمی از پایتون به حساب میآیند.
([Range(start, stop[, step
سه آرگومان ورودی این متد، شروع، پایان و گام های آن را تعیین میکند. هر سه آرگومان میبایست از نوع صحیح باشند و برای تعیین آرگومان stop منفی، آرگومان گام را نیز به شکل منفی تعیین کنید:
برای مثال (range(i , j، این دنباله را [I, i+1, i+2, …, j-1] بازمیگرداند. به صورت پیش فرض شروع دنباله از صفر و پیش فرض گام هر دنباله 1 است.
مزیت استفاده از range نسبت به list و tuple این است که بدون در نظر گرفتن محدوده اعداد دنبالهاش، حجم کمی از حافظه را میگیرد:
start = 0 stop = 10 print(range(start, stop, 2)) print(type(range(start, stop, 2))) print(list(range(start, stop, 2))) """ output: range(0, 10, 2) <class 'range'> [0, 2, 4, 6, 8] """
range عملیات معمول دنبالهها را اجرا میکند (common sequence operation) به جز الحاق و تکرار. برای مثال:
var1 = range(2,20,2) print(list(var1)) print(11 in var1) print("the index of 10 is: ",var1.index(10)) print("the forth item is: ",var1[4]) """ output: [2, 4, 6, 8, 10, 12, 14, 16, 18] False the index of 10 is: 4 the forth item is: 10 """
حلقه for
به کمک ساختار for میتوان عناصر لیست را پیمایش و عملیاتی را بر روی هر یک از عناصر انجام داد. ساختار کلی دستور for به صورت زیر است:
for item in sequence: statements to do stuff
sequence در قطعه کد بالا میتواند string ،list ،tuple و حتی dictionary باشد.
با توجه به مثال بالا عناصر موجود در sequence یکی یکی به item اختصاص داده میشوند و درون بلاک اجرا میشود، این کار تا زمانی تکرار میشود که عناصر دنباله به پایان برسند. به مثال زیر توجه کنید:
my_list = ["python", "javascript", "java", "shell", "ruby"] for item in my_list: print(item.capitalize()) print("there is no more item in the list") """ output: Python Javascript Java Shell Ruby there is no more item in the list """
مثالی دیگر برای استفاده از لیستی از tuple ها:
my_list = [(2,4), (6,8), (10,12)] for tup in my_list: print(tup) """ output: (2, 4) (6, 8) (10, 12) """
حلقه for/else
پایتون استفاده از عبارت else را به همراه حلقه for پشتیبانی میکند. عبارت else زمانی اجرا میشود که حلقهی for به پایان رسیده باشد و این به این معنی است که با دستور break مواجه نشده است.
عبارت else زمانی مفید است که در حلقهی for در جستجوی عنصری باشیم. اگر عنصر یافت شود به وسیلهی دستور break از حلقه خارج میشود و در غیر این صورت عبارت else اجرا میشود:
my_list = ["python", "javascript", "java", "shell", "ruby"] for item in my_list: if ( item == "android" ): print(item) break else: # Didn't find anything.. print("not found") # output: not found
حلقهی for با استفاده از range
این تابع برای پیمایش درون ترتیبی از اعداد استفاده میشود.در این مثال حلقهی for سه بار اجرا میشود:
for item in range(10,13): print("we're on time %d" %(item)) """ output: we're on time 10 we're on time 11 we're on time 12 """
حلقهی for با استفاده از dictionary
برای استفاده از کلید یک دیکشنری در حلقه for داریم:
my_dict = { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3' } for k in my_dict: print(k) """ output: key1 key2 key3 """
برای استفاده از هر کلید و مقدار آن در دیکشنری در حلقه for داریم:
my_dict = { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3' } for k, v in my_dict.items(): print("key : {0}, value : {1}".format(k,v)) """ output: key : key1, value : value1 key : key2, value : value2 key : key3, value : value3 """
حلقه while
به کمک while میتوان بخشهایی از کد را تکرار کرد تا زمانی که شرط آن درست باشد. ساختار کلی دستور while به صورت زیر است:
while expression: statements to do stuff
در قسمت expression شرط را مینویسیم. براساس آن شرط تا زمانی که مقدار expression برابر true باشد، حلقه اجرا خواهد شد. در صورتی که شرط از همان ابتدا false باشد هیچگاه دستور موجود در بلاک اجرا نمیشود.
در قسمت statement، دستوراتی که باید در صورت true بودن expression اجرا شوند را مینویسیم.
با توجه به اینکه for در پایتون بسیار قدرتمند است، while به ندرت مورد استفاده قرار میگیرد به جز مواردی که نیاز به ورودی کاربر باشد:
count = 0 while count < 6: print("the count is:", count) count +=1 print("all done!") """ output: the count is: 0 the count is: 1 the count is: 2 the count is: 3 the count is: 4 the count is: 5 all done! """
اگر شرط حلقه while همیشه true باشد به آن حلقه بینهایت یا نا محدود گفته میشود. گاهی میخواهیم برنامهای داشته باشیم که حلقه for تا بینهایت تکرار شود و تا زمانی که کاربر دستور نداده است به تکرار خود ادامه دهد. برای مثال:
var1 = 1 while var1 == 1: # this is an infinite loop var2 = input("Enter a number : ") print("you entered this number: ", var2 ) """ output: Enter a number : 3 you entered this number: 3 Enter a number : 22 you entered this number: 22 Enter a number : -1 you entered this number: -1 Enter a number : Process finished with exit code 1 """
دستور continue و break
بوسیله دستور continue میتوان در بخشی از block ساختار while یا for، روند اجرا را به ابتدای حلقه و به تکرار بعدی منتقل کرد. بوسیله دستور break میتوان روند اجرای حلقه را متوقف کرد و از حلقه خارج شد:
for char in "zero to hero": if ( char == ' '): break print(char) print("all done!") """ output: z e r o all done! """
در مثال بالا با دیدن فاصله دستور Break اجرا میشود و از حلقه خارج میشود در نتیجه ادامهی رشته را چاپ نمیکند.
for char in "zero to hero": if ( char == ' '): continue print(char) print("all done!") """ output: z e r o t o h e r o all done! """
continue در این مثال با دیدن فاصله روند اجرا را به حلقهی بعد منتقل میکند. بنابراین فاصلهها چاپ نمیشوند.
حلقههای تودرتو (nested loops)
حلقههای تودرتو به این معناست که درون حلقهای که ساختهایم، میتوانیم یک یا چند حلقه دیگر نیز تعریف کنیم و درون آنها نیز میتوان حلقههای دیگری را تعریف کرد. تنها موردی که در هنگام تعریف حلقههای تودرتو باید رعایت کنیم، این است که نام متغیر حلقهها، متفاوت باشد.
ساختار کلی حلقههای for تودرتو:
for item1 in sequence: for item2 in sequence: statements to do stuff statements to do stuff
ساختار کلی حلقههای while تودرتو:
while expression: while expression: statements to do stuff statement to do stuff
برای یادگیری بیشتر به مثالهای زیر توجه کنید.
var1 = int(input("please enter an integer: ")) i = 1 while i <= var1: print('*' * i) i += 1 """ output: please enter an integer: 4 * ** *** **** """
var1 = int(input("please enter an integer: ")) i = var1 while i <= var1: print('*' * i) i -= 1 if i == 0: break """ output: please enter an integer: 4 **** *** ** * """
var1 = int(input("please enter an integer: ")) if var1 >= 3: for i in range (1, var1+1): while i > 0: print("*",end="") i = i - 1 print("\r") for j in range (var1-1, 0, -1): while j > 0: print("*",end="") j = j - 1 print("\r") """ output: please enter an integer: 4 * ** *** **** *** ** * """
جمع بندی
در این مقاله با نحوهی بکارگیری از for و while در حلقههای تودرتو آشنا شدیم، همچنین سعی شد در رابطه با تابع ()range و دو عبارت continue و break توضیح داده شود. برای آشنایی بیشتر با این مباحث به مستندات مراجعه کنید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.