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

در این مطلب از مجله فرادرس به طور تخصصی عبارت elif در پایتون را بررسی میکنیم. ابتدا از موارد پایه شروع میکنیم. با کمک مثالهای مختلف روش کار این عبارت را بررسی میکنیم. سپس چند سناریو پیچیده را نیز با کمک elif پیادهسازی کرده و روش استفاده از این ابزار را در آنها بررسی میکنیم. همچنین با رایجترین خطاها در زمان استفاده از عبارتهای شرطی پایتون آشنا میشویم.
elif در پایتون چیست؟
elif در پایتون بخشی از ساختار if-elif-else است. از این بخش برای بررسی چند شرط مختلف در یک ساختار تصمیمگیری استفاده میشود.
استفاده از elif باعث میشود که کدها انعطافپذیری بیشتری بدست بیاورند. زیرا با کمک آن میتوانیم چندین – بیش از دو – حالت مختلف را به عنوان خروجی داشته باشیم.
بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده میشود.
20 or more
در مثال بالا بلوک elif بررسی میکند که آیا x کمتر از 20 هست یا نه. اما قبل از آن شرط مشخص شده برای عبارت if بررسی میشود. اگر شرط نوشته شده برای if برقرار نباشد، مفسر پایتون، شرط بلوک elif را بررسی میکند.
در این مثال x برابر با 20 است. یعنی x کمتر از 20 نیست. بنابراین شرط نوشته شده در elif هم «False» است. در نتیجه برنامه به سراغ اجرای کدهای نوشته شده در بلوک else میرود. در نتیجه، عبارت 20 or more در خروجی چاپ میشود.
مثال دیگری از elif
در این بخش از مطلب برای کمک به درک بهتر این ساختار، توضیحات دیگری دادهایم. از elif در پایتون برای مدیریت چند شرط مختلف استفاده میشود. در واقع میتوان گفت که elif ترکیبی از عبارتهای if و else است. این عبارتها را میتوان به صورت else-if هم خواند. با کمک این ساختار چندین شرط مختلف را پشت سر هم بررسی میکنیم. سپس به محض اینکه یکی از شرطها برقرار شد، دستورات مربوط به بلوک آن شرط را بررسی کرده و باقی بلوکها را نادیده میگذاریم.
بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده میشود.
x is between 10 and 20
در مثال بالا، بعد از اینکه شرط عبارت if یعنی x < 10 غلط ارزیابی شد، عبارت elif بررسی می کند که آیا x کوچکتر از 20 هست یا نه. از آنجا که مقدار 15 را به x اختصاص دادهایم، شرط elif برقرار است. بنابراین عبارت x is between 10 and 20 در خروجی چاپ شده و دیگر سراغ بلوک else نمیرویم.
ترتیب نوشتن شرطهای elif
یکی از اشتباههای رایج در زمان استفاده از بلوک elif آن است که ترتیب نوشتن شرطها را رعایت نکنیم. پایتون تمام شرایط را از بالا به پایین بررسی میکند. به محض اینکه شرطی درست ارزیابی شد، مفسر پایتون کدهای درون آن بلوک شرط یا elif را بررسی کرده و از روی بقیه ساختارهای شرطی میگذرد. یعنی درست و غلط بودن بقیه بلوکها را بررسی نمیکند. بنابراین اهمیت زیادی دارد که از ترتیب درست نوشتن شرطها مطمئن شویم.

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

