دستورات شرطی در پایتون؛ آموزش if، elif و else
دستورات شرطی در پایتون
جلسه ۱۳ آموزش پایتون: دستورات شرطی در پایتون؛ if، elif و else
دستورات شرطی در پایتون چه کاربردی دارد ؟ در برنامهنویسی همیشه قرار نیست یک دستور، بدون توجه به شرایط، اجرا شود. بسیاری از برنامههای واقعی باید بر اساس اطلاعاتی که دریافت میکنند تصمیم بگیرند.
برای مثال:
- اگر سن کاربر ۱۸ سال یا بیشتر بود، اجازه ورود بده.
- اگر نمره دانشآموز حداقل ۱۰ بود، او را قبول کن.
- اگر رمز عبور اشتباه بود، پیام خطا نمایش بده.
- اگر عدد زوج بود، یک پیام و اگر فرد بود، پیام دیگری چاپ کن.
در پایتون برای ساخت چنین تصمیمهایی از دستورات شرطی استفاده میکنیم.
همراه با خبر ICT در این جلسه با عملگرهای مقایسهای، دستور if، دستور else و دستور elif آشنا میشویم و یاد میگیریم چگونه برنامههایی بنویسیم که بتوانند بر اساس شرایط مختلف رفتار متفاوتی داشته باشند.
تحقیق و تدوین مهدی گمرکی
📌 مرور جلسه قبل
در جلسه دوازدهم با تعدادی از متدهای پردازش رشتهها در پایتون آشنا شدیم و یاد گرفتیم چگونه اطلاعات متنی را پردازش و قالببندی کنیم.
برای مثال:
name = " ali "
print(len(name)) # 7
print(name.strip()) # ali
print(name.upper()) # ALI
print("a,b,c".split(",")) # ['a', 'b', 'c']
همچنین با روشهایی مانند f-string و .format() برای قالببندی رشتهها آشنا شدیم.
تا اینجا بیشتر برنامههایی که نوشتهایم خطی بودهاند؛ یعنی دستورات از ابتدا تا انتها، به ترتیب اجرا میشدند و برنامه معمولاً بدون توجه به شرایط، مسیر یکسانی را طی میکرد.
اما برنامههای واقعی باید بتوانند شرایط را بررسی کنند و بر اساس نتیجه تصمیم بگیرند.
اینجاست که دستورات شرطی در پایتون وارد عمل میشوند.
🎯 هدف جلسه ۱۳: یادگیری دستورات شرطی در پایتون
در پایان این جلسه باید بتوانید:
- از عملگرهای مقایسهای استفاده کنید.
- تفاوت
=و==را توضیح دهید. - با دستور
ifیک شرط ایجاد کنید. - با
elseحالت جایگزین را مشخص کنید. - با
elifچند شرط مختلف را بررسی کنید. - اهمیت ترتیب شرطها را درک کنید.
- از
if،elifوelseبرای حل مسائل ساده استفاده کنید. - با خطاهای رایج در دستورات شرطی پایتون آشنا شوید.
🔍 عملگرهای مقایسهای در پایتون
قبل از اینکه بتوانیم با if تصمیمگیری کنیم، باید بتوانیم دو مقدار را با یکدیگر مقایسه کنیم.
عملگرهای مقایسهای دو مقدار را بررسی میکنند و نتیجه آنها همیشه یکی از دو مقدار بولی زیر است:
True
False
مهمترین عملگرهای مقایسهای در پایتون عبارتاند از:
| عملگر | معنی | مثال | نتیجه |
|---|---|---|---|
== |
برابر است با | 5 == 5 |
True |
!= |
نابرابر است با | 5 != 3 |
True |
> |
بزرگتر از | 7 > 2 |
True |
< |
کوچکتر از | 7 < 2 |
False |
>= |
بزرگتر یا مساوی | 5 >= 5 |
True |
<= |
کوچکتر یا مساوی | 4 <= 3 |
False |
مثال
print(10 > 5)
print(10 == 10)
print(10 != 7)
print(3 < 2)
خروجی:
True
True
True
False
بنابراین میتوانیم بگوییم عملگرهای مقایسهای در پایتون نتیجهای از نوع بولی تولید میکنند.
⚠️ تفاوت = و == در پایتون
یکی از رایجترین اشتباهات افراد تازهکار، اشتباه گرفتن = و == است.
علامت =
برای انتساب مقدار به متغیر استفاده میشود:
age = 20
یعنی مقدار 20 را در متغیر age قرار بده.
علامت ==
برای مقایسه دو مقدار استفاده میشود:
age == 20
یعنی بررسی کن که آیا مقدار age برابر با 20 است یا خیر.
مثال:
age = 20
print(age == 20)
خروجی:
True
پس به خاطر بسپارید:
=یعنی انتساب
==یعنی مقایسه
🔤 مقایسه رشتهها در پایتون
عملگرهای مقایسهای فقط برای اعداد نیستند و میتوانند برای رشتهها نیز استفاده شوند.
مثلاً:
print("ali" == "ali")
خروجی:
True
اما حروف بزرگ و کوچک با یکدیگر برابر نیستند:
print("ali" == "Ali")
خروجی:
False
در مقایسه رشتهها با > و < نیز پایتون بر اساس ترتیب مقایسهای کاراکترها عمل میکند. برای مثال:
print("banana" > "apple")
خروجی:
True
زیرا در مقایسه لغوی، b بعد از a قرار میگیرد.
نکته: مقایسه رشتهها لزوماً به معنی مقایسه معنایی کلمات در زبان طبیعی نیست؛ پایتون رشتهها را بر اساس مقادیر کاراکترهای آنها مقایسه میکند.
💡 ذخیره نتیجه یک شرط در متغیر
نتیجه یک مقایسه را میتوانیم داخل یک متغیر ذخیره کنیم.
age = 20
is_adult = age >= 18
print(is_adult)
خروجی:
True
در اینجا متغیر is_adult یک مقدار بولی (bool) دارد.
این روش در برنامههای بزرگتر میتواند خوانایی کد را افزایش دهد.
🧭 دستور if در پایتون چیست؟
مهمترین ابزار برای ایجاد شرط در پایتون، دستور if است.
if به زبان ساده یعنی:
اگر این شرط درست بود، کدهای زیر را اجرا کن.
ساختار کلی:
if condition:
# code
در این ساختار:
conditionهمان شرطی است که باید بررسی شود.:پایان عبارت شرطی را مشخص میکند.- کدهای داخل بلوک
ifباید دارای تورفتگی (Indentation) باشند.
مثال ساده از if
age = 20
if age >= 18:
print("شما مجاز به ورود هستید.")
چون شرط زیر درست است:
20 >= 18
کد داخل if اجرا میشود.
خروجی:
شما مجاز به ورود هستید.
اما اگر مقدار سن را تغییر دهیم:
age = 16
if age >= 18:
print("شما مجاز به ورود هستید.")
در این حالت هیچ چیزی چاپ نمیشود؛ زیرا شرط 16 >= 18 برابر با False است.
📐 اهمیت تورفتگی (Indentation) در پایتون
در بسیاری از زبانهای برنامهنویسی برای مشخص کردن بلوکهای کد از {} استفاده میشود؛ اما پایتون برای مشخص کردن بلوکها از تورفتگی یا Indentation استفاده میکند.
مثلاً:
age = 20
if age >= 18:
print("بزرگسال")
خط print() با چهار فاصله نسبت به if جلوتر قرار گرفته و بنابراین بخشی از بلوک if محسوب میشود.
بهطور معمول در پایتون از ۴ فاصله (spaces) برای یک سطح تورفتگی استفاده میشود.
کد اشتباه:
if age >= 18:
print("بزرگسال")
این کد باعث خطای IndentationError میشود.
➕ دستور else در پایتون
گاهی لازم است برای زمانی که شرط if برقرار نیست نیز یک رفتار مشخص کنیم.
در این شرایط از else استفاده میکنیم.
ساختار:
if condition:
# اگر شرط درست باشد
else:
# اگر شرط نادرست باشد
مثال:
score = 8
if score >= 10:
print("قبول شدی! 🎉")
else:
print("مردود شدی. دفعه بعد تلاش بیشتری کن 💪")
چون 8 >= 10 برابر با False است، بخش else اجرا میشود.
خروجی:
مردود شدی. دفعه بعد تلاش بیشتری کن 💪
👤 استفاده از if و else با ورودی کاربر
میتوانیم شرطها را با اطلاعاتی که کاربر وارد میکند نیز ترکیب کنیم.
age = int(input("سن خود را وارد کنید: "))
if age >= 18:
print("شما بزرگسال هستید.")
else:
print("شما زیر ۱۸ سال هستید.")
در این مثال از int() استفاده کردهایم؛ زیرا input() مقدار واردشده توسط کاربر را به صورت رشته (str) برمیگرداند.
بنابراین برای انجام مقایسه عددی، آن را به عدد صحیح تبدیل کردهایم.
🔁 دستور elif در پایتون
اگر فقط دو حالت داشته باشیم، if و else کافی هستند.
اما اگر چند حالت مختلف وجود داشته باشد، میتوانیم از elif استفاده کنیم.
elif مخفف else if است و به ما اجازه میدهد شرطهای مختلف را به صورت متوالی بررسی کنیم.
ساختار کلی:
if condition1:
# block 1
elif condition2:
# block 2
elif condition3:
# block 3
else:
# default block
📊 مثال دستهبندی نمره با if و elif
فرض کنید میخواهیم نمره یک دانشآموز را دستهبندی کنیم:
- ۱۷ و بالاتر → عالی
- ۱۴ تا کمتر از ۱۷ → خوب
- ۱۰ تا کمتر از ۱۴ → قابل قبول
- کمتر از ۱۰ → مردود
کد:
score = 16
if score >= 17:
print("عالی 🌟")
elif score >= 14:
print("خوب 👍")
elif score >= 10:
print("قابل قبول 🙂")
else:
print("مردود ❌")
خروجی:
خوب 👍
🔄 پایتون شرطهای elif را چگونه بررسی میکند؟
پایتون شرطها را از بالا به پایین بررسی میکند.
به محض اینکه به اولین شرط درست برسد:
- همان بلوک را اجرا میکند.
- سایر
elifها وelseرا بررسی نمیکند.
برای مثال:
score = 16
if score >= 17:
print("عالی")
elif score >= 14:
print("خوب")
elif score >= 10:
print("قابل قبول")
else:
print("مردود")
پایتون ابتدا بررسی میکند:
16 >= 17 → False
سپس:
16 >= 14 → True
بنابراین "خوب" چاپ میشود و بررسی شرطهای بعدی متوقف میشود.
⚠️ چرا ترتیب شرطها در elif مهم است؟
ترتیب شرطها میتواند نتیجه برنامه را تغییر دهد.
کد زیر را ببینید:
score = 18
if score >= 10:
print("قبول")
elif score >= 17:
print("عالی")
else:
print("مردود")
خروجی:
قبول
شاید انتظار داشته باشید "عالی" چاپ شود، اما این اتفاق نمیافتد.
چرا؟
چون شرط اول:
score >= 10
برای 18 درست است. بنابراین پایتون همان بلوک را اجرا میکند و دیگر سراغ elif نمیرود.
نسخه صحیح:
score = 18
if score >= 17:
print("عالی 🌟")
elif score >= 14:
print("خوب 👍")
elif score >= 10:
print("قابل قبول 🙂")
else:
print("مردود ❌")
خروجی:
عالی 🌟
قانون مهم
وقتی از چند
elifاستفاده میکنید، شرطها را طوری مرتب کنید که شرطهای خاصتر یا محدودتر، قبل از شرطهای عمومیتر قرار بگیرند.
🧩 مثال جامع: بررسی نام کاربری و رمز عبور
حالا میتوانیم چند مفهوم این جلسه را کنار هم قرار دهیم.
username = input("نام کاربری: ")
password = input("رمز عبور: ")
if username == "admin" and password == "1234":
print("خوش آمدید! ورود موفق ✅")
elif username == "admin":
print("رمز عبور اشتباه است ⚠️")
elif password == "1234":
print("نام کاربری اشتباه است ⚠️")
else:
print("اطلاعات ورود صحیح نیست. ❌")
در این مثال از and نیز استفاده کردهایم.
and یک عملگر منطقی است و زمانی که هر دو شرط درست باشند، نتیجه درست خواهد بود.
🔜 در جلسه ۱۴ عملگرهای منطقی
and،orوnotرا به صورت کامل بررسی خواهیم کرد.
🧠 شرطهای ترکیبی و خوانایی کد
در برنامههای واقعی ممکن است بخواهیم نتیجه یک شرط را در متغیر ذخیره کنیم.
مثلاً:
age = 20
has_ticket = True
if age >= 18 and has_ticket:
print("ورود مجاز است.")
این روش میتواند کد را خواناتر کند، بهخصوص زمانی که شرطها پیچیدهتر میشوند.
در جلسه بعد یاد میگیریم چگونه با عملگرهای منطقی، چند شرط را به شکل دقیق و قابلکنترل با یکدیگر ترکیب کنیم.
⚠️ خطاهای رایج در دستورات شرطی پایتون
۱. فراموش کردن :
بعد از شرط باید : قرار بگیرد:
if age >= 18:
print("بزرگسال")
نوشتن کد زیر اشتباه است:
if age >= 18
print("بزرگسال")
این کد با خطای نحوی (SyntaxError) مواجه میشود.
۲. فراموش کردن تورفتگی
کد زیر صحیح نیست:
if age >= 18:
print("بزرگسال")
باید بنویسیم:
if age >= 18:
print("بزرگسال")
۳. استفاده از = به جای ==
این کد اشتباه است:
if age = 18:
print("18 ساله است")
برای مقایسه باید از == استفاده کنیم:
if age == 18:
print("18 ساله است")
۴. بیتوجهی به نوع داده
به یاد داشته باشید که input() مقدار را به صورت رشته دریافت میکند:
age = input("سن: ")
در اینجا age یک str است.
اگر قصد انجام محاسبات عددی یا مقایسه عددی داریم، معمولاً باید آن را تبدیل کنیم:
age = int(input("سن: "))
🧪 تمرینهای جلسه ۱۳
حالا نوبت شماست که دستورات شرطی در پایتون را تمرین کنید.
تمرین ۱: تشخیص عدد زوج و فرد
برنامهای بنویسید که یک عدد از کاربر دریافت کند و مشخص کند عدد زوج است یا فرد.
راهنمایی: از عملگر باقیمانده % استفاده کنید.
یک راهحل ممکن:
num = int(input("یک عدد وارد کنید: "))
if num % 2 == 0:
print("عدد زوج است.")
else:
print("عدد فرد است.")
تمرین ۲: تعیین سطح نمره
برنامهای بنویسید که سه نمره از کاربر دریافت کند، میانگین آنها را محاسبه کند و بر اساس میانگین، یکی از رتبههای A، B، C، D یا F را نمایش دهد.
توجه: معیارهای زیر صرفاً برای تمرین برنامهنویسی هستند و سیستم نمرهدهی واقعی میتواند بسته به مدرسه، دانشگاه یا کشور متفاوت باشد.
n1 = float(input("نمره اول: "))
n2 = float(input("نمره دوم: "))
n3 = float(input("نمره سوم: "))
avg = (n1 + n2 + n3) / 3
print(f"میانگین شما: {avg:.2f}")
if avg >= 17:
grade = "A"
elif avg >= 14:
grade = "B"
elif avg >= 10:
grade = "C"
elif avg >= 7:
grade = "D"
else:
grade = "F"
print(f"نمره کل شما: {grade}")
در این مثال از :.2f استفاده کردهایم تا میانگین با دو رقم اعشار نمایش داده شود.
تمرین ۳: بررسی سن
برنامهای بنویسید که سن کاربر را دریافت کند و بر اساس آن پیام مناسبی نمایش دهد.
برای مثال:
- کمتر از ۱۳ سال → کودک
- ۱۳ تا ۱۷ سال → نوجوان
- ۱۸ سال و بیشتر → بزرگسال
سعی کنید این تمرین را با استفاده از if، elif و else حل کنید.
تمرین ۴: بررسی قبولی
برنامهای بنویسید که نمره کاربر را دریافت کند.
اگر نمره حداقل 10 بود، پیام قبولی و در غیر این صورت پیام مردودی نمایش داده شود.
score = float(input("نمره خود را وارد کنید: "))
if score >= 10:
print("قبول شدید! 🎉")
else:
print("مردود شدید.")
📚 جمعبندی جلسه ۱۳
در این جلسه با دستورات شرطی در پایتون آشنا شدیم و یاد گرفتیم چگونه برنامه را از حالت کاملاً خطی خارج کنیم.
| مفهوم | توضیح |
== |
بررسی برابر بودن دو مقدار |
!= |
بررسی نابرابر بودن دو مقدار |
> |
بزرگتر بودن |
< |
کوچکتر بودن |
>= |
بزرگتر یا مساوی بودن |
<= |
کوچکتر یا مساوی بودن |
if |
اجرای یک بلوک در صورت درست بودن شرط |
else |
اجرای بلوک جایگزین در صورت نادرست بودن شرط |
elif |
بررسی شرطهای جایگزین به صورت متوالی |
True / False |
مقادیر بولی حاصل از شرطها |
Indentation |
مشخص کردن بلوکهای کد در پایتون |
نکته کلیدی جلسه
با یادگیری if، elif و else، برنامههای ما دیگر مجبور نیستند همیشه یک مسیر ثابت را طی کنند.
اکنون میتوانیم به برنامه بگوییم:
اگر این اتفاق افتاد، این کار را انجام بده؛ در غیر این صورت، کار دیگری انجام بده.
این مفهوم یکی از پایهایترین و مهمترین مفاهیم برنامهنویسی است و تقریباً در تمام پروژههای واقعی پایتون با آن سروکار خواهید داشت.
🔜 پیشنمایش جلسه ۱۴: عملگرهای منطقی در پایتون
در این جلسه با شرطهای ساده کار کردیم. اما در برنامههای واقعی، معمولاً لازم است چند شرط را همزمان بررسی کنیم.
برای مثال:
اگر سن کاربر حداقل ۱۸ سال باشد و کارت ورود داشته باشد، اجازه ورود بده.
برای ساخت چنین شرطهایی به عملگرهای منطقی در پایتون نیاز داریم.
در جلسه بعد با سه عملگر مهم آشنا میشویم:
and— زمانی که همه شرطهای موردنظر باید درست باشندor— زمانی که حداقل یکی از شرطها باید درست باشدnot— برای معکوس کردن نتیجه یک شرط
با استفاده از این عملگرها میتوانیم شرطهای ساده را با یکدیگر ترکیب کنیم و برنامههای هوشمندتر و پیچیدهتری بنویسیم.
پس قبل از رفتن به جلسه ۱۴، حتماً تمرینهای این جلسه را انجام دهید. 🚀
❓ سوالات متداول درباره دستورات شرطی در پایتون
دستور if در پایتون چیست؟
if برای بررسی یک شرط و اجرای یک بلوک از کد در صورتی که آن شرط درست باشد استفاده میشود.
age = 20
if age >= 18:
print("ورود مجاز است.")
تفاوت if و else چیست؟
if زمانی اجرا میشود که شرط درست باشد و else زمانی اجرا میشود که شرط if برقرار نباشد.
elif در پایتون چه کاربردی دارد؟
از elif برای بررسی چند شرط مختلف به صورت متوالی استفاده میکنیم. پایتون از بالا به پایین شرطها را بررسی میکند و اولین شرط درست را اجرا میکند.
تفاوت = و == چیست؟
= برای انتساب مقدار به متغیر استفاده میشود، در حالی که == برای مقایسه دو مقدار به کار میرود.
x = 10
print(x == 10)
چرا Indentation در پایتون مهم است؟
پایتون از تورفتگی برای مشخص کردن بلوکهای کد استفاده میکند. به همین دلیل رعایت تورفتگی در دستورات شرطی ضروری است.
🎯 نتیجه نهایی
تا اینجا یاد گرفتیم چگونه با استفاده از عملگرهای مقایسهای و دستورات شرطی در پایتون رفتار برنامه را بر اساس شرایط مختلف تغییر دهیم.
در جلسه بعد یک قدم جلوتر میرویم و با عملگرهای منطقی and، or و not یاد میگیریم چگونه چند شرط را با یکدیگر ترکیب کنیم.
📚 جلسه بعد: عملگرهای منطقی در پایتون؛ and، or و not 🚀
تحقیق و تدوین مهدی گمرکی
