دستورات شرطی در پایتون (آموزش ساده به همراه تصاویر)

دستورات شرطی در نرم افزار پایتون
دستورات شرطی در نرم افزار پایتون

با سری آموزش‌های زبان برنامه نویسی پایتون خدمت شما عزیزان علاقمند به این حوزه هستیم. در این مقاله درباره دستورات شرطی در پایتون صحبت می‌کنیم.

گزاره های شرطی و دستور if

نرم‌افزار ویژوال استودیو کد را باز می‌کنیم. یک file جدید ایجاد می‌کنیم و نام آن را main.py می‌گذاریم.

ما یک متغیر تعریف می‌کنیم و عدد ۳ را به آن نسبت می‌دهیم. در مورد دستورات شرطی در پایتون صحبت کردیم. می‌خواهیم بگوییم اگر عدد ما مقدارش ۲ بود، برای ما چاپ کند که this is true
در غیر این صورت می‌خواهیم چاپ کند که this is false

همین را اجرا می‌کنیم.

چاپ کردن this is false
چاپ کردن this is false

مشاهده می‌کنید که this is false را در خروجی نمایش می‌دهد.
حال مقدار را به ۳ تغییر می‌دهیم. ذخیره و سپس اجرا می‌کنیم.

حال true شد. نتیجه تغییر کرد.

چاپ کردن true
چاپ کردن true

قبل از این‌که در مورد ماهیت Truthiness یا Falsiness صحبت کنیم، می‌خواهیم موضوع دیگری را در اینجا نشان دهیم.
برای بررسی کردن دو آیتم از نظر مقداری از = = استفاده می‌کردیم. می‌گفتیم که آیا مقدار number مساوی با عدد ۳ است. از یک علامت = استفاده نکردیم. از ۲ علامت = (= =) استفاده کردیم.
یک علامت دیگر هم برای این کار وجود دارد. در خط سوم علامت == را پاک می‌کنیم و به جای می‌نویسیم is
یعنی آیا number عدد ۳ است؟

اجازه دهید در خط سوم عدد ۳ را به ۲ تغییر دهیم و اول نتیجه false را با هم ببینیم.

cls را تایپ می‌کنیم.

تایپ کردن cls
تایپ کردن cls

کلیک راست می‌کنیم و گزینه Run Python File in Terminal را انتخاب می‌کنیم.

False را برمی‌گرداند.

برگرداندن False
برگرداندن False

حال مقدار را به ۳ تغییر می‌دهیم. ذخیره می‌کنیم و دوباره یک اجرا از آن می‌گیریم.

تغیر دادن مقدار به عدد 3 و اجرا کردن آن
تغیر دادن مقدار به عدد 3 و اجرا کردن آن

خروجی True شد. در اینجا number و عدد ۳ را با هم مقایسه کرد. آیا می‌توان typeها را هم با یکدیگر مقایسه کرد؟ بله.
می‌خواهیم type(number) را مقایسه کند که آیا int است. آن را اجرا می‌کنیم.

تایپ کردن number
تایپ کردن number

در خروجی true را برمی‌گرداند. داریم type متغیر را چک می‌کنیم.

خروجی گرفتن true
خروجی گرفتن true

اگر به جای int بنویسیم str (string) چه اتفاقی می‌افتد؟ آن را اجرا می‌کنیم.

نوشتن string
نوشتن string

خروجی false می‌شود. string نیست و با نگه داشتن ماوس روی number خودش نشان می‌دهد که یک integer است و type آن را نمایش می‌دهد.

خروجی گرفتن false
خروجی گرفتن false

. اگر بخواهیم به روش دیگری type آن را بررسی کنیم، چطور ممکن است؟
برای مثال در خط سوم بخواهیم string را با is چک نکند و با = = چک کند و به جای str بنویسیم int. قاعدتا باید درست باشد. cls را تایپ می‌کنیم.

کلیک راست می‌کنیم و Run Python File in Terminal را انتخاب می‌کنیم.

استفاده کردن از == و هم از is
استفاده کردن از == و هم از is

درست است و مشکلی وجود ندارد. پس هم می‌توانیم از = = استفاده کنیم و هم از is استفاده کنیم.

اما یک مسئله‌ای پیش می‌آید. آیا is و = = همیشه مانند همدیگر عمل می‌کنند؟ به عنوان مثال ما می‌توانیم هر جایی که دو تا مساوی گذاشتیم، از is هم استفاده کنیم؟ آیا این مسئله امکان‌پذیر است؟ خیر، امکان‌پذیر نیست.
بین is و == می‌توان گفت که یک تفاوت بسیار بسیار بزرگی وجود دارد. در خط ۹ کامنت می‌نویسیم که difference between == and is
در اینجا می‌خواهیم تفاوت این دو را با هم بررسی کنیم. در مورد نوع داده‌ای list با همدیگر صحبت کرده بودیم و با آن آشنا شدید.

یک متغیر تعریف می‌کنیم و نام آن را list_1 قرار می‌دهیم و مقدار آن را آرایه شامل ‘a’ , ‘b’ , ‘c’ در نظر می‌گیریم.
متغیر دیگری به نام list_2 را تعریف می‌کنیم و مقدار آن را list_1 در نظر می‌گیریم و یک متغیر دیگر هم تعریف می‌کنیم و مقدار آن هم یک listای در نظر می‌گیریم که آیتم‌های list_1 را دریافت کرده است.

در خط بعد می‌گوییم که list_1 را print کند. در خط بعد list_2 و در خط بعدی هم list_3 را print کند. ۶ خط اول را فعلا به کامنت تبدیل می‌کنیم که چیزی را نمایش ندهد. کلیک راست می‌کنیم و گزینه Run Python File in Terminal را انتخاب می‌کنیم.

تفاوت نداشتن 3 متغیر با همدیگر
تفاوت نداشتن 3 متغیر با همدیگر

مشاهده می‌کنید که خروجی هر سه تا خط یکی است و هیچ فرقی با همدیگر ندارند.
مقایسه‌ای که می‌خواهیم انجام دهیم، بین list_2 و list_3 است. می‌خواهیم این دو را با هم مقایسه کنیم که هر دوی آنها به یک طریقی دارند به list_1 اشاره می‌کنند و مقدارشان را از آن دریافت کردند. در خط آخر (۱۸) با دستور print یک خط ایجاد می‌کنیم.

یک نکته: این‌که گفتیم می‌خواهیم list_2 و list_3 را با هم مقایسه کنیم، اشتباه بود و در واقع می‌خواهیم list_1 را با تک‌تک list_2 و list_3 مقایسه کنیم.
ابتدا می‌گوییم که چک کند اگر list_1 = = list_2 بود، در خط بعد می‌نویسیم list_1 == list_2 : True را print کند. یعنی نتیجه list_1 == list_2، true است.
در خط بعدی می‌نویسیم else (در غیر این صورت) مساوی نیست …

بهتر است دو خط آخر را به روش دیگری بنویسیم زیرا نوشتن به این روش خیلی طولانی می‌شود.

خط ۲۱ و ۲۲ را پاک می‌کنیم و خط ۲۱ را تغییر می‌دهیم و می‌نویسیم نتیجه list_1 == list_2 را print کند.

چاپ کردن لیست 1 مساوی لیست 2
چاپ کردن لیست 1 مساوی لیست 2

در خط بعد می‌نویسیم list_1 == list_3 را print کند.
ابتدا خود این listها را یکی یکی نمایش می‌دهد و سپس list_1 را با list-2 با اپراتور = = چک می‌کند.
در پایین یک cls می‌زنیم. ‌

کلیک راست می‌کنیم و Run Python File in Terminal را انتخاب می‌کنیم.

تایپ کردن cls
تایپ کردن cls

دو تا true برمی‌گرداند.

برگرداندن 2 تا true
برگرداندن 2 تا true

list_1 با list_2 برابر است. درست است و مقادیر آنها یکی است. برای true اول در خروجی، دو خط اول [‘a’ , ‘b’ , ‘c’] چک شده است. مقادیر یکی است. درست است. برای true دوم در خروجی هم [‘a’ , ‘b’ , ‘c’] اول و آخر چک شدند. باز هم مقادیر یکی است و هیچ تفاوتی ندارند.
حال می‌خواهیم از is استفاده کنیم. باز هم خط ۱۸ را copy می‌کنیم و در خط ۲۳ paste می‌کنیم.

این سری به جای = = از is استفاده می‌کنیم و ذخیره می‌کنیم. ابتدا نتیجه را نشان می‌دهیم و بعد در مورد آن صحبت می‌کنیم. در اینجا یک cls را تایپ می‌کنیم.

کلیک راست می‌کنیم و Run Python File in Terminal را انتخاب می‌کنیم.

تایپ کردن cls
تایپ کردن cls

مشاهده می‌کنیم که خروجی آخر false شده است. به چه دلیل؟
با هم یک موردی را چک می‌کنیم. در خط ۱۱ مشاهده می‌کنید که list_1 = [ ‘a’ , ‘b’ , ‘c’ ] و در خط بعد هم list_2 مساوی با همان آرایه بوده است و به خودش اشاره داشته است. اما در خط ۱۳ list_3 یک list جدید بوده است که آیتم‌های آن را از list_1 گرفته است. درست است که مقادیر آنها با هم برابر است اما همان لیست نیست و لیست متفاوت است. یک لیست جدید بوده است.

در خط ۳۰ یک توضیح کوتاه به صورت کامنت برای مطلب بالا می‌نویسیم.
# the = = operator => values are equal
از = = زمانی استفاده می‌کنیم که بخواهیم valueها را با همدیگر مقایسه کنیم. یعنی چه؟ یعنی اگر زمانی که مقدار دو تا آیتم برابر بود، برای ما true را return می‌کند. می‌گوید جواب درست است و مشکلی وجود ندارد.

# the = = operator => values are equal
اما به سراغ is می‌رویم. is چه کاری انجام می‌دهد؟ is ماهیت متغیرها را بررسی می‌کند. باید بگوییم که point to the same object
باید به یک object یکسان (object پایه) اشاره کند، مانند list_2ای که داشتیم. List_2 چه کار کرده بود؟ همان list_1 بود (هم مقدار و هم ماهیت آن) و داشت از خود list_1 تبعیت می‌کرد و داشت به یک object اشاره می‌کرد.

منتها list سوم ما دیگر همان object نبود و یک list جدید بود که آیتم‌های خود را از list_1 گرفته بود. در خروجی هم با همدیگر دیدیم که آیتم‌ها مقادیرشان با یکدیگر کوچکترین تفاوتی نداشت.

در مورد کلمه‌ی is بعدها بیشتر صحبت می‌کنیم و می‌گوییم که اصلا چگونه عمل می‌کند. باز هم توضیح خواهیم داد. فقط می‌خواستم که با آن آشنا شوید.
اما بحث Truthiness و falsiness چیست؟ یک file ایجاد می‌کنیم و نام آن را second.py می‌گذاریم و در اینجا راجع به آن صحبت می‌کنیم. یک cls هم تایپ می‌کنیم.

تایپ کردن cls
تایپ کردن cls

در file قبلی خط‌های ۱ تا ۶ را از حالت کامنت خارج می‌کنیم. علاوه بر اینکه ما می‌توانیم با استفاده از full expressionها درستی یا نادرستی یک object را چک کنیم، می‌توانیم از یک سری موارد دیگر نیز استفاده کنیم. برخی از متغیرها هستند که به صورت پیش‌فرض (default‌) مقادیر درست یا غلط را درون خودشان نگهداری می‌کنند. منظورمان چیست؟

