حلقه while در پایتون نحوه کار، نمونه هایی از استفاده

حلقه ها یکی از ابزارهای اصلی هر زبانی هستند. دو حلقه اصلی در پایتون وجود دارد که یکی از آنها while است. آن را در نظر بگیرید، و همچنین برای درک بهتر تصویر، یک مورد دیگر. در واقع، در مقایسه با چیزی مشابه، درک هر مطلبی بسیار ساده تر است، اینطور نیست؟

مفهوم چرخه

یک حلقه زمانی مورد نیاز است که یک عمل خاص باید چندین بار انجام شود. این بسیار ساده است، زیرا در واقعیت دامنه کاربردهای چرخه بسیار گسترده تر است. دو نوع حلقه اصلی در پایتون وجود دارد: for و while. محبوب ترین برای.

علاوه بر اقدامات خاص، می توانید قطعات مختلف کد را تا یک نقطه مشخص حلقه کنید. این می تواند تعداد معینی بار باشد یا تا زمانی که یک شرط خاص درست باشد.

قبل از شروع به درک انواع حلقه ها و در حالی که، به طور خاص، هنوز باید بفهمیم تکرار چیست. این یک تکرار از یک عمل یا دنباله ای از اقدامات در طول چرخه جاری در اجرای برنامه فعلی است.

چرخه برای

حلقه For ما مانند بسیاری از زبان های دیگر یک شمارنده نیست. وظیفه آن برشمردن توالی خاصی از مقادیر است. این یعنی چی؟ فرض کنید فهرستی از عناصر داریم. اول، حلقه اول، دوم، سوم و غیره را می گیرد.

مزیت این حلقه در پایتون این است که برای دانستن زمان خروج از حلقه نیازی به تعیین اندیس عنصر ندارید. همه چیز به صورت خودکار انجام خواهد شد.

>>> اسپیسوک = [10، 40، 20، 30]

>>> برای عنصر در اسپیسوک:

... چاپ (عنصر + 2)

...

12

42

22

32

در مثال ما از متغیر استفاده کردیم عنصر بعد از دستور for به طور کلی، نام می تواند هر چیزی باشد. به عنوان مثال، یک نام محبوب i است. و با هر تکرار، یک شی خاص از لیست به این متغیر اختصاص داده می شود که آن را کلمه مناسب نامیدیم.

در مورد ما، لیست دنباله ای از اعداد 10,40,20,30،XNUMX،XNUMX،XNUMX است. در هر تکرار، مقدار مربوطه در متغیر ظاهر می شود. به عنوان مثال، به محض شروع حلقه، متغیر عنصر مقدار 10 اختصاص داده شده است. در تکرار بعدی ده به عدد 40 و بار سوم به عدد 20 و در نهایت در آخرین تکرار حلقه به عدد 30 تبدیل می شود.

سیگنال پایان چرخه پایان عناصر موجود در لیست است.

اگر برای انجام یک شمارش کلاسیک مقادیر، مانند سایر زبان های برنامه نویسی، به حلقه نیاز دارید، باید لیستی با دنباله ای از اعداد طبیعی تا مقدار مورد نیاز ما ایجاد کنید.

>>> اسپیسوک = [1,2,3,4,5،XNUMX،XNUMX،XNUMX،XNUMX]

یا از تابع استفاده کنید len()، برای تعیین طول لیست اما در این مورد بهتر است از یک حلقه استفاده کنید در حالی که، زیرا نیازی به استفاده از متغیر نیست.

اگر نیاز به تغییر دنباله مقادیر در لیست دارید، حلقه بزنید برای و اینجا به کمک می آید. برای انجام این کار، در هر تکرار، به هر عنصر لیست باید مقدار مناسبی اختصاص داده شود.

در حالی که حلقه

بر خلاف چرخه برای، که به سادگی روی مقادیر دنباله، حلقه تکرار می شود در حین کاربرد بیشتری دارد نام این نوع چرخه ها به صورت "هنوز" ترجمه شده است. یعنی «تا».

این یک حلقه جهانی است که در همه زبان های برنامه نویسی یافت می شود. و از جهاتی شبیه عملگر شرطی است سرخدار، که بررسی می کند تا ببیند آیا شرط خاصی وجود دارد یا خیر. فقط بر خلاف عملگر شرطی، در حین چک را در هر تکرار انجام می دهد، نه فقط یک بار. و تنها در صورت false بودن شرط، حلقه به پایان می رسد و دستوری که به دنبال آن است اجرا می شود. به عبارت ساده، اگر موقعیتی که در آن کار می کند دیگر معتبر نیست.

