FA-TOOLS — Header Component

آموزش شرط if else در پایتون با مثال‌های فارسی

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

🗺️ نقشه راهنمای سریع: آموزش if-else در پایتون 🗺️

آموزش شرط if else در پایتون با مثال‌های فارسی — تصویر 1

✅ if ساده

اجرای کد فقط در صورت درست بودن شرط.

✅ if-else

اجرای دو مسیر: اگر درست بود (if)، اگر نه (else).

✅ if-elif-else

انتخاب از بین چندین گزینه و حالت‌های مختلف.

✅ عملگرهای منطقی

ترکیب شرط‌ها با and، or، not.

✅ شرط‌های تو در تو

استفاده از if-else داخل یک if-else دیگر.

✅ Ternary Operator

کوتاه نویسی و فشرده‌سازی if-else ساده.

چرا اصلاً شرط‌گذاری لازمه؟ (منطق تصمیم‌گیری در برنامه‌نویسی)

آموزش شرط if else در پایتون با مثال‌های فارسی — تصویر 2

فکر کن داری یه اپلیکیشن ساده می‌نویسی. مثلاً یه سیستم ثبت نام که باید چک کنه سن کاربر بالای ۱۸ سال باشه تا اجازه ثبت نام رو بده. یا یه بازی که اگه جون بازیکن تموم شد، پیغام “Game Over” رو نشون بده. این‌ها همه مثال‌هایی از تصمیم‌گیری هستن. دنیای واقعی پر از تصمیم‌گیریه و برنامه‌های ما هم برای اینکه کارآمد باشن، باید بتونن تصمیم بگیرن.

بدون شرط‌ها، برنامه شما مثل یه ربات می‌مونه که فقط یه مسیر رو می‌تونه بره. اما با if-else، برنامه شما می‌تونه “فکر” کنه، گزینه‌های مختلف رو بررسی کنه و بر اساس وضعیت فعلی، بهترین مسیر رو انتخاب کنه. این قلب هر نرم‌افزار هوشمندیه. از اسنیپت‌های ساده گرفته تا سیستم‌های پیچیده بانکی، همه‌شون از منطق شرطی استفاده می‌کنن.

ساختار کلی if-else در پایتون: قدم به قدم

آموزش شرط if else در پایتون با مثال‌های فارسی — تصویر 3

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

ساختار کلی شرط در پایتون

if شرط_اول:
    # کدهایی که اگر شرط_اول درست بود اجرا می‌شوند
elif شرط_دوم:
    # کدهایی که اگر شرط_اول نادرست و شرط_دوم درست بود اجرا می‌شوند
else:
    # کدهایی که اگر هیچ‌کدام از شرط‌های بالا درست نبودند اجرا می‌شوند

function copyCode(buttonElement) {
const codeBlock = buttonElement.previousElementSibling;
const range = document.createRange();
range.selectNode(codeBlock);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
document.execCommand(‘copy’);
window.getSelection().removeAllRanges();
buttonElement.textContent = ‘کپی شد!’;
setTimeout(() => {
buttonElement.textContent = ‘کپی کد’;
}, 2000);
}

دو تا نکته خیلی مهم رو همیشه یادت باشه:

  • علامت دو نقطه (:): حتماً بعد از هر if، elif و else یه دو نقطه بذار.
  • تورفتگی (Indentation): پایتون به شدت به تورفتگی اهمیت می‌ده. یعنی کدهایی که جزئی از یه بلوک if یا else هستن، باید یه تورفتگی (معمولاً ۴ فاصله یا یه تب) داشته باشن. این تو رفتگی مشخص می‌کنه که کدهای داخل کدوم بلوک قرار دارن و اگه رعایت نشه، برنامه بهت ارور می‌ده.

if تنها: ساده‌ترین حالت (وقتی فقط یک راه داری!)

وقتی می‌خوای یه کاری رو فقط در صورتی انجام بدی که یه شرط خاصی برقرار باشه و اگه نبود، هیچ اتفاق دیگه‌ای نیفته، از if تنها استفاده می‌کنی.

مثال if تنها

سن = 20

if سن >= 18:
    print("شما مجاز به ورود هستید.")
print("ادامه برنامه...")

# خروجی:
# شما مجاز به ورود هستید.
# ادامه برنامه...

سن_کمتر = 15
if سن_کمتر >= 18:
    print("شما مجاز به ورود هستید.")
print("ادامه برنامه با سن کمتر...")

# خروجی:
# ادامه برنامه با سن کمتر...

if-else: انتخاب بین دو مسیر (آره یا نه؟)

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

مثال if-else

عدد = 7

if عدد % 2 == 0:
    print(f"{عدد} یک عدد زوج است.")
else:
    print(f"{عدد} یک عدد فرد است.")