وبسایت فرادرس با تولید مطالب و فیلمهای آموزشی مختلف به یکی از بزرگترین تولیدکنندگان محتوای آموزشی به زبان فارسی، تبدیل شده است. یک از حوزههای فعالیت فرادرس مربوط به آموزش پایتون است. فیلمها و مطالب زیادی برای کمک به افراد علاقهمند در زمینه پایتون تولید شدهاند. اگر در ابتدای مسیر یادگیری هستید، بهترین گزینه برای شما مشاهده فیلم آموزش رایگان پایتون، برنامه نویسی سریع و آسان در ۱۴۰ دقیقه از فرادرس است. اما اگر مراحل ابتدایی آشنایی و یادیگری این زبان را پشت سر گذاشتهاید، پیشنهاد میکنیم از فیلمهای پایین نیز دیدن کنید.
در ادامه روش نوشتن شرایط پیچیده را با استفاده از دستور elif نوشتهایم.
مدیریت شرایط پیچیده با استفاده از elif
هرچقدر در کار با زبان برنامه نویسی پایتون حرفهایتر شوید، با پروژههای بزرگتر و پیچیدهتری هم روبهرو میشوید. در این پروژهها معمولاً باید چند شرط مختلف را به صور همزمان و با هم بررسی کنید. در چنین موقعیتهایی استفاده از چندین بلوک elif بسیار مفید است.
برای مثال، موقعیتی را فرض کنید که باید قرار گرفتن نمرهای را در چند دستهبندی مختلف بررسی کنیم.
بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده میشود.
Grade: A
در مثال بالا برای بررسی مطابقت نمره با ردهبندیهای مختلف از چند عبارت elif استفاده کردهایم. برنامه تمام شرطها را به ترتیب از بالا به پایین ارزیابی میکند. از آنجا که نمره برابر با 85 است، پس هیچ شرطی درست نیست. در نهایت دستورات درون بلوک else اجرا خواهند شد. در نتیجه ردهبندی A به نمره مورد نظر اختصاص داده میشود.
نکات مهم در زمان کار با elif
در هنگام استفاده از چند دستور elif ، باید شرطهای خود را از محدودترین به گستردهترین یا از کمترین به بیشترین مرتب کنیم. به محض اینکه اولین شرط درست ارزیابی شود، پایتون دستورات مربوط به آن را اجرا میکند. در نتیجه باقی شرطها – با صرف نظر از اینکه درست باشند یا غلط – نادیده گرفته میشوند. بنابراین اگر بخواهیم به نتیجه درست برسیم، رعایت ترتیب صحیح نوشتن شرطها ضروری است.
همیشه بهتر است که از بلوک else در انتهای ساختار تصمیمگیری استفاده کنیم. این بلوک مانند یک شبکه امنیتی فعالیت میکند. زیرا با کمک آن میتوانیم تمام حالتهایی را مدیریت کنیم که به صورت دستی در بلوکهای if و elif تعریف نشدهاند.

