بخش چهارم آموزش Python : انواع دستورات شرطی در زبان برنامه نویسی پایتون

بازگشت به آموزشگاه

لینک های دسترسی به بخش های قبلی :


مقدمه

یکی از قابلیت های موجود در اکثر زبان های برنامه نویسی، دستورات کنترلی ( Flow Control ) هستند که به ما این اجازه را می دهند تا بر اساس یک شرط ، روند اجرای برنامه را تغییر دهیم. این دستورات خود به دو بخش دستور های شرطی if..else و حلقه های شرطی while و for تقسیم بندی می شوند. در این بخش از آموزش به معرفی و تشریح این دستورات در زبان برنامه نویسی پایتون خواهیم پرداخت. با ما همراه باشید.

 


دستور شرطی if .. else در پایتون

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

ساختار کلی دستور شرطی if .. else به صورت زیر می باشد :

در ساختار فوق expression بیانگر شرطی است که در صورت برقرار بودن آن عبارت statement1 و در صورت عدم برقرار بودن آن عبارت statement2 اجرا می شود. همچنین برای بررسی شرط های بیشتر از ساختار if .. elif .. else به صورت زیر استفاده می گردد.

نکته : همیشه در یک دستور شرطی  if وجود دارد؛ اما بخش های elif و else کاملاً دلخواه بوده و در صورت نیاز می توان آن ها را در برنامه وارد یا حذف کرد. هم چنین دستورهای elif همیشه بعد از دستور if و پیش از دستور else قرار می گیرند. برای روشن شدن موضوع ، به مثال زیر توجه کنید.

در این برنامه از کاربر درخواست می شود نام یک ماده ی غذایی را وارد کند، آن گاه مفسر پایتون بر اساس ورودی کاربر باید تصمیم بگیرد که چه پیغامی به او بدهد. اولین دستور این برنامه نام ورودی را از کاربر می گیرد و به متغیر foodstuff به معنی «ماده ی غذایی» ارجاع می دهد. آنگاه مفسر به سراغ دستور if می رود. اگر شرط این دستور برقرار باشد، یعنی کاربر کلمه ی rice به معنی «برنج» را وارد کرده باشد پیغامی برای او چاپ می شود که قیمت هر کیلو گرم برنج را اعلام می کند اما اگر شرط if برقرار نباشد مفسر پایتون به سراغ دستور بعدی می رود که elif است. دستور elif به این صورت ترجمه می شود: “در غیر این صورت اگر …”، و واضح است که مفسر پایتون پس از آن به دنبال یک شرط می گردد که آن را بررسی کند. توجه داشته باشید که دستور else زمانی اجرا می شود که پاسخ به شرط هیچ یک از دستورات قبلی True نبوده باشد و اگر در یکی از مراحل قبلی شرط یک بند درست باشد و مفسر وارد بدنه ی آن شده باشد، بعد از اجرا دستورات بدنه ی آن بند، کار این دستور مرکب به پایان می رسد و در صورت وجود دستورات دیگر مفسر به سراغ آن ها می رود. در شکل زیر سه بار این برنامه را اجرا کرده ایم.

 


دستورات شرطی if .. elif .. else تو در تو

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

برای مثال می خواهیم عددی از ورودی گرفته و مثبت یا منفی بودن آن عدد را بررسی نموده و جواب را چاپ کنیم. این مثال به صورت زیر و با دو if .. else تو در تو نوشته شده است.

اجرای برنامه فوق به صورت زیر است :

 


حلقه های شرطی در پایتون

همانطور که می دانیم در پایتون نیز همانند اکثر زبان های برنامه نویسی دستورات به صورت سطر به سطر اجرا می شوند. یعنی خطوط ابتدایی زودتر از خطوط انتهایی انجام می شوند. لذا اگر بخواهیم کاری را بارها انجام دهیم نیاز داریم تا از حلقه ها استفاده کنیم. در زبان برنامه نویسی پایتون دو نوع حلقه ی شرطی while و for وجود دارد که برحسب نیاز می توان از آن ها استفاده نمود. معمولا اگر تعداد دقیق تکرار اجرای دستورات را بدانیم از حلقه for و اگر تعداد دقیق را ندانیم از حلقه while استفاده می کنیم. این حلقه ها توسط یک شرط کنترل می شود که می تواند به گونه ای نوشته شود که حلقه مورد نظر به تعداد محدود و یا به تعداد نامحدود (بی نهایت بار ) تکرار شود. حلقه های بی نهایت در بسیاری از کاربردها مورد استفاده قرار می گیرد. چرا که خیلی اوقات ما نیاز داریم یک سری دستورات به صورت منظم و دائمی انجام شوند. مثلا در میکروکنترلرها خواندن اطلاعات از سنسور یا نوشتن روی lcd و…  یا مثال دیگری که در اینجا بیشتر مورد نظر ما هست در کاربردهای پردازش تصویر می باشد. زمانی که می خواهید یه فیلم را پردازش نمایید ، در واقع یک کار ثابت روی تعدادی عکس پشت سر هم انجام می شود و چون مدت فیلم مشخص نیست پس وجود حلقه بی نهایت ضروری است. در ادامه با توضیح بیشتر این حلقه ها همراه ما باشید.

 


حلقه while در پایتون