اگر یک چرخه ترسیم کنیم در حین به طور ساده، این با استفاده از چنین طرحی انجام می شود.حلقه while در پایتون نحوه کار، نمونه هایی از استفاده

شاخه اصلی برنامه (که خارج از حلقه اجرا می شود) در این شکل با مستطیل های آبی نشان داده شده است. فیروزه نشان دهنده بدنه چرخه است. به نوبه خود، لوزی شرطی است که در هر تکرار بررسی می شود.

چرخه در حین می تواند منجر به دو استثنا شود:

  1. اگر در ابتدای حلقه عبارت منطقی به درستی برنگردد، پس از اتمام قبل از اجرا به سادگی شروع نمی شود. به طور کلی، این وضعیت طبیعی است، زیرا تحت شرایط خاص، برنامه ممکن است وجود عبارات را در بدنه حلقه فراهم نکند.
  2. اگر عبارت همیشه درست باشد، این می تواند منجر به یک حلقه شود. یعنی به پیمایش بی پایان چرخه. بنابراین در چنین برنامه هایی همیشه باید یک عبارت خروج از حلقه یا برنامه وجود داشته باشد. با این حال، اگر برنامه بتواند درستی یا نادرستی یک شرایط خاص را تعیین کند، این وضعیت به وجود می آید. اگر او موفق به انجام این کار نشد، با خاتمه برنامه یک خطا برگردانده می شود. یا می توانید خطا را کنترل کنید و سپس در صورت وقوع، کد خاصی اجرا می شود.

می‌تواند تعداد زیادی گزینه برای نحوه رسیدگی به یک خطا وجود داشته باشد. به عنوان مثال، برنامه ممکن است از کاربر بخواهد که داده ها را به درستی وارد کند. بنابراین، اگر شخصی یک عدد منفی را نشان داد که فقط می تواند مثبت باشد، یا حروفی را وارد کرد که فقط اعداد باید باشند، برنامه می تواند در مورد آن بگوید.

در حالی که مثال های حلقه

در اینجا یک مثال از کدی است که در این مورد خطا را مدیریت می کند.

n = ورودی ("یک عدد صحیح وارد کنید:") 

while type(n) != int:

    تلاش كردن:

        n = int(n)

    به جز ValueError:

        چاپ ("درج اشتباه!")

        n = ورودی ("یک عدد صحیح وارد کنید:") 

اگر n % 2 == 0:

    چاپ ("حتی")

دیگری:

    چاپ ("فرد")

به خاطر داشته باشید که پایتون از دو نقطه برای اعلان ساختارهای کد پیچیده استفاده می کند.

در کد بالا به عنوان یک شرط تعریف کردیم که باید بررسی کنیم که عدد صحیح است یا خیر. اگر بله، false برگردانده می شود. اگر نه، پس درست است.

در قسمت دوم کد که از عملگر استفاده شده است if، از عملگر % برای یافتن باقی مانده پس از عملیات تقسیم استفاده کردیم. مرحله بعدی بررسی زوج بودن عدد است. اگر نه، پس باقیمانده در این مورد یکی است. بر این اساس، عدد فرد است. 

به زبان ساده، کد بالا ابتدا بررسی می کند که آیا رشته وارد شده توسط کاربر یک عدد است یا خیر. اگر بله، سپس یک بررسی دوم انجام می شود تا ببیند آیا باقی مانده تقسیم بر دو وجود دارد یا خیر. اما بلوک دوم تا زمانی که مقدار وارد شده توسط کاربر عددی نباشد اجرا نخواهد شد.

یعنی حلقه به طور منظم تا زمانی که شرط رخ دهد اجرا می شود. در این شرایط به این صورت عمل می کند. 

یعنی می‌توانید برعکس بروید: یک عمل خاص را حلقه بزنید تا رویداد نادرست شود.

تجزیه کد

