پایتون کلید ورود به دنیای هوش مصنوعی! (قسمت هشتم: عبارات شرطی)

سلام رفقا آموزش پایتون رو برای ورود به دنیای هوش مصنوعی شروع کردیم. اگر اولین باره با پایتون آشنا می شید به لینک زیر برید و از اول بیاین جلو. آموزش پایتون جلسه اول این قسمت که بخش هشتم آموزش پایتون هست در ارتباط با شرط هست. خب این خیلی به زبون ما ها نزدیکه می گیم اگر این بود این کارو کن و اگر اون بود اون کارو کن اگرم هیچ کدوم نبود این کارو کن. همینی که الان گفتم به زبان پایتون می شه :number = 5 if number > 2: print(&quotNumber is bigger than 2.&quot) elif number < 2: # Optional clause (you can have multiple elifs) print(&quotNumber is smaller than 2.&quot) else: # Optional clause (you can only have one else) print(&quotNumber is 2.&quot)چون 5 از 2 بزرگتره جمله اول چاپ میشه. اگر از Else if که در زبون های دیگه رایجه استفاده کنید خطا می گیره. پس یادتون باشه توی پایتون Elif هست. پس اگر جلوی if عبارت درست یا همون True بود اون شرط اجرا میشه. مثلا در مثال ما number>2 هست یعنی 5>2 یک عبارت درست True هست که دستورات داخلش اجرا میشن. نکته جالب اینه که می شه شرط یک خطی هم نوشت اگر با زبون های برنامه نویسی دیگه کار کرده باشید از این ساختار سورپرایز می شید. مثال زیر رو ببینید:n = 5 &quotHello&quot if n > 2 else &quotBye&quot # Out: 'Greater than 2'می گه Hello رو چاپ کن اگر n بزرگتر از 2 بود و اگر نبود Bye رو چاپ کن. این مثل خوندن در زبان انگلیسی هست. به جز کارای ساده که توی یک خط قراره انجام بشه از این نوع تعریف شرط استفاده نکنید چون خوانایی (فهموندن به دیگران) رو کاهش می ده. همه عبارت های زیر اگر جلوی شرط قرار بگیرن False هستن. این خیلی باعث خطا می شه . مثلا فرض کنید نوشتیم if 0 این یعنی این شرط اجرا نمیشه چون صفر نقش False داره. None False 0, or any numerical value equivalent to zero, for example 0L, 0.0, 0j Empty sequences: '', &quot&quot, (), [] Empty mappings: {} User-defined types where the __bool__ or __len__ methods return 0 or Falseبه جز اینایی که این بالا گفتم بقیه چیزا True حساب میشه. حالا بریم سر وقت عملگر های منطقی :عملگر AND :این مثل "و" خودمون هست مثلا 1و2. اگر دو طرف AND مقدارش True باشه خروجیش هم True هست. در غیر این صورت خروجیش False هست. مثال زیر رو نگاه کنید :x = True y = True z = x and y # z = True x = True y = False z = x and y # z = False x = False y = True z = x and y # z = False x = False y = False z = x and y # z = Falseمثلا بالا که واضحه چی شد جفت طرف ها درست باشه خروجی هم درسته. حالا مثال زیر رو نگاه کنید که یکم سخت تره. در این جور مثال ها اگر دو طرف شرط درست باشن طرف راست خروجی هست و اگر حتی یکیش هم نادرست باشه طرف چپ خروجیه ( اگر نفهمیدید چی شد زیاد مهم نیست به مرور که با این زبان کار کنید دستتون میاد). قسمت آخر رو دقت کنید چون طرف چپ "" هست و به معنی false هست پس خروجی خودش می شه. >>> 1 and 2 2 >>> 1 and &quotHello World&quot &quotHello World&quot >>>&quot&quot and &quotPancakes&quot &quot&quotعملگر Or :این مثل "یا" خودمون هست. خروجیش وقتی false هست که جفت طرف ها false باشه. مثال زیر رو نگاه کنید:x = True y = True z = x or y # z = True x = True y = False z = x or y # z = True x = False y = True z = x or y # z = True x = False y = False z = x or y # z = Falseمثال زیر رو نگاه کنید : >>> 1 or 2 1 >>> None or 1 1 >>> 0 or [] []اگر جفتشون درست باشه خروجی اولی می شه. ولی اگر یکیش یا جفتش نادرست باشه (مثل خط 3 و5) خروجی آخری می شه. عملگر Not :اینم دیوی کلاه قرمزی هست یعنی اگر درسته نتیجش غلط میشه اگر نادرست نتیجه درست مثال :x = True y = not x # y = False x = False y = not x # y = Trueمحاسبه از روی تنبلی مثال زیر رو نگاه کنید :>>> def print_me(): print('I am here!') >>> 0 and print_me() 0خط اول و دوم یک تابع تعریف کردیم که کارش اینه که I am here رو چاپ کنه ولی اصلا اجرا نمی شه چرا ؟!چون که پایتون می دونه که and وقتی خروجیش True میشه که جفتش True باشه حالا وقتی اولی 0 هست یعنی False پس دیگه نمیره سراغ دومی همون اولی رو میده بیرون. پس تنبلیش بی حکمت نیست. دقت کنید !مثال زیر رو نگاه کنید. >>> a = 1 >>> b = 6 >>> if a and b > 2: ... print('yes') ... else: ... print('no') yesهدفمون اینکه که بگیم اگر a و b جفتشون بزرگتر از 2 بودن yes رو بده به خروجی خب چون a مقدارش 1 هست پس نباید yes رو توی خروجی نشون بده که این کارو می کنه چرا ؟!چون پایتون اینطوری این عبارت رو می خونه :(a) and (b>2)برای اینکه درستش کنیم باید از تنبلی بپرهیزیم مثل عبارت زیر :>>> if a > 2 and b > 2: ... print('yes') ... else: ... print('no') noیه مثال دیگه از این گونه اشتباه ها :>>> a = 1 >>> if a == 3 or 4 or 6: ... print('yes') ... else: ... print('no') yesدر حالی که باید No می داد yes داد. که این جوری درست می شه :>>> if a == 3 or a == 4 or a == 6: ... print('yes') ... else: ... print('no') noیک راه راحترشم اینه که از in استفاده کنیم (سر جاش بیشتر توضیح می دم )>>> if a in (3, 4, 6): ... print('yes') ... else: ... print('no') noخسته نباشید. یک سری نکات دیگه هم این زیر به مرور اضافه می شه ولی همینایی که گفتم فعلا کفایت می کنه. اگر سوالی دارید کامنت کنید. درس بعدی در مورد حلقه ها هست: https://virgool.io/hooshteam/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%DA%A9%D9%84%DB%8C%D8%AF-%D9%88%D8%B1%D9%88%D8%AF-%D8%A8%D9%87-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-%D9%82%D8%B3%D9%85%D8%AA-%D9%86%D9%87%D9%85-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-%D8%AD%D9%84%D9%82%D9%87-%D9%87%D8%A7-jpuk2rsdw7d1