چند روش جایگزین برای elif در پایتون
با اینکه عبارت elif ابزار قدرتمندی برای مدیریت شرطهای مختلف است. اما پایتون روشهای دیگری را هم برای این کار معرفی کرده است. بعضی از این روشها، بسته به موقعیت، از elif هم میتوانند مفیدتر باشند. در فهرست پایین، دو مورد از روشهای جایگزین elif را معرفی کردهایم.
- ساختارهای if-else به صورت تو در تو
- استفاده از دیکشنریها و ساختارهای Switch-Case
در ادامه، روشهای بالا را به ترتیب بررسی میکنیم.
ساختارهای if-else به صورت تو در تو
یکی از جایگزینهای elif استفاده از ساختارهای if-else به صورت تو در تو است. این روش زمانی مناسب است که بخواهیم بعضی شرطها را بر اساس نتیجه شرطهای قبلی بررسی کنیم.
بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده میشود.
x is less than 10, but y is not
در مثال بالا، ساختار if-else درونی فقط به شرطی ارزیابی میشود که x کمتر از 10 باشد.
نکته: با اینکه ساختارهای if-else تو در تو میتوانند شرایط پیچیدهای را مدیریت کنند، اما در صورت استفاده بیش از حد از آنها خوانایی کدها به شدت کاهش پیدا میکند. همچنین نگهداری آنها هم سختتر میشود.
استفاده از دیکشنریها و ساختارهای Switch-Case
«Switch-Case» یکی از جایگزینهای بسیار خوب برای بلوک elif در پایتون است. قبل از شناخت روش استفاده و پیادهسازی آن در پایتون بد نیست که نسبت به «Switch-Case» اطلاعات کافی داشته باشیم. به این منظور پیشنهاد میکنیم که فیلم رایگان آموزش دستور Switch Case + ساختار، تفاوت با دستور If و راهنمای عملی برای نمایش روزهای هفته را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
پایتون مانند بعضی از زبانهای برنامه نویسی از ساختارهای «Switch-Case» به صورت درونی پشتیبانی نمیکند. اما با استفاده از دیکشنریهای پایتون میتوانیم چنین عملکردی را شبیهسازی کنیم. این روش، زمانی مناسب است که شرط خاصی بتواند چند حالت مختلف داشته باشد. برای هر حالت هم یک پاسخ جدا لازم است.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
1 Invalid value
در کد بالا کلیدهای دیکشنری مانند شرایط ساختار case عمل میکنند. مقدار مربوط به این کلیدها هم نقش نتیجه هر case را بازی میکنند. اگر داده ورودی با هیچ کلیدی سازگار نبود، متد get() عبارت Invalid value را در خروجی برمیگرداند. این رویکرد، روشی تمیز و کارآمد است. اما به شرایطی محدود میشود که به عنوان کلیدهای دیکشنری به کار برده شدهاند.
متد get() یکی از متدهای دیکشنری در پایتون است. برای حرفهای شدن در کار با دیکشنریها لازم است که با کاربردیترین متدهای دیکشنری آشنا باشیم. به این منظور پیشنهاد میکنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.
تا اینجای کار دانستیم که elif ، ابزار چندکارهای برای مدیریت شرطهای متنوع است. اما بهتر است که با گزینههای جایگزین آن هم آشنا شویم. بسته به موقعیت، استفاده از ساختار if-else تو در تو یا ساختار Switch-Case ساخته شده از دیکشنری، ممکن است انتخاب بهتری باشد. همیشه شرایط طبیعی برنامه و خوانایی کدهای خود را در نظر بگیرید. با توجه به این موارد میتوانید روش مناسب را انتخاب کنید.

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

در ادامه مطلب، هر دو خطای بالا را توضیح دادهایم.
خطای مربوط به دندانه گذاری
در زبان برنامه نویسی پایتون برای مشخص کردن حریم بلوکهای کد از «دندانه گذاری» (Indentation) استفاده میشود. اگر عبارت elif یا کدهای درون آن به خوبی دندانهگذاری نشوند، پایتون خطای IndentationError اعلام میکند.
بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده میشود.
IndentationError: expected an indented block
در مثال بالا هیچ کدام از توابع print() بدرستی دندانهگذاری نشدهاند. بنابراین پایتون خطای IndentationError را اعلام کرده است. برای برطرف کردن این خطا باید تمام کدهای نوشته شده در بلوکهای if و elif و else را با دندانهگذاری درست بنویسیم.
خطاهای منطقی
وقتی شرایط نوشته شده، نتایج مورد نظر را فراهم نکنند – بدون اعلام هیچ خطایی – میگوییم برنامه خطای منطقی دارد. در زمان کار با elif در پایتون، بیشتر خطاهای منطقی، به رعایت نکردن ترتیب درست شرطها ارتباط دارند.
بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده میشود.
x is less than 10
در مثال بالا، با اینکه x از عدد 3 کوچکتر است. اما برنامه پیغام x is less than 10 را نشان میدهد. به معنای اینکه x کوچکتر از 10 است. این مسئله بخاطر آن است که بعد از پیدا شدن شرط صحیح، باقی شرایط ساختار if-elif-else بررسی نمیشوند. برای حل کردن این مشکل باید شرطهای تعریف شده را از اول، مرتب کنیم.
عیبیابی یکی از مراحل بسیار مهم در برنامه نویسی است. هرچقدر که با مشکلات تکراری و راه حلهای آنها بیشتر آشنا شویم، با توانایی بیشتری کدهای خود را نوشته و دیباگ میکنیم.
یاد گرفتن پایتون با کمک فیلمهای پروژه محور
وبسایت فرادرس، تولید کننده فیلمهای آموزشی به زبان فارسی است. این وبسایت، فیلمهای آموزشی با کیفیتی را برای تمام رشتههای علمی، صنعتی و تحصیلی، تولید میکند. معمولا فیلمهای آموزشی فرادرس در دو دسته آموزشهای مفهومی و آموزشهای پروژه محور تولید میشوند. این مسئله، شامل زبان برنامه نویسی پایتون هم میشود. در آموزشهای پروژه محور، مهمترین مفاهیم پایتون را به صورت ترکیبی و در کنار هم برای پیادهسازی پروژههای مختلف به کار میبریم. مشاهده این فیلمها به افراد برای پربارتر کردن رزومههای عملیشان کمک میکند.
در پایین، چند مورد از فیلمهای آموزشی پروژهمحور پایتون را معرفی کردهایم.
در صورت تمایل با کلیک بر روی تصویر زیر میتوانید به صفحه اصلی این مجموعه آموزشی هدایت شده و فیلمهای پروژهمحور بیشتری را نیز تماشا کنید.