حالا بیایید با جزئیات بیشتر نحوه عملکرد این کد را ببینیم. برای انجام این کار، ما آن را مرحله به مرحله تجزیه و تحلیل می کنیم.

  1. ابتدا کاربر یک رشته را وارد می کند که توسط متغیر n پذیرفته می شود. 
  2. با استفاده از یک حلقه در حین نوع این متغیر بررسی می شود. در اولین ورودی، برابر نیست INT. بنابراین در نتیجه آزمایش مشخص می شود که این شرط درست است. بنابراین بدنه حلقه وارد می شود.
  3. با کمک یک اپراتور امتحان ما سعی می کنیم یک رشته را به عدد تبدیل کنیم. اگر این کار انجام شود، هیچ خطایی رخ نمی دهد. بر این اساس نیازی به پردازش آن نیست. بنابراین مفسر به ابتدای حلقه برمی گردد و با توجه به نتایج بررسی معلوم می شود که به یک عدد صحیح تبدیل شده است. پس بیایید به مرحله 7 برویم
  4. اگر تبدیل ناموفق بود، یک ValueError پرتاب می شود. در این حالت، جریان برنامه به کنترل کننده استثنا ارسال می شود.
  5. کاربر مقدار جدیدی را وارد می کند که به متغیر n اختصاص داده می شود.
  6. مفسر به مرحله 2 برمی گردد و دوباره بررسی می کند. اگر یک مقدار صحیح است، به مرحله 7 بروید. اگر نه، تبدیل دوباره مطابق مرحله 3 انجام می شود.
  7. با کمک یک اپراتور if تعیین می کند که آیا پس از تقسیم یک عدد بر 2 باقی مانده است یا خیر. 
  8. اگر نه، متن "حتی" برگردانده می شود.
  9. اگر نه، متن "عجیب" برگردانده می شود.

اکنون چنین مثالی را در نظر بگیرید. سعی کنید تعیین کنید که این چرخه چند بار طی خواهد شد؟

کل = 100 

من = 0

در حالی که من < 5:

    n = int(ورودی())

    کل = کل - n

    i = i + 1 

چاپ ("باقی"، کل)

پاسخ صحیح 5 است. در ابتدا مقدار متغیر i - صفر مفسر بررسی می کند که آیا متغیر برابر است یا خیر i 4 یا کمتر اگر بله، مقدار برگردانده می شود. درست، و حلقه بر این اساس اجرا می شود. مقدار یک عدد افزایش می یابد.

پس از تکرار اول، مقدار متغیر 1 می شود. یک بررسی انجام می شود و برنامه متوجه می شود که این عدد دوباره کمتر از 5 است. بر این اساس، بدنه حلقه برای بار دوم اجرا می شود. از آنجایی که مراحل مشابه هستند، مقدار نیز یک افزایش می یابد و متغیر اکنون برابر با 2 است.

این مقدار نیز کمتر از پنج است. سپس حلقه برای بار سوم اجرا می شود و به متغیر اضافه می شود i 1 و مقدار 3 به آن اختصاص داده شده است. این دوباره کمتر از پنج است. و بنابراین به تکرار ششم حلقه می رسد، که در آن مقدار متغیر است i برابر با 5 است (در نهایت، تا آنجا که ما به یاد داریم، در ابتدا صفر بود). بر این اساس، این شرط از آزمون عبور نمی کند و حلقه به طور خودکار خاتمه می یابد و انتقال به مرحله بعدی که خارج از آن است (یا پایان برنامه، در صورت عدم ارائه مراحل زیر) انجام می شود.

چرخه می تواند در جهت مخالف نیز رخ دهد. در اینجا یک مثال از کد است که در آن، با هر تکرار بعدی، یک عدد از مقدار فعلی متغیر کم می شود. 

کل = 100 

در حالی که کل > 0:

    n = int(ورودی())

    کل = کل - n 

چاپ ("منبع تمام شده")

سعی کنید حدس بزنید این برنامه چه کاری انجام می دهد! آن را در یک متغیر تصور کنید جمع اطلاعات مربوط به منبع برنامه ذخیره می شود. هر بار که مترجم وجود منبع را بررسی می کند. اگر نه، متن "Resource Exhausted" نمایش داده می شود و برنامه بسته می شود. و با هر بار تکرار حلقه، منبع به مقداری که کاربر مشخص می کند کاهش می یابد.

و حالا مشق شب سعی کنید کد بالا را تغییر دهید تا متغیر از نظر فیزیکی نتواند منفی شود. 

4 نظرات

پاسخ دهید