منطبق با جدیدترین نگارش - قسمت 15
آموزش رایگان پایتون (python)- به‌کارگیری فرمان if به شکل تودرتو
در شماره گذشته آموزش پایتون با نحوه انجام عملیات چندگانه، ساختار بلوک if….else و نحوه محاسبه چند شرط در یک فرمان if آشنا شدیم. در این شماره آموزش پایتون این مبحث را ادامه خواهیم داد.

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


به‌کارگیری دستور if…elif در یک برنامه کاربردی

در شماره گذشته آموزش پایتون با یک ترکیب قدرتمند فرمان if….else آشنا شدیم. اما اکنون قصد داریم به سراغ ترکیب پیچیده‌تری برویم که اجازه می‌دهد در یک برنامه کاربردی شرایط مختلفی را بررسی کرده و کارهای مختلفی را بر مبنای آن شرایط انجام دهید. به‌طور مثال فرض کنید برای یک رستوران قصد دارید یک برنامه کاربردی بنویسید و در منوی رستوران گزینه‌های مختلفی برای انتخاب یک غذا در نظر گرفته شده است. در این حالت کاربر از میان گزینه‌های موجود (به‌طور مثال 1 تا 10) گزینه‌ای را انتخاب می‌کند. در این حالت برنامه کاربردی شما باید به هر یک از مقادیری که کاربر انتخاب می‌کند پاسخ درستی بدهد. برای پیاده‌سازی یک چنین سناریویی به یک فرمان مرکب if نیاز داریم که بتواند به این نیاز پاسخ دهد. شما از طریق فرمان if….else نمی‌توانید به درستی شرایط مختلف را بررسی کنید. در این حالت شما باید از فرمان if به شکل حرفه‌ای‌تر و همراه با دستور elif استفاده کنید. فرمانی که اجازه می‌دهد شرایط مختلفی که همگی جزیی از یک شرط واحد هستند را بررسی کنید. اجازه دهید نحوه به‌کارگیری فرمان if…elif را در قالب یک مثال کاربردی نشان دهیم.

1.محیط IDLE را باز کرده و از منوی File گزینه New File را انتخاب کنید.

2. در پنجره شل فرمان‌های زیر را وارد کنید.

print("1. Red")

print("2. Orange")

print("3. Yellow")

print("4. Green")

print("5. Blue")

print("6. Purple")

Choice = int(input("Select your favorite color: "))

if (Choice == 1):

print("You chose Red!")

elif (Choice == 2):

print("You chose Orange!")

elif (Choice == 3):

print("You chose Yellow!")

elif (Choice == 4):

print("You chose Green!")

elif (Choice == 5):

print("You chose Blue!")

elif (Choice == 6):

print("You chose Purple!")

else:

print("You made an invalid choice!")

به مکان قرارگیری دستورات و تورفتگی ها در تصویر بالا دقت کنید،

قطعه کد بالا کمی متفاوت از سایر کدهایی است که تاکنون مشاهده کرده‌اید. این مثال در ابتدا منویی را در صفحه نشان می‌دهد. در ادامه برنامه از کاربر درخواست می‌کند از میان گزینه‌های نشان داده شده در این فهرست گزینه‌ای را انتخاب کند. مقداری که کاربر وارد می‌کند از طریق تبدیل‌کننده int به مقدار صحیح تبدیل شده و سپس در متغیر Choice قرار می‌گیرد. دقت کنید در این مرحله کاربر فقط مجاز است یک مقدار صحیح را وارد کند. پس از آن‌که کاربر مقداری را انتخاب کرد، برنامه به فهرستی از مقادیری که درون بلوک if قرار گرفته‌اند نگاه کرده و مقدار متغیر Choice را با هر یک از مقادیری که درون فرمان if قرار دارند مقایسه می‌کند. زمانی که کاربر مقدار 1 را وارد می‌کند، برنامه در خروجی عبارت You Choose Red! را نشان می‌دهد. اگر مقداری که کاربر وارد می‌کند درون هیچ‌یک از شروط این برنامه قرار نگیرد، آخرین فرمان بلوک if که فرمان else است اجرا شده و مقدار پیش‌فرضی به کاربر نشان داده می‌شود که اعلام می‌دارد مقدار وارد شده مجاز نیست. دقت کنید با استفاده از الگوی بالا شما می‌توانید هر تعداد شرطی که نیاز دارید را وارد کنید. به ترکیب نحوی استفاده از فرمان elif مکان و قرارگیری فرمان‌ها در پایین هر دستور، نحوه وارد کردن دستورات درون پرانتز‌ها و علامت دو نقطه که بیان‌گر پایان ارزیابی یک عبارت هستند دقت کنید.

