دوره H برنامه نویسی پایتون
فصل دوم: ساختار کنترلی پایتون
درس ششم: حلقه for در پایتون
در درس چهارم این فصل، با حلقه while آشنا شدیم؛ اما حالا میخواهیم به نحوه استفاده از حلقه for در پایتون بپردازیم.
به یاد حلقه while
اگر بخواهیم با استفاده از یک حلقه while، کدی بنویسیم که به ازای هر آیتم در داخل یک لیستی اجرا شود، بایستی یک متغیر به عنوان شمارنده تعریف کرده و سپس با استفاده از آن متغیر، به آیتمهای یک لیست دسترسی داشته باشیم. برای مثال:
words = ["hello", "world", "spam", "eggs"] index = 0 words_length = len(words) while index < words_length: word = words[counter] print(word + "!") index = index + 1
خروجی این کد:
hello!
world!
spam!
eggs!
>>>
مثال بالا، کدنوشته شده داخل حلقه را به ازای هر آیتم داخل لیست تکرار میکند! و در واقع ما با استفاده از یک متغیری به نام index که تعریف کردیم، به مقایر جدید لیست دسترسی پیدا میکنیم! چراکه در پایان حلقه، این متغیر را یکی بیشتر میکنیم تا دفعهی بعدی، به آیتم بعدی اشاره کند! و البته شرط حلقه، تا زمانی است که مقدار index، از تعداد آیتمهای لیست عبور نکند. چراکه اگر عبور کند، به مقداری تعریف نشده اشاره کرده و خطایی رخ میدهد و شما میبینید که آن را کمتر از طول لیست قرار دادیم؛ چراکه ایندکس از 0 شروع میشود! البته این به منطق کد ما مربوط میشود که چگونه این شرط را بنویسیم تا درست کار کند! برای مثال کد بالا را بصورت زیر مینویسیم و بازهم بدرستی و همانند آن کار میکند:
words = ["hello", "world", "spam", "eggs"] index = 0 max_index = len(words) - 1 while index <= max_index: word = words[counter] print(word + "!") index = index + 1
در اینجا، مفهومی به نام max_index یعنی حداکثر مقدار ایندکس قابل پذیرش را تعریف کردیم و آن را یکی کمتر از طول لیست قرار دادیم! بنابراین در حلقه باید شرط ما علاوه بر کوچکتر بودن، مساوی نیز باشد! در واقع مقدار index بزرگتر از مقدار max_index، دیگر اجرا نخواهد شد.
حلقه for در پایتون
همانطور که در مثال قبل دیدید، نوشتن کد یکسان برای مقادیر یک لیست با استفاده از حلقه while، به نوشتن کدهای زیادی منجر میشود. اما پایتون، حلقهی for را به عنوان یک شورتکات یا میانبور برای انجام این کار فراهم کرده است. به مثال زیر که همان مثال قبلی میباشد دقت کنید:
words = ["hello", "world", "spam", "eggs"] for word in words: print(word + "!")
و اما خروجی این کد:
hello!
world!
spam!
eggs!
>>>
بنابراین با استفاده از for، کد قبلی را در 3 خط خلاصه کردیم و خیلی سادهتر شد! به اینگونه که در for مشخص کردیم به ازای هر word در داخل لیست words، کد داخل حلقه را اجرا کند! در واقع متغیر word، هربار با آیتم جدید لیست پر میشود. و البته این مقداردهی word، از ایندکس 0 شروع شده و به انتهای لیست میرسد و به صورت رندوم یا نامنظم نیست.
همچنین فراموش نکنید که نام word اختیاری بوده و تنها به دلیل داشتن مفهوم، این اسم را انتخاب کردیم؛ وگرنه میتوانید آن را h یا x و … هم انتخاب کنید.
فقط همین نیست!
البته که for تنها برای نوشتن کد یکسان برای مقادیر یک آرایه به کار برده نمیشود! شما با range در درس قبلی آشنا شدید. حالا فرض کنید میخواهیم با حلقه for، کاری کنیم که کدمان به تعداد معینی تکرار شود! بنابراین با استفاده از range، مثال زیر را در نظر بگیرید:
for i in range(5): print("hello!")
خروجی کد بالا:
hello!
hello!
hello!
hello!
hello!
>>>
همانطور که میبینید، نیازی به تبدیل range به list نیست! چرا که range بر خلاف list ها، ایندکس شده نمیباشد! و اصلا نیازی به ایندکس هم نداریم.
نظرات ثبت شده بدون دیدگاه