دستور if شرطی در پایتون. نحو، بلوک‌های else/elif، مثال‌ها

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

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

انواع بیانیه های کنترلی

به طور کلی if تنها عبارتی نیست که جریان یک برنامه را کنترل می کند. و همچنین او می تواند جزئی از زنجیره بزرگتری از اپراتورها باشد.

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

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

  1. برابری یک متغیر به مقدار معین.
  2. انجام یک عمل خاص.
  3. وضعیت برنامه (جمع شده یا نه).

طیف می تواند بسیار بزرگتر باشد. عبارات شرطی انواع مختلفی دارند:

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

اگر بیانیه

ساختار دستور if در همه زبان ها مشابه است. با این حال، در Python، نحو آن تا حدودی با بقیه متفاوت است:

اگر شرط:

    <входящее выражение 1>

    <входящее выражение 2>

<не входящее выражение>

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

به دنبال آن یک بلوک با دستورات دنبال می شود. اگر بلافاصله از معیاری پیروی کند که باید برآورده شود، دنباله دستورات مربوطه یک بلوک if نامیده می شود. می توانید از هر تعداد دستور در آن استفاده کنید.

توجه! تورفتگی داخل دستورات بلوک if باید یکسان باشد. مرزهای بلوک توسط تورفتگی ها تعیین می شود. 

طبق مستندات زبان، تورفتگی 4 فاصله است. 

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

اگر عبارتی بعد از شرط تورفتگی نداشته باشد، به عنوان یک بلوک if در نظر گرفته نمی شود. در شرایط ما، این خط است . بنابراین بدون توجه به نتیجه بررسی، این خط اجرا می شود.

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

عدد = int(ورودی("عددی را وارد کنید:"))

اگر عدد > 10:

    چاپ ("تعداد بیشتر از 10 است")

این برنامه از کاربر یک عدد را می خواهد و بررسی می کند که آیا عددی بزرگتر از 10 است یا خیر. در این صورت، اطلاعات مناسب را برمی گرداند. به عنوان مثال، اگر کاربر عدد 5 را وارد کند، برنامه به سادگی تمام می شود و تمام.

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

توجه! در مورد ما، اگر شرط نادرست باشد، برنامه متوقف می شود، زیرا هیچ دستوری پس از دستور داده نمی شود.

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

حال بیایید این توالی دستورات را تحلیل کنیم.

عدد = int(ورودی("یک عدد بنویس:"))

اگر عدد > 10:

    چاپ ("خط اول")

    چاپ ("خط دوم")

    چاپ ("خط سوم")

print ("خطی که اجرا می شود، صرف نظر از تعداد وارد شده")

چاپ ("پایان برنامه")

اگر مقادیر 2، 5، 10، 15، 50 را وارد کنید، حدس بزنید که خروجی چه خواهد بود.

همانطور که می بینید، اگر تعداد وارد شده توسط کاربر بیشتر از ده باشد، سه خط + یک با متن "Run every time ..." و یک "End" و اگر کمتر از ده باشد، فقط یک خط با متن خروجی داده می شود. یک متن متفاوت اگر درست باشد فقط خطوط 3,4,5،XNUMX،XNUMX اجرا خواهند شد. با این حال، دو خط آخر صرف نظر از اینکه کاربر چه عددی را مشخص می کند، نوشته می شود.

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

فرض کنید دنباله دستورات زیر را نوشته ایم.

«هفته | هفته»

>>> n = 100

>>> اگر n > 10:

...

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

و برای خروج از این بلوک باید یک ساخت دیگر به بلوک اضافه کنید if.

«هفته | هفته»

>>> n = 100

>>> اگر n > 10:

… چاپ («nv 10»)

...

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

عملگر بیان اگر دیگری

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

اگر شرط:

    #اگر مسدود شود

    بیانیه 1

    بیانیه 2

    و به همین ترتیب

دیگری:

    # else مسدود کنید

    بیانیه 3

    بیانیه 4

    و غیره:

بیایید نحوه عملکرد این اپراتور را توضیح دهیم. ابتدا عبارت استاندارد در thread اجرا می شود سرخدار، بررسی اینکه آیا مطابقت دارد یا خیر شرط "درست یا غلط". اقدامات بعدی به نتایج بررسی بستگی دارد. اگر درست باشد، دستوری که در دنباله دستورات زیر شرط قرار دارد، مستقیماً اجرا می‌شود. سرخدار، اگر نادرست است، پس دیگر

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