3. فایل را با نامی ذخیره کرده و از منوی Run گزینه Run Module را انتخاب کنید. برنامه منویی نشان داده و از شما درخواست می‌کند مقداری را وارد کنید.

4. مقدار 1 را تایپ کرده و کلید اینتر را فشار دهید. خروجی همانند تصویر زیر خواهد بود.

5. برنامه را دومرتبه اجرا کرده و این‌بار مقدار 5 را وارد کنید. مشاهده می‌کنید که خروجی برنامه متفاوت بوده و این مرتبه پیغام آبی نشان داده می‌شود.

6. برنامه را دومرتبه اجرا کرده و این مرتبه مقدار 8 را وارد کنید. برنامه به شما خواهد گفت که مقدار نامعتبری را وارد کرده‌اید که در اصل فرمان print که درون بلوک else در انتهای برنامه قرار دارد چاپ می‌شود.

به‌کارگیری فرمان‌های تصمیم‌گیری تودرتو

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

به‌کارگیری چند if یا if….else

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

1.محیط IDLE را باز کرده و از منوی File گزینه New File را انتخاب کنید.

2. دستورات زیر را در پنجره باز شده تایپ کنید. (به ترکیب نحوی و مکان قرارگیری دستورات دقت کنید.)

One = int(input("Type a number between 1 and 10: "))

Two = int(input("Type a number between 1 and 10: "))

if (One >= 1) and (One <= 10):

if (Two >= 1) and (Two <= 10):

print("Your secret number is: ", One * Two)

else:

print("Incorrect second value!")

else:

print("Incorrect first value!")

تصویر زیر نحوه درج این دستورات را نشان می‌دهد.

3. قطعه کد بالا کمی متفاوت‌تر از فرمان‌های if است که تاکنون داشته‌ایم. دقت کنید در قطعه کد بالا دستور if دوم خود در زیرمجموعه دستور if اول قرار دارد. این تورفتگی به پایتون اعلام می‌دارد که دستور if در سطح دو قرار دارد. در قطعه کد بالا از کاربر درخواست می‌شود در دو نوبت مقادیری در بازه 1 تا 10 را وارد کند. هر دو ورودی کاربر به یک مقدار صحیح تبدیل شده و درون متغیرهای One و Two قرار می‌گیرند. در اولین دستور if بررسی می‌شود که مقدار متغیر One بزرگ‌تر مساوی از 1 و کوچک‌تر مساوی از 10 باشد، اگر متغیر One در این محدوده قرار نداشت، آن‌گاه فرمان else که در انتهای این قطعه کد قرار دارد اجرا می‌شود. اما اگر مقدار متغیر One در این بازه قرار داشت، آن‌گاه دستور if دوم اجرا شده و بررسی می‌کند که مقدار متغیر Two بزرگ‌تر مساوی 1 و کوچک‌تر مساوی 10 باشد. اگر این‌گونه بود فرمان print اجرا شده و حاصل‌ضرب مقادیر دو متغیر روی صفحه چاپ می‌شود. اما اگر مقدار متغیر Two در این بازه قرار نداشت، دستور else مربوط به فرمان if دوم اجرا شده و به کاربر می‌گوید مقدار متغیر دوم درست نیست.

