بنام خدا
بهنام صباغی هستم در خدمتتون هستم با جلسه پنجم اموزش مقدماتی پایتون
توی این جلسه در مورد if میگم
ایف در ازی برقرار بودن یه شرط برای ما یه کاری انجام میده و اگر بخوایم میتونیم در ازای شرط های دیگه کار های دیگه بکنیم بذارید گیجتون نکنم و طریقه استفادش رو توضیح بدم من اول یک ورودی از کاربر میگیرم و بعد اگر کمتر از 10 بود میگم کمتر از 10 هست و اگر بیشتر بود میگم بیشتره


MyVar =int(input('Pleas Enter a number :"))
if MyVar <10:
   print("It's less than 10")
یه نکته لازم به ذکر همون طور که دیدید توی پرینت برای رشته بر خلاف همیشه که از سینگل کوتیشن ( ' ) استفاده میکردم از دابل کوتیشن استفاده کردم ( " ) چون که توی جمله ای انگلیسیم نیاز داشتم از سینگل کوتیشن استفاده کنم و حواستون باشه نمیتونید یه طرف رشته رو سینگ کوتیشن بذارید یک طرف رو دابل کوتیشن خب بگذریم این قطعه کد الان از من عدد رو میگیره و اگر کمتر از 10 باشه بهم میگه عدد کمت از 10 هست خب حالا اگر بخوام وقتی عدد بیشتر از 10 هست هم برام یه پیغام چاپ کنه باید از دستور elif استفاده کنم یه جورایی مخلوط else و if هستش به صورت زیر کد بالا رو تصحیح میکنم
MyVar =int(input('Pleas Enter a number :"))
if MyVar <10:
   print("It's less than 10")
elif  MyVar >10 :
    print("It's not less than 10")
به همین سادگی خب حالا اگر بخوام وقتی مساوی 10 هست هم برام یه عبارت چاپ کنه باید از دستور else استفاده کنم  بازم کد رو اصلاح میکنم ببینید
MyVar =int(input('Pleas Enter a number :"))
if MyVar <10:
   print("It's less than 10")
elif MyVar >10:
    print("It's more than 10")
else :
    print("It's 10")
خب دوتا تفاوت بین else و  elif رو بگم براتون اولیش این که elif شرط داره دقیقا مثل if ولی else شرط نداره دومیش این که else اخرین دستور توی ساختار شرطی if هستش ولی elif میتونه اخری باشه یا نباشه خب اینم از if تموم شد
حالا میخوام تابع رو بگم تابع با کلمه کلیدی def تعریف میشه و یک اسم داره و یک لیست ارگومان (فارسیش میشه ورودی ) و یک بدنه که همونطور که گفتم بدنه ی تابع در پایتون با دندانه(فاصله ی افقی از اول تابع ) مشخص میشه بذارید یه تابع ساده رو اینجا تعریف کنم اول یدونه تابع بدون ورودی تعریف میکنم که کم کم پیش بریم
def MyFun( ):
   print('how are you ?')
ببینید اگر این تابع رو بنویسد چه توی شل چه توی فایل بنویسید و اجراش کنید هیچ اتفاقی نمیافته و هیچ چیزی چاپ نمیشه حالا چرا


چون توابع رو مینویسیم که هروقت خواستیم استفاده کنیم و هر چند بار که خواستیم استفاده کنیم پس حالا اگر بخواید تابعتون اجرا بشه باید کد زیر رو بنویسید من کل کد رو مینویسم که راحت باشید برای کپی پیست (*-*)
def MyFun( ):
   print('how are you ?')

MyFun()
یعنی در واقع من با نوشتن نام اون تابع اون رو فراخونی کردم و با این کار تابع من اجرا میشه حالا مثلا میتونم توی یه حلقه تابعم رو فراخونی کنم تا به ازای هر بار اجرای حلقه تابعم فراخونی بشه و کد هایی که توشه اجرا بشه خب حالا اگر بخوام به تابعم ورودی بدم چطوریه؟ ببینید
def MyFun(name ):
   print('how are you {} ?'.format(name))

MyFun('behnam' )
یادتونه بهتون گفتم فعلا چیزهای مهم در مورد انواع داده ها رو میگم بعدا در مورد توابعی که لازم بشه حرف میزنم ؟ حالا وقتشه یکیشون رو بهتون معرفی کنم تابع فرمت که در بلا میبینید استفاده شده یه تابع برای استرینگ هست در واقع این تابع الان مقدار اون name رو که دادیم بهش جایگزینه اکولاد باز و بسته میکنه پیشنهاد میکنم خودتون اجرا کنید خروجیش رو ببینید و یه نکته دیگه که هم بگم تا یادم نرفته شما میتونید هر چند تا که بخواید ورودی بفرستید به تابعتون مثلا من توی کد زیر 3 تا خروجی میفرستم بری تابعم
def MyFun( sex , name , family = ' sabaghi ' ):
   print('how are you {} , {} , {}?'.format(sex ,name,family))

MyFun('mr' ,'behnam' )
خب چند تا نکته در مورد کد بالا بگم اولیش این که sex یعنی جنیست فکر بد نکنید دومیش این که همونطور که میبینید توی تعریف تابع من سه تا ورودی دادم ولی توی فراخوانی تابع من دوتا استرینگ فرستادم ولی اگر با دقت نگاه کنید میبینید که من جلوی ورودی اخرم یه مساوی دارم و بهش مقدار دادم به این مقدار میگند مقدار پیشفرض معنیش اینه که اگر من مقدار سوم رو بفرستم اون مقداری که فرستادم استفاده میشه ولی اگر نفرستم هم با همون مقدار یشفرضش استفاده میشه پیشنهاد میکنم یه بار با دوتا ورودی تست کنیدش یک بار با سه تا ورودی و در ادامه میبینید که تابع فرمتم 3 تا ورودی گرفته و جایگزین سه تا اکولاد باز و بسته ی داخل استرینگم میکنه یعنی هر چند تا بخواید میتونید بفرستید براش و حالا بذارید یکم بیشتر در مورد مقادیر پیشفرض بگم
ببینید مقادیری که شما میفرستید به ترتیب از چپ به راست توی متغیر ها ذخیره میشه و وقتی ورودی هایی که فرستادید تموم بشه اگر ارگومانی مونده باشه که برایش مقدار نفرستاده باشید چک میکنه که مقدار پیشفرض داره یا نه اگر داشته باشه که استفاده میکنه اما اگر نداشته باشه بهتون ارور میده حالا شاید جایی لازم باشه ترتیب رو رعایت نکنیم مثلا برای ورودی اولم مقدار نفرستم تا از مقدار پیشفرضش استفاده بشه ولی بخوام برای ورودی بعدیم مقدار بفرستم اینم راه داره شما میتونید با اسم مقدار بفرستید کد زیر رو ببینید
def MyFun( sex = 'mr' , name='behnam' , family = ' sabaghi ' ):
   print('how are you {} , {} , {}?'.format(sex ,name,family))

MyFun('mr' ,family = ' sabaghi ' )
این یکی رو توضیح نمیدم چون خیلی واضحه خودتون اجراش کنید میفهمید دیگه

ه مبحث دیگه بگم و برای امشب کافیه بحث خروجی هاست تابع میتونه مثل توابع بالا خروجی نداشته باشه یا مثل توابع پایین خروجی داشته باشه
def inputFun():
   name=input('please enter your name :')
   return name
print(inputFun())

همونطور که میبینید من ایندفعه تابع رو پرینت کردم حالا چرا این کارو کردم ؟
دلیلش اینه که دفعه های قبل توی تابع مقدار رو چاپ میکردیم و نیازی نبود بیرون تابع مقدار چاپ کنیم ولی اینجا داریم مقدار رو بر میگردونیم و اگر بخوایم مقدار رو ببینیم باید چاپش کنیم و شاید دلمون نخواد چاپش کنیم مثلا بخوای یه جا ذخیرش کینم و بعدا استفادش کنیم کد زیر رو ببینید
def inputFun():
   name=input('please enter your name :')
   return name
username = inputFun()
print(username)

میبینید که اول ذخیره کردم بعد چاپش کیدم و میتونستم چاپ نکنم و توی محاسباتم ازش استفاده کنم به هر حال
و اینم بگم که میشه بیشتر از یک مقدار رو برگردوند به مثال زیر نگاه کنید
def inputFun():
   name=input('please enter your name :')
   family=input('please enter your family :')
   return name , family
username = inputFun()
print(username)
همون طور که میبینید برامون تاپل بر میگردونه یعنی اون دوتا خروجی رو درون یه تاپل بهمون بر میگردونه
خب فکر کنم برای امشب کافیه تمرین کنید تمرین این درس اینه که یه برنامه بنویسید که با یک تابع مشخصات فرد رو بگیره و برگردونه (باید خروجی تابع رو ذخیره کنید ) و یک تابع که مشخصات گرفته شده رو پرینت کنه برام بفرستید هفته ی قبل کسی نفرستاد ها برای این هفته که گذشت جایزه نداریم چون کسی نفرستاد ولی حتما هفته ی بعد بفرستید تا بفهمم کسی داره اموزش ها رو دنبال میکنه یا نه ممنونم !