# خروجی:
# 7 یک عدد فرد است.

عدد_دیگر = 12
if عدد_دیگر % 2 == 0:
    print(f"{عدد_دیگر} یک عدد زوج است.")
else:
    print(f"{عدد_دیگر} یک عدد فرد است.")

# خروجی:
# 12 یک عدد زوج است.

elif: وقتی گزینه‌های بیشتری داری (چند راهی انتخاب)

elif مخفف “else if” هست و زمانی استفاده میشه که شما بیش از دو تا گزینه برای تصمیم‌گیری داری. پایتون به جای switch-case (که تو زبان‌هایی مثل جاوا یا سی‌شارپ هست)، از این ساختار استفاده می‌کنه. می‌تونی هر تعداد elif که نیاز داری بین if و else قرار بدی.

مثال if-elif-else (سیستم نمره‌دهی)

نمره = 85

if نمره >= 90:
    print("امتیاز شما A است. عالی!")
elif نمره >= 80:
    print("امتیاز شما B است. خوب!")
elif نمره >= 70:
    print("امتیاز شما C است. متوسط.")
elif نمره >= 60:
    print("امتیاز شما D است. نیاز به تلاش بیشتر.")
else:
    print("امتیاز شما F است. مردود.")

# خروجی (برای نمره 85):
# امتیاز شما B است. خوب!

نمره_دیگر = 55
if نمره_دیگر >= 90:
    print("امتیاز شما A است. عالی!")
elif نمره_دیگر >= 80:
    print("امتیاز شما B است. خوب!")
elif نمره_دیگر >= 70:
    print("امتیاز شما C است. متوسط.")
elif نمره_دیگر >= 60:
    print("امتیاز شما D است. نیاز به تلاش بیشتر.")
else:
    print("امتیاز شما F است. مردود.")

# خروجی (برای نمره 55):
# امتیاز شما F است. مردود.

نکته مهم اینه که پایتون شرط‌ها رو به ترتیب از بالا به پایین بررسی می‌کنه و به محض اینکه اولین شرط درست پیدا شد، بلوک کد مربوط به اون رو اجرا می‌کنه و از بقیه شرط‌ها می‌گذره.

عملگرهای منطقی: AND, OR, NOT (قدرت ترکیب شرط‌ها)

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

  • and (و): وقتی می‌خوایم هر دو (یا همه) شرط‌ها درست باشن.
  • or (یا): وقتی می‌خوایم حداقل یکی از شرط‌ها درست باشه.
  • not (نه): برای معکوس کردن یه شرط. اگه شرط درست بود، اونو نادرست می‌کنه و برعکس.
مثال عملگرهای منطقی

سن = 25
دارای_گواهینامه = True
جریمه_رانندگی = False

# استفاده از 'and'
if سن >= 18 and دارای_گواهینامه:
    print("شما مجاز به رانندگی هستید.")
else:
    print("برای رانندگی واجد شرایط نیستید.")

# خروجی: شما مجاز به رانندگی هستید.

# استفاده از 'or' (فرض کنید یه کوپن تخفیف دارید)
دارای_کوپن = False
عضو_باشگاه = True

if دارای_کوپن or عضو_باشگاه:
    print("شما واجد شرایط تخفیف هستید!")
else:
    print("متاسفانه تخفیفی به شما تعلق نمی‌گیرد.")

# خروجی: شما واجد شرایط تخفیف هستید!

# استفاده از 'not'
if not جریمه_رانندگی:
    print("سابقه رانندگی شما پاک است.")
else:
    print("شما جریمه رانندگی دارید.")

# خروجی: سابقه رانندگی شما پاک است.

# ترکیب همه
if سن >= 18 and دارای_گواهینامه and not جریمه_رانندگی:
    print("شما راننده ایده‌آل هستید!")
else:
    print("باید برخی شرایط را بررسی کنید.")

# خروجی: شما راننده ایده‌آل هستید!

شرط‌های تو در تو (Nested if-else): پیچیدگی به انتخاب شما

گاهی اوقات لازمه که بعد از اینکه یه شرط اصلی درست شد، داخل اون بلوک کد، یه شرط دیگه رو هم بررسی کنیم. به این می‌گن شرط‌های تو در تو (Nested if-else). این روش قدرت زیادی به کد شما می‌ده ولی حواست باشه که زیاد ازش استفاده نکنی چون می‌تونه کد رو پیچیده و ناخوانا کنه.

مثال شرط‌های تو در تو (ورود به حساب کاربری)

نام_کاربری = "admin"
رمز_عبور = "12345"
وضعیت_فعال = True

