آموزش کامل و جامع دستور IF در پایتون
در همه زبانهای برنامهنویسی برای تصمیمگیری در اجرا یا عدم اجرای یک کد، از توابع شرطی استفاده میکنند. زبان برنامه نویسی پایتون (python programming) نیز از این قاعده مستثنی نبوده و توابع مختلفی را برای اجرای دستورات شرطی در آن قرار دادهاند. یکی از این توابع، if statements است. از دستور if در پایتون زمانی استفاده میکنیم که بخواهیم یک سری از کدها تنها در زمان خاصی اجرا شوند. در این مطلب از مجله مکتوب میخواهیم این بار توضیحاتی کامل در مورد دستور if در زبان پایتون ارائه کنیم.
آموزش دستور IF در پایتون
فرض کنید میخواهیم دانشآموزان را بر اساس نمراتی که کسب کردهاند، در سه گروه A، B و C به صورت زیر دستهبندی کنیم.
- اگر نمرات بالای 19 بود، در گروه A
- اگر نمرات بالای 17 بود در گروه B
- و اگر نمرات بالای 14 بود در گروه C
برای پیادهسازی چنین حالتی در python، باید syntax مخصوص به آن که همان if است را به کار ببریم.
دستور if پایتون سه حالت دارد که عبارتند از:
- if statement
- ..else statements
- ..elif…else statement
در ادامه همراه ما باشید تا توابع شرطی در پایتون را به طور کامل بررسی کنیم.
پیشنهاد مطالعه: همه چیز در مورد توابع بازگشتی پایتون
1. if statements در زبان برنامه نویسی پایتون
سینتکس دستور if در پایتون به شکل زیر است.
if condition:
# body of if statement
مفسر زبان پایتون ابتدا شرط (condition) را بررسی میکند. در صورتی که شرط برقرار بود، کدهای داخل آن اجرا میشوند. اما اگر شرط برقرار نشد، کدها اجرا نخواهند شد.
مثال 1: تابع if در پایتون
number = 10
# check if number is greater than 0
if number > 0:
print('Number is positive.')
print('The if statement is easy')
در مثال بالا، یک متغیر با نام number ایجاد کردهایم که مقدار آن برابر با 10 است. سپس در تابع if گفتهایم اگر متغیر number بزرگتر از 0 بود (یعنی عدد مثبت بود)، عبارت «Number is positive» را در خروجی چاپ کن.
Number is positive. The if statement is easy
حال بیاید مقدار متغیر number را به 6- تغییر دهیم.
number = -6
در این حالت چون شرط برقرار نمیشود، عبارت «Number is positive» در خروجی چاپ نخواهد شد. چرا که 6- بزرگتر از 0 نیست.
2. if…else statements در پایتون (else statement in Python)
حالت دیگری از دستور شرطي پايتون، if…else است. در این دستور یک حالت دیگر برای if در نظر گرفته شده تا اگر شرط if برقرار نبود، کدهای داخل آن اجرا شود. سینتکس دستور else Python به شکل زیر است.
if condition:
# block of code if condition is True
else:
# block of code if condition is False
اگر شرط if در پایتون برقرار باشد (یعنی تابع مقدار True را برگرداند)، دستورات داخل if اجرا و دستورات else نادیده گرفته میشوند.
اما اگر شرط if برقرار نباشد، فقط کدهای داخل else اجرا میشود. فرض کنید فرمی را برای ورود کاربران طراحی کردهاید. در این فرم میگویید اگر ایمیل و رمز کاربر درست بود، وارد پنل کاربری شود. اما اگر ایمیل یا رمز عبور غلط بود، «عبارت اطلاعات وارد شده صحیح نیست» را به کاربر نشان دهد.
مثال 2: if eles Statements
number = 10
if number > 0:
print('Positive number')
else:
print('Negative number')
print('This statement is always executed')
خروجی کد بالا به صورت زیر است:
Positive number This statement is always executed
درست مانند مثال اول، یک متغیر با نام number ایجاد و مقدار آن را برابر با 10 قرار دادهایم.
سپس در دستور if گفتهایم اگر مقدار number بزرگتر از 0 بود، عبارت «Positive number» را در خروجی چاپ کن. از آنجایی هم که عدد 10 بزرگتر از 0 است، کدهای داخل if اجرا میشود. اما اگر مقدار number را از 10 به یک عدد منفی مثل 8- تغییر دهیم، چون شرط if برقرار نیست، دستورات داخل بدنه else اجرا خواهند شد.
number = -8
خروجی نهایی نیز به شکل زیر است.
Number is negative. This statement is always executed.
3. دستور else if statement در پایتون (Python if…elif…else Statement)
در ادامه توضیح if در پایتون به سراغ حالت سوم دستور شرطی if خواهیم رفت. در حالتهای قبلی این دستور فقط میتوانستیم یک شرط تعیین کنیم. اما در این حالت امکان قرار دادن چند شرط مختلف وجود دارد.
بنابراین زمانی که نیاز به انتخاب بیش از 2 گزینه داشتید، باید به سراغ if…elif…else بروید. سینتکس این دستور به شکل زیر است.
if condition1:
# code block 1
elif condition2:
# code block 2
else:
# code block 3
در این کد، اگر شرط اول برقرار بود، کدهای داخل آن اجرا میشود. اما اگر شرط اول مقدار False برگرداند، پایتون به سراغ بررسی شرط دوم میرود.
چنانچه شرط دوم برقرار بود، کدهای داخل آن اجرا خواهند شد. اما اگر شرط دوم نیز برقرار نبود، کدهای داخل else اجرا میشوند.
مثال 3: if…elif…else در پایتون
number = 0
if number > 0:
print("Positive number")
elif number == 0:
print('Zero')
else:
print('Negative number')
print('This statement is always executed')
خروجی کد بالا به صورت زیر است:
Zero This statement is always executed
در این مثال از تابع if در پایتون، یک متغیر با نام number تعریف و مقدار آن را برابر با 0 تعریف کردهایم. سپس دو شرط را به صورت زیر قرار دادهایم:
- شرط اول: اگر مقدار number بزرگتر از 0 بود، عبارت «Positive number» را در خروجی چاپ کن.
- شرط دوم: اگر مقدار number برابر با 0 بود، عبارت «zero« را در خروجی نمایش بده.
از آنجایی که مقدار number برابر با 0 است، دستور شرطی دوم یعنی elif اجرا خواهد شد. به همین دلیل در خروجی فقط عبارت “zero” را مشاهده میکنیم.
حال اگر مقدار number را یک عدد منفی مثل 9- تغییر دهیم، هیچ یک از شرطها برقرار نمیشوند و دستورات داخل else اجرا خواهد شد.
پیشنهاد مطالعه: آموزش کار با انواع حلقه در پایتون
ifهای تو در تو در زبان پایتون
علاوه بر حالتهایی که در بالا توضیح دادیم، امکان استفاده از تابع if به صورت تو در تو نیز وجود دارد. سینتکس if تو در تو به شکل زیر است.
# outer if statement
if condition1:
# statement(s)
# inner if statement
if condition2:
# statement(s)
نکات مهم
- در شرطهای داخلی میتوان از دستورات else و elif استفاده کرد.
- امکان اضافه کردن شرط if در داخل دستورات else و elif نیز وجود دارد.
- میتوان چندین شرط if را به صورت تو در تو به کار برد.
مثال 4: شرط if تو در تو
number = 5
# outer if statement
if (number >= 0):
# inner if statement
if number == 0:
print('Number is 0')
# inner else statement
else:
print('Number is positive')
# outer else statement
else:
print('Number is negative')
# Output: Number is positive
مانند مثالهای بالا، یک متغیر با نام number تعریف کردهایم که مقدار آن 5 است. سپس از شرط تو در تو به شکل زیر استفاده کردهایم.
- اگر مقدار number بزرگتر یا مساوی 5 بود، شرط if اجرا میشود. سپس در بدنه if، یک شرط دیگر نیز قرار دادهایم. به این صورت که اگر مقدار number مساوی با 0 بود، عبارت «Number is 0» در خروجی چاپ شود. اما اگر عدد صفر نبود، عبارت «Number is Positive» نمایش داده شود.
- در غیر اینصورت، یعنی زمانی که مقدار Number مساوی یا بزرگتر از 0 نباشد، عبارت «Number is negative» در خروجی به نمایش درمیآید.
هدف از این کد، بررسی مثبت، منفی یا صفر بودن یک عدد است.
پیشنهاد مطالعه: آموزش کار با لیست در پایتون
عملگرهای دستور if در پایتون
برای تصمیمگیری بهتر و اجرای صحیح دستورات شرطی در پایتون، علاوه بر عملگرهای مقایسهای مثل ==، <، > و != میتوانید از سایر عملگرها نیز استفاده کنید.
عملگر and
در سمت راست و چپ این عملگر دو عملوند قرار میگیرد. تنها در صورتی که هر دو طرف آن مقدار True را برگرداند، شرط برقرار خواهد شد. اما اگر یکی از عملوندها صحیح نباشد، شرط برقرار نمیشود.
number1 = 3
number2 = 4
if number1 == 3 and number2==4:
print (“condition is true”)
در این مثال چون هر دو عملوند مربوط به عملگر and صحیح هستند، در خروجی عبارت «condition is true» نمایش میشود.
عملگر or
این عملگر شبیه به and است. اما اگر تنها یکی از دو عملوند صحیح باشند، شرط اجرا خواهد شد.
number1 = 3
number2 = 5
if number1 == 3 or number2==4:
print (“condition is true”)
در این مثال با اینکه number2 برابر با 4 نیست، ولی بازهم در خروجی عبارت «condition is true» نمایش داده میشود. چون یکی از دو طرف عملگر or یعنی number1 برقرار است.
پیشنهاد مطالعه: آموزش کار با متغیرها در پایتون
سخن پایانی
در این نوشته سعی کردیم دستور if در پایتون را به سادهترین شکل ممکن توضیح دهیم. همانطور که متوجه شدید، در زبان پایتون if کاربرد بسیار زیادی دارد و با ترکیب این دستور با سایر دستورات مثل حلقه for میتوان برنامههای حرفهای نوشت. بنابراین برای یادگیری بیشتر، توصیه میکنیم حتما مثالهای مختلفی برای خودتان تعیین کرده و آنها را انجام دهید. به طور مثال میتوانید با کمک دستور if و حلقه for، برنامهای بنویسید که اعداد اول و غیر اول بین 1 تا 1000 را مشخص کند.
مهمترین موضوع در یادگیری زبانهای برنامهنویسی، تمرین مداوم و مرور آموزشها است. چنانچه در رابطه با دستور if در پایتون نیاز به راهنمایی داشتید، آن را در قسمت نظرات مطرح نمایید.
آموزش پایتون
اگر به فکر یادگیری برنامهنویسی پایتون هستید ابتدا باید اصول برنامهنویسی و مقدمات پایتون را یاد بگیرید. برای کمک به یادگیری پایتون در مکتب خونه انواع دوره آموزش پایتون موجود است که به کاربران کمک میکند به سادهترین شکل ممکن پایتون را بیاموزند. از طریق صفحه آموزش پایتون مکتب خونه میتوانید انواع دورههای موجود برای پایتون را ببینید.
منبع مقاله: programiz
سلام
من تابع زیر رو با IF نوشتم ولی دور اول با اینکه ورودی درست است ولی بازم دستور else رو اجرا میکنه و از دور دوم درست اجرا میشه.چرا؟
: (def correct_name(NAME
: “if NAME == “x” or NAME == “X” or NAME == “o” or NAME == “O
print(f”thanks , The your choice is: {NAME}”)
: else
NAME = input(“invaid name. \n plaese choose: X or O : “)
correct_name(NAME)
مشکل کد شما در نوع بررسی نام ورودی (“NAME”) است. در حال حاضر، شما از عملگر == برای مقایسه استفاده میکنید که به حروف کوچک و بزرگ حساس است.
فرض کنید در دور اول کاربر “x” را وارد میکند. کد به درستی NAME == “x” را True ارزیابی میکند و به درستی عبارت thanks , The your choice is: {NAME} را چاپ میکند.
اما در ادامه، تابع correct_name دوباره با همان مقدار (“x”) فراخوانی میشود. در این دور، چون متغیر NAME قبلاً مقداردهی شده است، به جای دریافت ورودی جدید، از مقدار قبلی (“x”) استفاده میشود.
از آنجایی که قبلاً این مقدار بررسی شده و معتبر شناخته شده، شرط if دوباره True ارزیابی میشود و به جای رفتن به else، بلوکه print اجرا میشود.
برای حل این مشکل، باید نام ورودی را بدون توجه به حروف کوچک و بزرگ بررسی کنید. دو راه حل ساده برای این کار وجود دارد:
تبدیل همه مقادیر به حروف کوچک یا بزرگ یا استفاده از کتابخانه re