آشنایی با دستور if ... else در زبان برنامه نویسی پایتون

سیده آمین ارمان

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2016/05/10
ارسالی ها
1,730
امتیاز واکنش
20,744
امتیاز
795
محل سکونت
البرز
در آموزش قبل با نحوه ی استفاده از دستور شرطی if آشنا شدیم. می توانیم حالت کلی دستور if را به صورت غیر رسمی این طور بیان کنیم:

اگر عبارت x درست باشد، آن گاه y اجرا می شود.

با این حال، بارها برای ما پیش آمده است که در زمان تصمیم گیری در مورد انجام کاری تحت یک شرطی خاص به شرایط عکس آن هم فکر می کنیم و سناریو خاصی برای آن در نظر می گیریم. برای مثال می گوییم: "اگر عجله داشته باشم با تاکسی رفت و آمد می کنم، در غیر این صورت از اتوبوس استفاده می کنم." در زمان کدنویسی برنامه ها نیز موارد بسیاری پیش می آید که اگر شرطی برقرار باشد، دستورات خاصی اجرا می شوند و در صورت برقرار نبودن شرط مجموعه ی دیگری از دستورات اجرا می شوند. در زبان برنامه نویسی پایتون این الگوریتم را با دستور مرکب چند بندی if…else پیاده سازی می کنیم. حالت کلی کدنویسی این دستور مرکب به صورت زیر است:

if conditions:
statement 1
else:
statement 2
توجه داشته باشید که بلوک کدهای بدنه ی else را نسبت به سربند آن به صورت تورفته می نویسیم، اما سربند if و else هر دو در یک بلوک قرار دارند. برای مثال برنامه ی زیر را در نظر بگیرید:

if not 1:
print("True")
else:
print("False")
اسکریپت این برنامه را در فایل ifElse.py ذخیره می کنیم. به نظر شما کدام یک از بندهای این دستور مرکب اجرا خواهد شد، if یا else؟ شرط جلوی عبارت if به صورت not 1 بیان شده است. گفتیم مفسر پایتون عدد 1 را برابر با مقدار True ارزیابی می کند؛ زمانی که عملگر not را روی آن اثر می دهیم مقدار آن عکس می شود، یعنی نتیجه ی بررسی شرط if برابر با False است. می دانیم که بدنه ی دستور if در صورتی اجرا می شود که شرط آن برابر با True ارزیابی شود که در این جا چنین نیست، بنابراین مفسر پایتون به سراغ بدنه ی else می رود و آن را اجرا می کند. در نتیجه خروجی حاصل از اجرای این برنامه برابر با چاپ عبارتی تحت عنوان "False" خواهد بود.

حال قصد داریم دستورات شرطی تا حدودی پیچیده تری را مد نظر قرار دهیم به این صورت که حالات مختلف را در نظر بگیریم و به ازای رخ دادن هر حالت کارهای خاصی را انجام دهیم. برنامه ی زیر که در فایل foodstuff.py ذخیره شده است را در نظر بگیرید:

foodstuff = input("Please enter your choice(rice,cheese,egg)-->")
if foodstuff=="rice":
print("It costs 10000 Tomans per Kilo.")
elif foodstuff=="cheese":
print("It costs 5000 Tomans.")
elif foodstuff=="egg":
print("It costs 500 Tomans")
else:
print("I don't have in stock!")
در این برنامه از کاربر درخواست می شود نام یک ماده ی غذایی را وارد کند، آن گاه مفسر پایتون بر اساس ورودی کاربر باید تصمیم بگیرد که چه پیغامی به او بدهد. اولین دستور این برنامه نام ورودی را از کاربر می گیرد و به متغیر foodstuff به معنی «ماده ی غذایی» ارجاع می دهد. آن گاه مفسر به سراغ دستور if می رود. اگر شرط این دستور برقرار باشد، یعنی کاربر کلمه ی rice به معنی «برنج» را وارد کرده باشد پیغامی برای او چاپ می شود که قیمت هر کیلو گرم برنج را اعلام می کند اما اگر شرط if برقرار نباشد مفسر پایتون به سراغ دستور بعدی می رود که elif است. دستور elif به این صورت ترجمه می شود: "در غیر این صورت اگر ..."، و واضح است که مفسر پایتون پس از آن به دنبال یک شرط می گردد که آن را بررسی کند.

مانند دستور if، اگر عبارت جلوی elif برابر با مقدار True ارزیابی شود بدنه ی دستور elif اجرا می شود، برای مثال در برنامه ی فوق اگر کاربر کلمه ی cheese به معنی «پنیر» را وارد کند، قیمت یک قالب پنیر برای او چاپ می شود و در غیر این صورت مفسر پایتون باز هم به سراغ دستورات بعدی می رود. در این برنامه دستور بعد نیز elif است که مجدداً ابتدا شرط آن بررسی می شود، اگر درست بود دستورات داخل بدنه ی آن اجرا می شود و در غیر این صورت مفسر باز هم به سراغ دستور بعد می رود که در این جا else است.

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

============ RESTART: D:/ SokanAcademy/Python/ifElse.py ============
Please enter your choice(rice,cheese,egg)-->egg
It costs 500 Tomans.
>>>
============ RESTART: D:/ SokanAcademy/Python/ifElse.py ============
Please enter your choice(rice,cheese,egg)-->meat
I don't have in stock!
>>>
به خاطر داشته باشید
به خاطر داشته باشید که در یک دستور مرکب شرطی به این صورت، بند دستور if حتماً باید وجود داشته باشد؛ با این حال نوشتن بندهای elif و else کاملاً دلخواه است و در صورت نیاز می توان آن ها را در برنامه وارد یا حذف کرد. هم چنین دستورهای elif همیشه بعد از دستور if و پیش از دستور else قرار می گیرند.
در تفسیر برنامه ی فوق بایستی گفت که در دفعه ی اول، کاربر egg به معنی «تخم مرغ» را وارد کرده لذا دستور قرار گرفته در elif دوم که مسئول چاپ کردن عبارت It costs 500 Tomans به معنی «پانصد تومان می شود» اجرا می گردد اما در اجرای دوم برنامه، کاربر مقداری معادل با meat به معنی «گوشت» را وارد کرده و از آنجا که این مقدار در برنامه تعریف نشده است، نه پاسخ به شرط if درست بوده و نه پاسخ به شرط های elif، لذا برنامه وارد دستور else می شود که مسئول چاپ کردن عبارت !I don`t have in stock به معنی «موجود نداریم» است.
 

برخی موضوعات مشابه

بالا