if نام_کاربری == "admin":
    if رمز_عبور == "12345":
        if وضعیت_فعال:
            print("ورود موفقیت‌آمیز! به پنل مدیریت خوش آمدید.")
        else:
            print("خطا: حساب کاربری شما غیرفعال است.")
    else:
        print("خطا: رمز عبور اشتباه است.")
else:
    print("خطا: نام کاربری اشتباه است.")

# خروجی: ورود موفقیت‌آمیز! به پنل مدیریت خوش آمدید.

# سناریو دوم: رمز عبور اشتباه
نام_کاربری2 = "admin"
رمز_عبور2 = "wrongpass"
وضعیت_فعال2 = True

if نام_کاربری2 == "admin":
    if رمز_عبور2 == "wrongpass": # اینجا رمز اشتباه است
        if وضعیت_فعال2:
            print("ورود موفقیت‌آمیز! به پنل مدیریت خوش آمدید.")
        else:
            print("خطا: حساب کاربری شما غیرفعال است.")
    else:
        print("خطا: رمز عبور اشتباه است.")
else:
    print("خطا: نام کاربری اشتباه است.")

# خروجی: خطا: رمز عبور اشتباه است.

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

کوتاه نویسی با Ternary Operator (میانبرهای پایتونی)

گاهی وقتا یه if-else خیلی ساده داری که فقط می‌خوای یه مقدار رو بر اساس یه شرط تعیین کنی. برای این حالت، پایتون یه میانبر باحال به اسم Ternary Operator داره که کدتو خیلی فشرده و خوانا می‌کنه.

مثال Ternary Operator

سن = 22
وضعیت_بزرگسال = "بزرگسال" if سن >= 18 else "نوجوان"
print(f"شما {وضعیت_بزرگسال} هستید.")
# خروجی: شما بزرگسال هستید.

دما = 15
توصیه = "گرم بپوش" if دما < 20 else "لباس خنک بپوش"
print(f"توصیه هواشناسی: {توصیه}")
# خروجی: توصیه هواشناسی: گرم بپوش

ساختارش اینه: مقدار_اگر_درست_بود if شرط else مقدار_اگر_نادرست_بود. خیلی جمع‌وجوره نه؟

بهترین روش‌ها و نکات کلیدی برای if-else تمیز

نوشتن کد فقط این نیست که کار کنه، بلکه باید تمیز، خوانا و قابل نگهداری هم باشه. برای if-else هم یه سری بهترین روش‌ها داریم:

  • خوانایی رو فدای کوتاهی نکن: هرچند Ternary Operator باحاله، اما برای شرط‌های پیچیده استفاده از if-else کامل خواناتر خواهد بود.
  • عمق تورفتگی رو کم کن: Nested if-else زیاد، کد رو مثل یه هزارتو می‌کنه. سعی کن با ترکیب شرط‌ها با and و or یا استفاده از توابع، عمق رو کم کنی.
  • از توابع برای شرط‌های پیچیده استفاده کن: اگه یه شرطت خیلی طولانیه، اونو داخل یه تابع با یه اسم واضح بذار. اینجوری کدت مرتب‌تر میشه. مثلاً: if is_valid_user(user):
  • خروج زود هنگام (Early Exit): اگه یه شرطی باعث میشه دیگه ادامه برنامه معنی نداشته باشه، همون اول با return یا break از تابع/حلقه خارج شو. اینجوری از else‌های بیهوده جلوگیری می‌کنی و کد خواناتر میشه.
  • PEP 8 رو رعایت کن: استاندارد‌های پایتون (PEP 8) رو برای تورفتگی، فاصله گذاری و نام‌گذاری رعایت کن. این برای تمام کدهای آماده و پروژه‌های بزرگ خیلی مهمه.

مقایسه If-Else با روش‌های جایگزین برای انتخاب‌های زیاد

روش توضیحات و کاربرد
ساختار If-Elif-Else ✔️ برای تعداد محدودی از گزینه‌ها (مثلاً ۳ تا ۵ حالت).
✔️ ساده و خوانا برای شرایط متوالی.
❌ با افزایش گزینه‌ها، طولانی و ناخوانا می‌شود.
استفاده از Dictionary (Map) ✔️ برای حالاتی که ورودی مشخصی دارید و می‌خواهید تابع یا عملیات مربوط به آن را فراخوانی کنید.
✔️ کد بسیار تمیزتر و مقیاس‌پذیرتر می‌شود.
مثال: actions = {'start': start_game, 'stop': stop_game}
استفاده از Strategy Pattern (OOP) ✔️ برای پروژه‌های بزرگ با منطق پیچیده که می‌خواهید هر رفتار را در کلاس جداگانه مدیریت کنید.
✔️ بسیار مقیاس‌پذیر و قابل نگهداری.
❌ پیچیدگی اولیه بالا برای پروژه‌های کوچک.

عیب‌یابی سریع: مشکلات رایج و راه‌حل‌ها