اهمیت استفاده از elif در پروژههای بزرگتر
با اینکه ساختار elif در ظاهر ساده است. اما نقش بسیار مهمی در اسکریپتها یا پروژههای بزرگ پایتون بازی میکند. توانایی این عبارت در مدیریت چندین شرط مختلف باعث شده که به عبارت ارزشمندی برای استفاده توسط برنامه نویسان پایتون تبدیل شود.
در برنامههای بزرگ پایتون شاید مجبور شویم با انواع داده مختلف به صورت همزمان کار کنیم. در مقابل هر نوع دادهای هم باید عکسالعمل متفاوتی از خود نشان دهیم. در چنین مواقعی بهجای نوشتن چندین بلوک if-else به صورت تو در تو میتوانیم از بلوکهای elif پشت سر هم استفاده کنیم. این ابزار به برنامه نویس کمک میکند که انواع داده مختلف را یک به یک بررسی کرده و برای هر کدام عکسالعمل متناسب با آن را پیادهسازی کند.
بررسی مفاهیم مرتبط باهم
elif ابزار بسیار قدرتمندی است. اما پایتون برای کمک به کنترل روش اجرای کد، ساختارهای دیگری را هم در اختیار توسعهدهندگانش قرار داده است. برای نمونه میتوان به حلقههایی مانند for و «while»، توابع و ابزارهای خاصی مانند «try-except» در پایتون اشاره کرد.
برای مثال میتوانیم از ساختار elif درون حلقه استفاده کنیم. ترکیب این عبارتها به برنامه نویسی کمک میکند تا لیستی را پیمایش کند. سپس با توجه به ماهیت هر عنصر رفتار متفاوتی از خودش نشان دهد.
بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده میشود.
5 is less than 10 20 is 10 or more hello is a string 30 is 10 or more
در مثال بالا elif را با حلقه for ترکیب کردهایم. بنابراین موفق شدیم که در مقابل هر عنصر با توجه به نوع داده آن رفتار متفاوتی را نشان دهیم.
جمعبندی
در این مطلب از مجله فرادرس، با عبارت elif در پایتون آشنا شدهایم. elif یکی از ابزارهای کنترلی پایتون است. این کلمه کلیدی به توسعه دهندگان کمک میکند تا شرایط مختلف را با روش ساده و شفافی بررسی کنند. برای نمایش روش استفاده از elif هم از مثالهای ساده و هم از مثالهای پیشرفته استفاده کردیم. در زمان استفاده از elif باید مراقب خطاهای سادهای مانند عدم رعایت دندانهگذاری یا غلط نوشتن ترتیب شرطها بود. این اشتباهات میتوانند مانع از انجام کار توسط برنامه شوند.
دراین مطلب، سایر روشهای جایگزین elif را نیز معرفی کردیم. به عنوان مثال میتوان به if-else-های تو در تو یا پیادهسازی ساختاری شبیه به Switch-Case با استفاده از دیکشنری اشاره کرد. هر کدام از این ساختارها محل خاص خود را برای استفاده دارند. برنامه نویس با توجه به شرایط برنامه باید بهترین گزینه را انتخاب کند. در نهایت باید گفت که آموختن روش درست استفاده از elif به توسعهدهندگان در نوشتن کدهای بهتر کمک میکند.
source