3. این برنامه را ذخیره کرده و از منوی Run گزینه Run Module را اجرا کنید.

4. مقدار 5 را برای متغیر اول تایپ کرده و کلید اینتر را فشار دهید. در ادامه مقدار 2 را تایپ کرده و کلید اینتر را فشار دهید. خروجی این برنامه همانند تصویر زیر خواهد بود.

5. برنامه را اجرا کرده و این مرتبه مقدار متغیر اول را 11 و متغیر دوم را 2 وارد کنید. مشاهده می‌کنید که برنامه با پیغام خطایی اعلام می‌دارد مقدار متغیر اول صحیح نیست.

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

ترکیب انواع مختلفی از تصمیمات

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

1.محیط IDLE را باز کرده و از منوی File گزینه New File را انتخاب کنید.

2. دستورات زیر را در پنجره باز شده بنویسید.

print("1. Eggs")

print("2. Pancakes")

print("3. Waffles")

print("4. Oatmeal")

MainChoice = int(input("Choose a breakfast item: "))

if (MainChoice == 2):

Meal = "Pancakes"

elif (MainChoice == 3):

Meal = "Waffles"

if (MainChoice == 1):

print("1. Wheat Toast")

print("2. Sour Dough")

print("3. Rye Toast")

print("4. Pancakes")

Bread = int(input("Choose a type of bread: "))

if (Bread == 1):

print("You chose eggs with wheat toast.")

elif (Bread == 2):

print("You chose eggs with sour dough.")

elif (Bread == 3):

print("You chose eggs with rye toast.")

elif (Bread == 4):

print("You chose eggs with pancakes.")

else:

print("We have eggs, but not that kind of bread.")

elif (MainChoice == 2) or (MainChoice == 3):

print("1. Syrup")

print("2. Strawberries")

print("3. Powdered Sugar")

Topping = int(input("Choose a topping: "))

if (Topping == 1):

print ("You chose " + Meal + " with syrup.")

elif (Topping == 2):

print ("You chose " + Meal + " with strawberries.")

elif (Topping == 3):

print ("You chose " + Meal + " with powdered

sugar.")

else:

print ("We have " + Meal + ", but not that

topping.")

elif (MainChoice == 4):

print("You chose oatmeal.")

else:

print("We don't serve that breakfast item!")

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

3. در قطعه کد بالا مباحث جالبی قرار دارد. شما ممکن است با خود این‌گونه فکر کنید که فرمان if…elif همیشه به بخش else نیاز دارند. این مثال نشان می‌دهد که این‌گونه نیست و else هر زمان که نیاز باشد استفاده می‌شود. شما می‌توانید از یک if…elif برای مطمئن شدن از این موضوع که متغیر Meal شامل مقدار صحیحی است استفاده کنید. تکنیک انتخاب کردن مقادیر همانند حالتی است که در شماره‌های گذشته آن‌را مشاهده کردیم. یک کاربر باید مقداری در محدوده تعیین شده را وارد کند. در این‌جا انتخاب سوم به انتخاب دوم در این منو وابسته است. به‌طور مثال، زمانی که سفارش تخم‌مرغ را می‌دهید، نیازی نیست که یک بطری را انتخاب کنید، اما شما می‌خواهید برای پنکیک خود یک نوشیدنی سفارش دهید. دقت کنید در این مثال متغیرها و متون به شیوه خاصی با یکدیگر ترکیب شده‌اند. از آن‌جایی که بطری یکسان با پنکیک در نظر گرفته می‌شود، شما به متدی نیاز دارید که دقیقا مشخص کند غذا با خروجی مطابقت دارد. متغیر Meal که این برنامه آن‌را تعریف کرده است، به عنوان بخشی از خروجی و پس از انتخاب بطری در نظر گرفته می‌شود.

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

در شماره آینده آموزش پایتون به سراغ مباحث دیگر خواهیم رفت.


ماهنامه شبکه را از کجا تهیه کنیم؟

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

اشتراک ماهنامه شبکه

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

برچسب: