با سری آموزشهای زبان برنامه نویسی پایتون خدمت شما عزیزان علاقمند به این حوزه هستیم. در این مقاله درباره دستورات شرطی در پایتون صحبت میکنیم.
گزاره های شرطی و دستور if
نرمافزار ویژوال استودیو کد را باز میکنیم. یک file جدید ایجاد میکنیم و نام آن را main.py میگذاریم.
ما یک متغیر تعریف میکنیم و عدد ۳ را به آن نسبت میدهیم. در مورد دستورات شرطی در پایتون صحبت کردیم. میخواهیم بگوییم اگر عدد ما مقدارش ۲ بود، برای ما چاپ کند که this is true
در غیر این صورت میخواهیم چاپ کند که this is false
همین را اجرا میکنیم.

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

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

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

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

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

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

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

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

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

درست است و مشکلی وجود ندارد. پس هم میتوانیم از = = استفاده کنیم و هم از 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 را انتخاب میکنیم.

مشاهده میکنید که خروجی هر سه تا خط یکی است و هیچ فرقی با همدیگر ندارند.
مقایسهای که میخواهیم انجام دهیم، بین 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 کند.

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

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

list_1 با list_2 برابر است. درست است و مقادیر آنها یکی است. برای true اول در خروجی، دو خط اول [‘a’ , ‘b’ , ‘c’] چک شده است. مقادیر یکی است. درست است. برای true دوم در خروجی هم [‘a’ , ‘b’ , ‘c’] اول و آخر چک شدند. باز هم مقادیر یکی است و هیچ تفاوتی ندارند.
حال میخواهیم از is استفاده کنیم. باز هم خط ۱۸ را copy میکنیم و در خط ۲۳ paste میکنیم.
این سری به جای = = از is استفاده میکنیم و ذخیره میکنیم. ابتدا نتیجه را نشان میدهیم و بعد در مورد آن صحبت میکنیم. در اینجا یک cls را تایپ میکنیم.
کلیک راست میکنیم و Run Python File in Terminal را انتخاب میکنیم.

مشاهده میکنیم که خروجی آخر 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 هم تایپ میکنیم.

در 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 را برمیگرداند.
چه اتفاقی افتاد؟ چرا برای عدد صفر false را نشان داد؟ همین موضوع بحث اصلی ما است. بعضی از مقادیر هستند که به صورت پیشفرض مقادیر Boolean را دارا هستند، با اینکه Boolean نیستند. به عنوان مثال همین عدد صفری که در اینجا گذاشتیم یا objectهای خالی یا رشتههای خالی (type None) یا اینکه همین عدد صفری که با همدیگر بررسی کردیم.
حال در خط اول عدد ۰ را به عدد ۱ تغییر میدهیم. ذخیره میکنیم. cls را تایپ میکنیم که result پاک شود.

کلیک راست میکنیم و Run Python File in Terminal را انتخاب میکنیم.
This is true را در خروجی نمایش میدهد. عدد ۱ true است.

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

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

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

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

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

دوباره آن را اجرا میکنیم.
اما این دفعه بدون اینکه نام ماشینی را وارد کنیم، enter را میزنیم.
Your favorite car is

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

کلیک راست میکنیم و Run Python File in Terminal را انتخاب میکنیم.
چیزی وارد نمیکنیم و enter را میزنیم.

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

اما اگر آن را دوباره اجرا کنیم و این بار نام bmw را وارد کنیم و enter را بزنیم، جمله 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 ما رشته خالی نبود، آن جمله را نمایش دهد. در غیر این صورت آن جمله را نمایش ندهد.
مقالات پیشنهادی:
- حلقه for در پایتون + نحوه استفاده و مثال کاربردی
- نحوه نصب پایتون در ویندوز 7
- نحوه کامنت کردن در پایتون (آموزش تصویری کامنت گذاری)
- ک م م در پایتون (به 4 روش مختلف)
سایر خدمات پیشنهادی:
- انجام پروژه پایتون
- انجام پروژه برق
- انجام پروژه مکانیک
- انجام پروژه کامپیوتر
- انجام پروژه برنامه نویسی
- انجام پروژه متلب
ارسال پاسخ