در اینجا کدی است که این کار را پیاده سازی می کند. اما اینجا یک اشتباه وجود دارد. سعی کنید حدس بزنید کدام یک. 

شعاع = int (ورودی ("شعاع را وارد کنید: "))

اگر شعاع >= 0:

    چاپ ("محیط = "، 2 * 3.14 * شعاع)

    چاپ ("مساحت = "، 3.14 * شعاع ** 2)

    دیگری:

        چاپ ("لطفا یک عدد مثبت وارد کنید")

خطای عدم تطابق تورفتگی. اگر و دیگری باید بدون آنها یا با همان تعداد آنها (بسته به اینکه آنها تودرتو هستند یا نه) قرار گیرند.

بیایید یک مورد استفاده دیگر (که در آن همه چیز با تراز اپراتور درست می شود) ارائه دهیم - یک عنصر برنامه که رمز عبور را بررسی می کند.

رمز عبور = ورودی ("رمز عبور را وارد کنید:")

اگر رمز عبور == «sshh»:

    چاپ ("خوش آمدید")

دیگری:

    چاپ ("دسترسی ممنوع")

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

بیانیه-اظهار if-elif-else

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

if شرط_1:

    #اگر مسدود شود

    بیانیه

    بیانیه

    بیانیه بیشتر

elif condition_2:

    # اولین بلوک elif

    بیانیه

    بیانیه

    بیانیه بیشتر

elif condition_3:

    # دومین بلوک elif

    بیانیه

    بیانیه

    بیانیه بیشتر

...

دیگر

    بیانیه

    بیانیه

    بیانیه بیشتر

شما می توانید هر تعداد شرایط اضافی را مشخص کنید.

بیانیه های تو در تو

راه دیگر برای پیاده سازی چند شرط، درج بررسی شرط اضافی در بلوک if است.

اپراتور if داخل یک بلوک شرایط دیگر

gre_score = int (ورودی ("حد اعتبار فعلی خود را وارد کنید"))

per_grad = int(input("رتبه اعتباری خود را وارد کنید:"))

اگر per_grad > 70:

    # بلوک خارجی اگر

        اگر gre_score > 150:

            # درونی اگر بلوک

    چاپ ("تبریک می گویم، شما وام دریافت کرده اید")

دیگری:

    چاپ ("با عرض پوزش، شما واجد شرایط دریافت وام نیستید")

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

اگر هر دو مقدار نادرست باشد، پیامی نشان می دهد که کاربر امکان دریافت وام را ندارد. 

حالا بیایید آن برنامه را کمی دوباره کار کنیم.

gre_score = int (ورودی ("محدودیت فعلی را وارد کنید: "))

per_grad = int(input("امتیاز اعتباری را وارد کنید:"))

اگر per_grad > 70:

    اگر gre_score > 150:

        چاپ ("تبریک می گویم، شما وام دریافت کرده اید")

    دیگری:

        چاپ ("محدودیت اعتبار شما کم است")

دیگری:

    چاپ ("با عرض پوزش، شما واجد شرایط دریافت اعتبار نیستید")

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

عبارت if-else در داخل یک شرط دیگر

بیایید برنامه دیگری بسازیم که نمره دانش آموز را بر اساس نمرات آزمون مشخص کند.

score = int(input("امتیاز خود را وارد کنید:"))

اگر امتیاز >= 90:

    چاپ ("عالی! نمره شما A است")

دیگری:

    اگر امتیاز >= 80:

چاپ ("عالی! نمره شما B است")

    دیگری:

اگر امتیاز >= 70:

    چاپ ("خوب! نمره شما C است")

دیگری:

    اگر امتیاز >= 60:

چاپ ("نمره شما D است. ارزش تکرار مطالب را دارد.")

    دیگری:

چاپ ("شما در امتحان رد شدید")

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

بنابراین اپراتور if عملکرد بسیار مهمی را انجام می دهد - مطمئن می شود که قطعات خاصی از کد فقط در صورت نیاز اجرا می شوند. تصور برنامه‌نویسی بدون آن غیرممکن است، زیرا حتی ساده‌ترین الگوریتم‌ها نیز به چنگال‌هایی مانند «اگر به سمت چپ بروید، آن را پیدا خواهید کرد، و اگر به سمت راست بروید، باید این و آن را انجام دهید».

پاسخ دهید