با هم در فایل second.py مشاهده می‌کنیم.
در خط اول می‌نویسیم if و می‌خواهیم عدد ۰ را چک کند. اگر ۰ درست بود، در خط بعد print کند که this is true و در خط بعد می‌نویسیم else (در غیر این صورت) this is false را print کند. indent را هم قبل از دستور print قرار می‌دهیم که درست عمل کند.

کلیک راست می‌کنیم و گزینه Run Python File in Terminal را انتخاب می‌کنیم.

نوشتن this is false
نوشتن this is false

مشاهده می‌کنید که this is false را برمی‌گرداند.
چه اتفاقی افتاد؟ چرا برای عدد صفر false را نشان داد؟ همین موضوع بحث اصلی ما است. بعضی از مقادیر هستند که به صورت پیش‌فرض مقادیر Boolean را دارا هستند، با اینکه Boolean نیستند. به عنوان مثال همین عدد صفری که در اینجا گذاشتیم یا objectهای خالی یا رشته‌های خالی (type None) یا این‌که همین عدد صفری که با همدیگر بررسی کردیم.

حال در خط اول عدد ۰ را به عدد ۱ تغییر می‌دهیم. ذخیره می‌کنیم. cls را تایپ می‌کنیم که result پاک شود.

تایپ کردن cls
تایپ کردن cls

کلیک راست می‌کنیم و Run Python File in Terminal را انتخاب می‌کنیم.

This is true را در خروجی نمایش می‌دهد. عدد ۱ true است.

۱ true
۱ true

احتمالا حدس زدید این همان ۰ و ۱ خودمان است. گفتیم که اعداد کلا در دانش کامپیوتر بر مبنای دو هستند؛ ۰ به معنی خاموش است و ۱ به معنی روشن است. این نتیجه دارد به همان موضوع اشاره می‌کند.
به سراغ آیتم بعدی می‌رویم. برای مثال به جای ۱، یک رشته خالی را قرار می‌دهیم. cls را تایپ می‌کنیم. کلیک راست می‌کنیم و Run Python File in Terminal را انتخاب می‌کنیم.

کلیک راست می‌کنیم و Run Python File in Terminal را انتخاب می‌کنیم.

تایپ کردن cls
تایپ کردن cls

This is false را نشان می‌دهد. می‌گوید که این رشته false است. به چه کار می‌آید؟ چرا اینکه false برمی‌گرداند یا true برمی‌گرداند، مهم است؟ چرا می‌گوییم اهمیت دارد؟ چه کاربردی دارد؟
اکنون رشته خالی را به “lkj” تغییر می‌دهیم و مجدد اجرا می‌گیریم.

خروجی گرفتن true
خروجی گرفتن true

مشاهده می‌کنید که خروجی true شده است. آیا اهمیت دارد؟ بله. می‌توانیم از آن استفاده کنیم. به چه صورت؟ برای مثال یک متغیری تعریف می‌کنیم و نام آن را car می‌گذاریم و می‌گوییم با استفاده از input از کاربر آن را دریافت کند. و در خط ۷ یک دستور print قرار می‌دهیم و می‌نویسیم enter your favorite car
و در خط ۱۰ دستور print را می‌نویسیم و با fstring، your favorite car is {car} را می‌خواهیم چاپ کند.

خط ۱ تا ۴ را به کامنت تبدیل می‌کنیم و به این خط‌ها نیاز نداریم. در پایین دستور clear را می‌زنیم.

دستور clear
دستور clear

دستور clear هم پاک می‌کند و با دستور cls تفاوتی ندارد.
حال برنامه را اجرا می‌کنیم.

در خروجی از ما می‌خواهید favorite car را enter کنیم. (ماشین مورد علاقه‌تان چیست؟)
برای مثال می‌نویسیم benz

Enter را می‌زنیم.

favorite car را enter
favorite car را enter

مشاهده می‌کنیم که پیغام your favorite car is benz نمایش داده شد.

پرینت کردن your favorite car is benz
پرینت کردن your favorite car is benz

دوباره آن را اجرا می‌کنیم.

اما این دفعه بدون اینکه نام ماشینی را وارد کنیم، enter را می‌زنیم.

