به کمک شرطها در زبانهای برنامه نویسی میتوانیم تصمیمگیری کنیم. با استفاده از دستور if در پایتون میتوان مشخص کرد که اگر یک یا چند شرط برقرار بود، کدهای خاصی را اجرا کند. در این مقاله با شرط در پایتون و روشهای استفاده از آن را میخوانیم.
در زبانهای برنامه نویسی هم مثل حرفهایی که هر روزه میزنیم، اما و اگرهای زیادی داریم! برای مثال:
- اگر کاربر پیام را تأیید کرد، اطلاعات را ثبت کن.
- اگر عدد وارد شده کمتر از ۱۰۰ بود، آن را دو برابر کن.
- اگر عدد ضریب ۳ و بیشتر از ۹۹۹ بود، پیام تشکر نشان بده.
- اگر عدد فرد بود، آن را نمایش بده و اگر زوج بود، یکی از آن کم کن.
اینها شرطهای ساده و متفاوتی هستند که با استفاده از دستور if و دستور if else در پایتون قابل اجرا هستند. اگر نمیدانید دستور چیست، میتوانید آموزش انواع دستورهای برنامهنویسی را ببینید.
در ابتدا با دستور شرطی آشنا شده و سپس ۳ نوع دستور شرطی پایتون را خواهیم آموخت.
برای عضویت در دوره ویدئویی میتونید به «دوره جامع پایتون در کالج» مراجعه کنید. با ثبتنام رایگان در دوره، به تمام جلسات اصلی، جلسات تکمیلی، تمرینها، آزمونها و منابع مازاد دسترسی کامل خواهید داشت.
فهرست محتوای آموزش
دستور شرط در پایتون
همانطور که تا اینجا متوجه شدید، به کمک یک شرط، در صورتی که وضعیت خاصی برقرار بود، اقدام به اجرای کدهای خاصی میکنیم.
دیاگرام زیر، نحوه اجرای سادهترین نوع دستور شرطی (با یک شرط) را نشان میدهد.
شرطها چگونه تعریف میشوند ؟
برای اجرای شرط، ابتدا باید یک وضعیت را مشخص کنیم. منظورم از وضعیت، همان چیزی است که میخواهیم اگر اتفاق افتاد، کدهای دیگر اجرا شوند.
شرطها یا درست (True) یا غلط (False). به این نوع مقادیر، مقادیر بولیَن (Boolean) گفته میشود.
برای مقایسه مقادیر عددی باید از عملگرهای مقایسهای استفاده کنیم. عملگرهای مقایسهای عبارتاند از:
==
برای بررسی مساوی بودن دو مقدار!=
برای مقایسه مساوی نبودن دو مقدار<
و>
برای مقایسه بزرگتری و کوچکتری<=
و>=
برای مقایسه بزرگتر مساوی و کوچکتر مساوی
فرض کنید میخواهیم اگر مقدار متغیر i برابر ۱ بود، کار خاصی انجام دهیم. پس وضعیت (شرط) ما میشود:
i == 1
نتیجه این مقایسه، به صورت یک عبارت Boolean خواهد بود.
اگر بخواهیم بهطور همزمان از چند شرط استفاده کنیم، از کلمات کلیدی and و or میان شرطها استفاده خواهیم کرد.
- and به معنی «و» : همه شرطها باید همزمان با هم برقرار باشند.
- or به معنی «یا» : حداقل یکی از شرطها باید برابر باشد.
حالا نوبت آشنایی با ساختار دستورات شرطی پایتون است. بریم که با ۳ ساختار اصلی شرطها در پایتون آشنا شویم.
دستور if در پایتون
پایه و اساس تمام شرطها در پایتون با کلمه کلیدی if شروع میشود. کلمه if به معنای «اگر» است. ساختار یک شرط ساده در پایتون به صورت زیر است:
if condition:
doSomeThing()
condition
همان شرط یا شرطهای ماست.- و
doSomeThing()
یک قطعه کد یا فراخوانی یک تابع است.
همینطور که میبینید تعریف شرط در پایتون بسیار ساده و مشابه زبان محاورهای است!
فرض کنید میخواهیم بگوییم اگر i بزرگتر از 10 بود، پیغام تأیید چاپ کند. برای این کار به صورت زیر عمل میکنیم:
if i >= 10:
print("Accepted!")
به همین سادگی!
حال میخواهیم اگر عدد i بزرگتر از 10 بود و مقدار j دقیقاً مساوی 25 بود، پیغام تأیید چاپ کند:
if i >= 10 and j == 25:
print("Accepted!")
دستور else در پایتون
در مکالمات روزمره از شرطهای پیچیدهتری هم استفاده میکنیم. مثلاً میگوییم:
اگر فردا هوا آفتابی بود به خیابان میروم و در غیر این صورت در خانه میمانم!
به بخش دوم عبارت گفته شده دقت کنید. چه چیزی باعث جدا شدن قسمت دوم عبارت شده؟
درست حدس زدید: «در غیر این صورت» در محاوره از «وگرنه» یا «اگرنه» هم استفاده میکنیم.
معادل «در غیر این صورت» در ساختار شرطی پایتون، با کلمه کلیدی else شناخته شده و نحوه استفاده از آن به صورت زیر است:
if condition:
# code 1
else:
# code 2
اگر شرط condition برقرار بود (True بود)، کد ۱ و در غیر این صورت کد ۲ اجرا خواهد شد.
فرض کنید عددی در متغیر num داریم. میخواهیم بررسی کنیم که آیا این عدد یک عدد حسابی است یا منفی ؟ اعداد حسابی بازه 0 و بزرگتر از آن هستند.
پس باید بررسی کنیم که اگر مقدار متغیر بزرگتر یا مساوی 0 بود، عدد حسابی و در غیر این صورت عدد منفی خواهد بود.
num = 7
if num >= 0:
print("Number is Whole!")
else:
print("Number is Negative!")
پس از اجرای کد بالا، شرط برقرار بوده و خط سوم اجرا میشود:
Number is Whole!
اگر مقدار متغیر را برابر عددی منفی قرار دهیم، خط پنج آن اجرا خواهد شد.
num = -21
if num >= 0:
print("Number is Whole!")
else:
print("Number is Negative!")
# Result:
Number is Negative!
ترتیب خطوط اجرا شده در ساختار شرطی if…else بالا به این صورت است: ۱ -> ۲ -> ۴ -> ۵
دستور شرطی elif پایتون
تا اینجا با ساختار اصلی شرط در پایتون آشنا شدیم. یک کلمه کلیدی دیگر که برای ساختارهای شرطی که میخواهیم در آنها چندین بار و چند شرط مختلف را بررسی کنیم وجود دارد.
کلمه elif مخفف عبارت else if است. جمله زیر در زبان محاورهای را در نظر بگیرید:
اگر فردا هوا آفتابی بود، به خیابان میروم، اگر بارانی بود به پارک میروم و در غیر این صورت در خانه میمانم.
عبارت بالا از سه بخش تقسیم شده: اگر [بخش ۱] در غیر این صورت اگر [بخش ۲] در غیر این صورت [بخش ۳]
بسته به شرایط، قسمت دوم میتواند بارها و بارها تکرار شود. اما در هر ساختار شرطی، قسمت اول و قسمت سوم فقط یکبار وجود دارند.
ساختار if…elif…else در پایتون به صورت زیر تعریف میشود:
if condition1:
# code 1
elif condition2:
# code 2
else:
# code 3
میتوانیم با تکرار قسمت دوم، بارها و بارها شرطهای مختلفی را بررسی کنیم؛ مشابه زیر:
if condition1:
# code 1
elif condition2:
# code 2
elif condition3:
# code 3
elif condition4:
# code 4
else:
# code 5
همان مثال عددی قبلی را در نظر بگیرید، با این تفاوت که اگر عدد مثبت بود، یک پیام، اگر صفر بود، پیامی دیگر و در غیر این صورت (در صورت منفی بودن) پیام مرتبطی نمایش دهد.
برای حرفهایتر شدن کار به کمک آموزش گرفتن ورودی از کاربر در پایتون، عدد را از کاربر میگیریم:
num = int(input())
if num > 0:
print("Number is Positive!")
elif num == 0:
print("Number is Zero!")
else:
print("Number is Negative!")
این کد را اجرا کرده و چند عدد مختلف را به عنوان ورودی به آن میدهیم. نتیجه را در تصویر زیر مشاهده میکنید.
برای دیدن مثالهای بیشتر میتوانید به این صفحه انگلیسی مراجعه کنید.
جمعبندی: آموزش شرط در پایتون
در این مقاله با ساختار شرطها در پایتون آشنا شدیم. از شرطها زمانی استفاده میشود که میخواهیم در صورت برقراری یک وضعیت خاص، قطعه کد مشخص اجرا شود. ساختار شرط در پایتون از سه کلمه کلیدی اصلی استفاده میکند:
if
: برای شروع ساختار شرطی و بررسی شرطelif
: در صورت برقرار نبودن شرط اصلی، شرط دیگری را بررسی میکند. (اختیاری)else
: در صورت برقرار نبودن شرط (یا شرطها) اجرا خواهد شد. (اختیاری)
شرطها در هر زبان برنامهنویسیای بسیار زیاد استفاده میشوند. پس سعی کنید علاوه بر مرور مثالهای این آموزش، چند مثال برای خودتان کد بزنید.
این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش پایتون
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
سلام من میخواستم که چندتا if رو که به هم مربوط نیستن رو باهم جمع کنم ولی نمیدونم چجوری از تابع sum اینجا استفاده کنم!
سلام
منظورتون از جمع چند تا if چیه؟ لفظ جمع برای اعداده فقط! میتونید مثالی از کاری که میخواید انجام بشه بزنید؟
خرهای جنگل سیاه
یک روز یک خری متعلق به جنگل سیاه سرابی دید و به دلیل خرارت (خر بودن) شروع به شنا کردن در آن کرد و از آنجا که جنگل سیاه تمامی ندارد، همینطور ادامه داد و ادامه داد. خرهای جنگل سیاه شیوه خاصی برای شنا کردن دارند که به شنای خری معروف است. اگر جنگل را به صورت یک دستگاه مختصات نشان دهیم که خر از مبدا آن شروع به شنا کرده، خر در اثر شنای خری به این شکل در جنگل جا به جا میشود:
عدد نوشته شده در خانه (x, y) به معنای زمان حضور خر در این خانه است.
مدتها بعد که هری، هرماینی و رون وقتی متوجه موضوع شدند، به دنبال خر گمشده رفتند و در جنگل پخش شدند. حالا هر یک به جایی از جنگل رسیده و میخواهد بداند خر گمشده چه زمانی در آنجا بوده تا بتواند پیدایش کند. جنگل سیاه جای ترسناکی است و آنها به کمک شما برای گرفتن جواب سوالهای خود و پیدا کردن خر گمشده احتیاج دارند.
سلام
برای این الگوریتم میخواید الآن؟! بهتره در تعیین یه مسئله، ورودیها و خروجیهای مورد انتظار رو علاوه بر کاری که لازمه انجام بده مشخص کنید.
سلام یک مسئه ای به ما دادن که هم زمان باید از if تو در تو و هم elif استفاده کنیم تا زمانی که اولین شرط تو در تو رو می نویسم درسته اما وقتی می خوام elifرو بنویسم ارور میده میشه راهنمایی کنید
سلام
جه اروری میده؟ و اینکه یه نمونه فقط از شرط تو در تویی که میذارید و خطا میده رو هم بفرستید تا بهتر بتونیم راهنماییتون کنیم. (نیازی به بدنه شرطها نیست و فقط ساختار شرط کافیه)
سلام اگر چطوری باید کد هارو شماره گذاری کرد؟
الان چطوری باید کد ۱ رو درست کنم تا اجرا بشه؟
سلام
منظورتون رو از شمارهگذاری نفهمیدم! اگه منظورتون اینه که code 1 در متن آموزش چیه؛ این یه کامنته و بلوکی رو مشخص کرده که باید کدهای موردنظرتون رو در اون محدوده بنویسید.
یعنی ما فقط میتونیم دستور printرو بنویسیم؟
نه!
درون بلاکهای شرط هر تعداد خط و هر دستوری رو میتونید بنویسید. مثلاً یه چیزی رو محاسبه کنه، یه لیست رو آپدیت کنه، یه تابع رو فراخوانی کنه. حالا ممکنه یکی از این دستورات یه print باشه یا اصلاً پرینتی انجام نده!
پرینت توی این آموزش فقط نمادی از «هر تعداد و هر نوع کدی» هست. توی جلسات بعدی و ویدئوهای تمرینی در دوره مکمل پایتون خواهید دید که کارهای مختلفی توی بدنهی شرطها میکنیم.
مثلا میشه کدی نوشت که اگر
:if x<18
صفحه رنگی بشه؟
منظورتون رو از صفحه رنگی بشه متوجه نمیشم.
ولی میتونید جایی که فارسی نوشتید، یه تابع دیگه رو صدا بزنید، یا یه شرط دیگه رو چک کنید، دستوری برای رنگی کردن یه canvas با ماژولهایی مثل tkinter اجرا کنید و …
سلام اگه بخوام یه برنامه بنویسم که اگه تو متن کاربر کلمه ای مثل سلام بود بنویسه سلام باید چه کار کنم میشه توضیح بدید
سلام
در سادهترین حالت میتونید از کلمه کلیدی in استفاده کنید؛ مثل
if 'salam' in user_input:
سلام خسته نباشید
من تازه کار هستم میخوام زمانی جواب که else بود بقیه کد ها اجرا نشه ولی هر کاری میکنم اجرا میشه چیکار کنم؟
سلام
منظورتون بقیه کدهای خارج از بلاک شرطی؟ تموم کردن اجرای کد با دستور
exit()
رو تست کردید؟ممنون بابت پیگیری
سلام خسته نباشید
چطور میتونم شرطی تعریف کنم که اگر تعداد کاراکترای متنی که کاربر ارسال میکنه مثلا ۱۰ تا بود یک عملی رو نمایش بده؟
سلام
میتونید از تابع
len()
برای گرفتن اندازه رشته استفاده کنید. جلسه کار با رشتهها رو در دوره ببینید؛ کمک زیادی در کار باهاشون میکنه.سلام وقتتون بخیر
ممنو از سایت خوبتون
ببخشید من یه فایل چکر ساختم
چطور میتونم کاری کنم وقتی یه موردی رو چک میکنه و بالانسش بالای 0 باشه رو تو یه تکست دیگه ای سیو کنه؟
مثل گود دادن کرک وی پی اس
سلام
احتمال زیاد باید از ساختار شرطی استفاده کنید.
وقتی یه آیتم رو چک میکنه و بالانس رو میده، شما بالانس رو داخل یه شرط بذار، اگه بالای 0 بود داخل یه فایل بنویس اگه نبود یا کاریش نکن یا توی یه فایل جداگانه قرارش بده.
سلام وقتتون بخیر خسته نباشید ممنون از آموزشهاتون من چند بار از دصتور if و else پشت سر هم استفاده کردم برام این ارور را میده
کد من به این صورت هست
سلام؛ دو تا مورد:
یکی اینکه تورفتگی کدها رو به درستی قرار ندادید. وقتی : میذارید باید یه دندونه هم اضافه کنید.
دوم اینکه احتمالاً خطاتون به خاطر اینکه در در قسمت else حروف ع و م رو بدون ” گذاشتید. (اینطوری رشته تشخیص نمیده و فکر میکنه جزء دستوراته)
سلام من دنبال شرط if یک خطی هستم متاسفانه فراموش کردم در اینترنت هم موجود نیست البته فقط فارسی سرچ کردم😂 ولی پیدا نکردم اگر ممکنه بگید چجوری بودش ینی مثل تابع لامبدا توی ۱ خط نوشته میشه
مرسی.
سلام
مرسی که گفتی و فهمیدیم درمورد شرط یک خطی پایتون صحبت نکردیم! 🙂
ساختار کلیش به این شکله:
سلام من میخوام شرطی که نوشتم اگر درست نبود مجدد بره ورودی ها را از کاربر بگیره و این کار اینقدر انجام بده که مقدار شر درست دربیاد . الان با دستور if , else شرط نوشتم ولی بصورت اتومات ورودی ها را در صورت برقرار نبودن شروط از کابر نمیگیرد و باید هر دفعه برنامه اجرا کنه
سلام
جلسه حلقهها رو ببینید. میتونید از حلقه while true در این مورد استفاده کنید.
خیلی عالی مرسی از شما وابتی این همه زهامات که کشیدین برای ما
سلام. عالی بود اما، من دنبال ی چیز دیگه بودم. مثلا ی ورودی میخوام از کاربر بگیرم، میخوام به پایتون بگم که اگه داخل اون متن بلندبالا سلام بود پرینت کن علیک سلام. این کار رو چطوری انجام بدم؟
سلام
جلسه گرفتن ورودی و رشتهها از دوره رایگان رو حتماً ببینید. وقتی یک رشته دارید، میتونید با شرطی مثل
'word' in my_string
بررسی کنید که کلمه مورد نظرتون در رشته وجود داره یا نه. این عبارت True یا False بهتون میده که میتونید در ساختار if پایتون استفاده کنید.سلام وقت بخیر یه سوال من میخوام اگر کاربر گفت جنسیت دختر بود بنویسه عروسک و اگر کاربر گفت پسره بنویسه ماشین
سلام
مثال آخری که در متن آموزش زده شده دقیقا مشابه کاری هست که میخواید انجام بدید. فقط به جای عدد، کافیه یک رشته متنی بگیرید و شرط رو بررسی کنید. اگر در جاییش مشکلی دارید، بپرسید تا راهنمایی کنیم.
عااالی بود مرسی
خوشحالم که براتون مفید بوده! موفق باشید.