ساختار کلی حلقه while به صورت زیر است:

  1. در قسمت expression شرطی را که بر اساس آن حلقه باید اجرا شود را می نویسیم. تا زمانی که مقدار expression برابر true باشد حلقه اجرا خواهد شد.
  2. در قسمت statement هم دستور یا دستوراتی که باید در صورت true بودن expression اجرا شوند را می نویسیم.

در مثال زیر، بوسیله حلقه while اعداد 0 تا 9 را در خروجی نمایش می دهیم. دقت کنید که در درون حلقه while، با هر بار تکرار حلقه، مقدار n یک واحد اضافه می شود. زمانی که مقدار n بزرگتر از 9 شود، شرط while برقرار نبوده و از حلقه خارج می شویم و نتایج زیر حاصل می شود.

 

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

 

 

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

 

 

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

 


حلقه های شرطی while تو در تو در پایتون

در بسیاری مسائل بویژه مسائل ریاضی نیاز به حلقه های تو در تو وجود دارد. در زبان پایتون می توانید حلقه های تو در تو را به صورت زیر ایجاد کنید :

برای مثال، کد زیر جدول ضرب 10 در 10 را در خروجی نمایش می دهد:

به دستور print دقت کنید، پارامتری با نام end به آن ارسال شده است، بوسیله end می توان مشخص کرد که انتهای رشته چاپ شده با چه کاراکتری تمام شود، به صورت پیش فرض کاراکتر new line در انتهای رشته قرار گرفته و دستور print بعدی، رشته را در خط جدید چاپ می کند، در اینجا گفتیم که به جای new line، رشته با کاراکتر tab تمام شود. کد و خروجی این جدول ضرب به صورت زیر می باشد.

 


حلقه for در پایتون

بوسیله ساختار for می توان آیتم های یک لیست را پیمایش کرد و عملیاتی را بر روی هر یک از آیتم ها انجام داد. ساختار کلی دستور for به صورت زیر است:

در ساختار بالا به ترتیب:

  1. به جای var نام متغیر دلخواهی را که هر یک از آیتم های لیست در آن قرار می گیرد را می نویسیم. ( نیازی نیست از قبل تعریف شود )
  2. به جای list نام متغیری که به عنوان یک متغیر قبلا تعریف شده است را می نویسیم.
  3. در قسمت statement دستوراتی را که برای پردازش هر یک از آیتم های لیست نیاز داریم را می نویسیم.

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

 

 

نکته : دستور for بر روی کلیه متغیرهایی که ماهیت لیست دارند مثل tuple ها یا dictionary ها قابل استفاده است.

مانند ساختار while برای ساختار for نیز می توان بخش else نوشت که این بخش پس از اتمام پیمایش لیست اجرا می شود:

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

تذکر : همانند حلقه while ، برای حلقه for نیز میتوان حلقه های تو در تو for نوشت. همچنین می توان به صورت ترکیبی حلقه های for و while تو در تو نیز نوشت.

 


معرفی تابع range در پایتون

با توجه به کاربرد گسترده این تابع در حلقه  for این تابع را معرفی می کنیم:

تابع range در زبان پایتون یک بازه از اعداد صحیح از start تا end-1 را بر میگرداند و در صورتی که start ذکر نشود، به صورت پیشفرض 0 در نظر گرفته می شود.step نیز مشخص میکند که فاصله‌ی اعدادی از هم چقدر باشد و به صورت پیشفرض 1 هست. برای مثال اعداد بازه 0 تا 19 را بصورت زیر چاپ می کنیم :

 


استفاده از طول لیست در تابع range

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

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

 


کنترل حلقه ها با دستورات break و continue

همانند تمامی زبان های برنامه نویسی در زبان پایتون هم یک سری دستورات برای کنترل ( توقف : break ) یا ( ادامه : continue ) یک حلقه for یا while وجود دارند که به دستورات کنترلی معروف اند.

بوسیله دستور continue می توان در بخشی از بلوک ساختار while یا for روند اجرا را به ابتدای حلقه و به تکرار بعدی منتقل کرد. برای مثال، فرض کنید می خواهیم اعداد زوج بین 1 تا 20 را در خروجی نمایش دهیم. به وسیله ساختار while و دستور break به صورت زیر کد مورد نظر را می نویسیم:

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

همچنین به وسیله دستور break می توان روند اجرای حلقه را به طور کامل متوقف کرد و از حلقه خارج شد. برای مثال، بوسیله حلقه while کدی می نویسیم که کاربر عددی را وارد کرده و نوع عدد که زوج است یا فرد را در خروجی نمایش دهد، کاربر می تواند اعداد مختلف را وارد کند تا زمانی که برای خروج عدد 0 را وارد کند هرگاه عدد صفر را وارد نمود از برنامه خارج شود (همانطور که قبلا دیدیم این برنامه را به طرق دیگر نیز نوشته بودیم پس محدودیتی نداریم و وابسته به شرایط می توان از روش های مختلفی استفاده نمود که زبان برنامه نویسی پایتون این امر را سهولت بخشیده است)

در خروجی نیز همانطور که انتظار داشتیم مشاهده می شود که هرگاه 0 وارد شود از برنامه خارج می شود.


برای رفتن به بخش بعدی روی تصویر زیر کلیک کنید


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

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بازگشت به آموزشگاه