Your favorite car is

نمایش دادن Your favorite car is
نمایش دادن Your favorite car is

چرا این جمله را نمایش داد؟ ما نمی‌خواهیم این جمله را نمایش دهد. این جمله جالب نیست. برای اینکه این جمله را نمایش ندهد، باید چه کار کنیم؟ بسیار ساده است. قبل از دستور print(f”your favorite car is {car}”) یک دستور if car: را اضافه می‌کنیم.
یعنی اینکه اگر car یک رشته خالی نبود، آنگاه آن جمله را نمایش دهد. cls را تایپ می‌کنیم.

تایپ کردن cls
تایپ کردن cls

کلیک راست می‌کنیم و Run Python File in Terminal را انتخاب می‌کنیم.

چیزی وارد نمی‌کنیم و enter را می‌زنیم.

کلیک کردن enter
کلیک کردن enter

مشاهده می‌کنید که جمله‌ای در خروجی نمایش داده نشد.

نمایش ندادن خروجی
نمایش ندادن خروجی

اما اگر آن را دوباره اجرا کنیم و این بار نام bmw را وارد کنیم و enter را بزنیم، جمله your favorite car is bmw را نمایش می‌دهد.

نمایش دادن your favorite car is bmw
نمایش دادن your favorite car is bmw

برخی خدمات پرطرفدار در کارت پروژه

موسسه کارت پروژه به عنوان مجری انجام پروژه های دانشجویی، تمامی خدمات مرتبط با پایتون را به  کاربران خود ارائه می‌دهد. حال که در حال مطالعه آموزشی در مورد پایتون هستید، مخمکن است این خدمات برای شما مفید باشد:

انجام پروژه هوش مصنوعی  |  انجام پروژه ماشین لرنینگ   |   انجام پروژه شبکه عصبی

انجام پروژه داده کاوی   |   انجام پروژه پردازش تصویر   |   انجام پروژه یادگیری عمیق

انجام پروژه پایتون

پس توانستیم از آن استفاده کنیم. این قابلیت truthiness یا falsiness است.
بنابراین بسیاری از متغیرها هستند که به صورت پیش‌فرض (by default) بحث truthiness یا falsiness را دارند. مثل عدد ۱؛ مثل رشته‌هایی که خالی و empty نیستند و مقدار دارند.
در اینجا تمام این آیتم‌ها را می‌نویسیم. در خط ۱۷ یک کامنت می‌نویسیم که falsyness =>

می‌خواهیم بیان کنیم چه چیزهایی به صورت پیش‌فرض مقدار false را دارند. به عنوان مثال objectهای خالی، (empty objects)؛ در مورد objectها هنوز به صورت مفصل صحبت نکردیم. اما فقط در اینجا آن را داشته باشید که اگر خالی بود، در falsiness است. یعنی اینکه false را return می‌کند.
آیتم بعدی zero یا عدد صفر است. این هم به صورت پیش‌فرض مقدار false را برمی‌گرداند.

مورد بعدی رشته‌های خالی (empty string) است.
در نهایت نوع None را داریم.
این‌ها مواردی هستند که به صورت پیش‌فرض مقدار false را دارند. یعنی می‌توانیم در true و false از آنها استفاده کنیم و در دستورات شرطی در پایتون می‌توان از آنها استفاده کرد. مانند empty stringها، مانند car که در خط ۱۱ قرار دادیم. گفتیم return type مربوط به input چیست؟

ما هنوز در مورد functionها هم صحبت نکردیم. input یک دستوری است که برای ما یک مقدار رشته را برمی‌گرداند و ‌در اینجا هم از آن استفاده کردیم. گفتیم که اگر car ما رشته خالی نبود، آن جمله را نمایش دهد. در غیر این صورت آن جمله را نمایش ندهد.

مقالات پیشنهادی:

سایر خدمات پیشنهادی:

 

برای ثبت سفارش لطفا در تلگرام یا واتساپ یا ایتا به شماره 09104503300 پیام دهید.