مثل هر قسمت دیگه از برنامه‌نویسی، تو if-else هم ممکنه به مشکل بربخوری. نگران نباش، این مشکلات معمولاً رایجن و راه‌حل‌های ساده‌ای دارن:

  • خطای تورفتگی (IndentationError)

    مشکل: کدتون درست اجرا نمیشه و خطای IndentationError: expected an indented block یا مشابه اون رو می‌بینید.

    راه‌حل: حواست باشه که بلوک‌های کد بعد از if، elif و else حتماً تورفتگی یکسان (معمولاً ۴ فاصله یا یه تب) داشته باشن. هرگز تب و فاصله رو با هم قاطی نکن!

  • فراموش کردن دو نقطه (:)

    مشکل: با خطای SyntaxError: invalid syntax مواجه می‌شی.

    راه‌حل: بعد از هر if، elif و else، حتماً علامت دو نقطه (:) رو بذار.

  • ترتیب اشتباه elif

    مشکل: با اینکه می‌دونی یه شرط درسته، اما بلوک کد مربوط به اون اجرا نمیشه و یه بلوک دیگه اجرا میشه.

    راه‌حل: پایتون شرط‌ها رو از بالا به پایین بررسی می‌کنه. مطمئن شو که ترتیب شرط‌های elif از خاص‌ترین حالت به عمومی‌ترین حالت باشه. مثلاً نمره‌ها رو از ۹۰ به بالا شروع کن، نه از ۶۰.

  • خطاهای منطقی در شرط‌ها

    مشکل: برنامه بدون ارور اجرا میشه ولی نتیجه‌ای که انتظار داری رو نمیده.

    راه‌حل: شرط‌هات رو با دقت بررسی کن. آیا از عملگرهای مقایسه‌ای (==، !=، ، =) درست استفاده کردی؟ عملگرهای منطقی and و or رو درست به کار بردی؟ گاهی استفاده از پرانتز برای مشخص کردن اولویت عملگرها می‌تونه کمک کننده باشه.

  • مقایسه انواع داده متفاوت

    مشکل: داری یه عدد رو با یه متن مقایسه می‌کنی و ارور می‌گیری یا نتیجه اشتباه.

    راه‌حل: مطمئن شو که انواع داده‌ای که با هم مقایسه می‌کنی، با هم سازگارن (مثلاً عدد با عدد، متن با متن). اگه ورودی کاربر رو می‌گیری، یادت باشه که ورودی تابع input() همیشه رشته (string) هست و اگه می‌خوای با عدد مقایسه‌اش کنی، باید اونو به عدد تبدیل کنی (با int() یا float()).

پرسش‌های متداول (FAQ)

تفاوت if و elif چیه؟

if شروع یک بلوک شرطی هست و اولین شرط رو بررسی می‌کنه. elif (مخفف else if) برای بررسی شرط‌های متوالی استفاده میشه، یعنی فقط زمانی بررسی میشه که شرط if یا elif های قبلی نادرست بوده باشن.

آیا پایتون switch-case داره؟

نه، پایتون به صورت مستقیم ساختار switch-case مثل برخی زبان‌های دیگه رو نداره. به جای اون، از زنجیره‌ای از if-elif-else استفاده میشه. البته از پایتون نسخه 3.10 به بعد، قابلیتی به نام match-case اضافه شده که کارکردی مشابه داره.

بهترین راه برای نوشتن شرط‌های پیچیده چیه؟

برای شرط‌های پیچیده، ترکیب عملگرهای منطقی and و or می‌تونه کمک کننده باشه. همچنین، شکستن شرط‌های طولانی به توابع کوچکتر با نام‌های گویا (مثل is_user_eligible()) به شدت خوانایی کد را افزایش می‌دهد.

اهمیت تورفتگی (indentation) در if-else چقدره؟

تورفتگی در پایتون حیاتیه! این تنها راهیه که پایتون می‌فهمه کدهای شما به کدوم بلوک (مثلاً کدام if یا else) تعلق دارن. اگه تورفتگی رو اشتباه انجام بدی، برنامه خطای IndentationError میده و اجرا نمیشه.

نتیجه‌گیری و قدم بعدی:

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

یادت نره که بهترین راه یادگیری، تمرین و تکراره. پس شروع کن به نوشتن برنامه‌های کوچیک، سناریوهای مختلف رو امتحان کن و ببین چطور می‌تونی با if-else هوشمندی رو به کدهات اضافه کنی. اگه به دنبال کدهای آماده برای وردپرس، CSS یا جاوااسکریپت هم هستی، می‌تونی به بخش اسنیپت‌های سایت ما یه نگاهی بندازی. موفق باشی!

Table of Contents

آخرین نوشته‌ها