0% found this document useful (0 votes)
23 views41 pages

Jozveban - Ir Elegram - Me/jozveban T Ir/sopnuu App. S

رزطرزطرزذزطر

Uploaded by

fatanehbiusad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views41 pages

Jozveban - Ir Elegram - Me/jozveban T Ir/sopnuu App. S

رزطرزطرزذزطر

Uploaded by

fatanehbiusad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

‫نم‬

‫آیا میدانستید با عضویت رد سایت زجوه بان میتوانید هب صورت رای گان زجوات و وهن‬

‫ن‬
‫سواالت دا ش گاهی را دانلود کنید ؟؟‬

‫فقط کافیه روی لینک زری رضهب زبنید‬

‫👇👇👇👇👇👇👇👇👇👇👇👇👇👇‬

‫ورود هب سایت زجوه بان‬

‫‪Jozveban.ir‬‬
‫‪telegram.me/jozveban‬‬
‫‪sapp.ir/sopnuu‬‬
1
‫رفقا سالم!! میخوایم یه مروری روی زبان برنامه نویسی پایتون داشته باشیم و بخش های مهم اون رو بررسی کنیم‬
‫پس بدون هیچ حرف اضافه ای بریم که کار رو شروع کنیم‪ .‬کدها رو توی محیط ژوپیتر نوتبوک (‪)Jupyter Notebook‬‬
‫می نویسیم که یه محیط باحال برای برنامه نویس های پایتونه‪ .‬ژوپیتر اینقدر کار راه انداز و مفیده که خیلی ها میگن‬
‫در حد یه کیس ازدواج برای برنامه نویسای پایتونه که خب ما وارد جزییات نمیشیم‪ .‬اگر چشم تون ضعیف نباشه‪،‬‬
‫میتونید محیط ژوپیتر نوتبوک رو پایین ببینید که متشکل از تعدادی سلول هستش که توی هر سلول میتونید کدهاتون‬
‫رو بنویسید و اجرا کنید‪ .‬حاال این به چه دردی میخوره؟؟ به خیلی دردها که اینجا نمیتونم بگم اما همینو بدونید که‬
‫تست و خطایابی برنامه ها خیلی ساده تره میشه‪ .‬ژوپیتر نوتبوک ب ه همراه تعدادی نرم افزار دیگه توی یک بسته نرم‬
‫افزاری به اسم آناکوندا (‪ )Anaconda‬قرار دارند که با یه سرچ کوچولو تو اینترنت میتونید نصبش کنید و برید حالشو‬
‫ببرید‪.‬‬

‫خب دیگه شوخی بسه بریم سراغ درس‪ ،‬برای این که بخوایم داده های خودمون رو مثل عدد‪ ،‬رشته‪ ،‬متن و ‪ ...‬توی‬
‫کامپیوتر و پایتون ذخیره کنیم‪ ،‬باید اونها رو داخل متغیرها بریزیم‪ .‬خیلی از علما میگن که متغیرها مثل ظرف هایی‬
‫هستند که داده ها رو تو خودشون ذخیره میکنن‪ ،‬ما هم این تعریف رو قبول میکنیم (من جزو علما نیستم!!)‪ .‬مثال‬
‫توی سلول اول به ترتیب داده های ‪ 4‬و ‪ 5.3‬و "‪ "A‬و "‪ "Hi Friends‬داخل متغیرهای ‪ a‬و ‪ b‬و ‪ c‬و ‪ d‬قرار گرفتند که‬
‫مثال اگر متغیر ‪ a‬رو توی یه سلول جداگانه بنویسیم و ‪ Shift + Enter‬یا ‪ Ctrl + Enter‬بزنیم‪ ،‬میتونیم مقدارشو یعنی‬
‫عدد ‪ 4‬رو ببینیم که همین هم برای ما هم چاپ کرده‪.‬‬

‫به کمک تابع )(‪ type‬میتونیم بفهمیم که نوع یک متغیر چیه مثال )‪ type(a‬شده ‪ int‬پس میفهمیم که متغیر ‪ a‬که‬
‫عدد ‪ 4‬داخلش ذخیره شده یک عدد صحیح است یا مثال متغیر ‪ b‬که مقدارش ‪ 5.3‬است‪ ،‬یک عدد اعشاری است اما‬
‫متغیرهای ‪ c‬و ‪ d‬داخلشون رشته ذخیره شده پس تو خروجی نوشته ‪ str‬یعنی اینکه از نوع رشته هستند‪ .‬توی سلول آخر‬
‫هم تمام متغیرها رو توی یه سلول نوشتم و با کاما از هم جدا کردم تا یکجا خروجی شون رو ببینیم‪.‬‬

‫‪2‬‬
‫رفقا به کمک دستور ‪ print‬هم میتونیم مقادیر رو چاپ کنیم که نمونه های مختلف شو توی کدهای زیر میتونید‬
‫ببینید‪.‬‬

‫به کمک "اف استرینگ ها" که توی صفحه بعد کدشو میبینید‪ ،‬میتونیم ترکیبی از دستورات و رشته ها رو داشته باشیم‪.‬‬
‫به طور خالصه هرچی داخل آکوالد ( }{ ) باشه‪ ،‬محاسبه و مقدارش حساب میشه اما هرچی که بیرون از آکوالد باشد‪،‬‬
‫عینا همون چاپ میشه‪.‬‬

‫‪3‬‬
‫یه وقت هایی الزمه که مقادیر موجود داخل متغیرها رو باهم مقایسه کنیم که این کار به کمک عملگرهای مقایسه‬
‫ای امکان پذیره اما دقت کن که خروجی این عملگر ها ‪( True‬درست) یا ‪( False‬غلط) است‪ .‬توی خط اول سلول زیر‬
‫مشخصه که عدد ‪ 2‬با عدد ‪ 5‬برابر نیست پس خروجی شده ‪ False‬یا غلط‪( .‬پس میفهمیم که ‪ 2‬با ‪ 5‬برابر نیست)‪ .‬خط‬
‫بعدی هم خب ‪ 2‬مخالف ‪ 5‬هستش پس خروجی شده ‪ . True‬و خط های بعدی هم واضحه دیگه‪ ،‬هر خطی که درست و‬
‫صحیح بود‪ ،‬خروجی میشه ‪ True‬و هر خط یا دستوری که اشتباه بود‪ ،‬خروجی میشه ‪False.‬‬

‫== ‪ :‬برابر بودن‬ ‫==‬

‫=! ‪ :‬مخالف بودن‬ ‫=!‬

‫> ‪ :‬بزگتر بودن‬ ‫>‬

‫=> ‪ :‬بزرگتر مساوی‬ ‫=>‬

‫< ‪ :‬کوچکتر بودن‬ ‫<‬

‫=< ‪ :‬کوچکتر مساوی‬ ‫=<‬

‫به کمک عملگر ‪ and‬می توان روی داده ها شرط گذاشت که خروجی این عملگر ‪ True‬یا ‪ False‬است‪ .‬به صورت خالصه‬
‫زمانی خروجی عملگر ‪ and‬منجر به ‪ True‬میشه که همه شرط ها درست باشند یعنی اگر صدتا شرط داشتیم و ‪ 99‬تاشون‬
‫درست بود اما یکی غلط یا ‪ False‬بود‪ ،‬خروجی ‪ and‬میشه ‪ .False‬خب چه وقت خروجی میشه ‪ True‬؟ االن گفتم دیگه‪،‬‬
‫زمانی که همه شرط ها ‪ True‬باشند یعنی هر صدتا درست باشند‪.‬‬

‫‪4‬‬
‫توی سلول اول از کد پایین دو تا شرط داریم که هر دو درست یا ‪ True‬هستند‪ ،‬میگی نه خب برسی کنیم‪ .‬شرط اول که‬
‫(‪ )2 == 2‬است خب درسته و شرط دوم هم که (‪ )4 < 5‬هستش اونم درسته و چون هر دو شرط درسته‪ ،‬پس خروجی ‪and‬‬
‫هم ‪ True‬یا درسته‪ .‬توی سلول پایین اش سه تا شرط داریم که دو شرط اول ‪ True‬و آخری ‪ False‬هستش پس طبق‬
‫تعریفی که برای ‪ and‬داشتیم‪ ،‬خروجی میشه ‪ .False‬خب گلم تا اینجا رو متوجه شدی؟ آفرین بزن بریم عملگر بعدی‪.‬‬

‫عملگر ‪ or‬هم یه جورایی تو مایه های عملگر ‪ and‬هست و خروجی اش ‪ True‬و ‪ False‬هستش‪ .‬ببینید بچه ها‪ ،‬خروجی‬
‫عملگر ‪ or‬زمانی میشه ‪ True‬که حداقل یکی از شرط ها ‪ True‬یا درست باشه‪ .‬پس اگر صد تا شرط داشته باشیم و ‪99‬‬
‫تا اون ها ‪ False‬باشن اما یکی ‪ True‬باشه‪ ،‬خروجی میشه ‪ .True‬توی سلول اول صفحه بعد‪ ،‬این عملگر رو مستقیم‬
‫روی ‪ True‬و ‪ False‬ها اعمال کردم ولی سلول بعدی روی دو شرط (‪ )2 == 3‬و )‪ (5 > 2‬اعمال شده که چون یکی شون‬
‫‪ True‬هست پس خروجی میشه ‪ .True‬حاال خودت سلول های دیگه رو هم ببین‪.‬‬

‫‪5‬‬
‫یه عملگر کوچولو مونده به اسم عملگر ‪ not‬که کاری که انجام میده اینه که شرط های ‪ True‬رو به ‪ False‬و شرط های‬
‫‪ False‬رو به ‪ True‬تبدیل میکنه‪ .‬توی سلول های زیر میتونید باهاش آشنا بشید اما زیاد طولش ندید بیاید مبحث‬
‫بعدی‪.‬‬

‫‪6‬‬
‫خب بریم سراغ رشته ها یا ‪ String‬که تو پایتون مبحث مهمیه‪ .‬یک رشته شامل تعدادی کلمه است که هر کلمه هم‬
‫خودش شامل تعدادی کاراکتر یا حروف الفباست‪ .‬حاال این رشته رو میتونیم داخل دابل کوتیشن ‪ " " ‬بزاریم تا‬
‫پایتون هم بفهمه که این یک رشته یا ‪ String‬هست‪ .‬مثال "‪ "Hi googolia chetorid‬یک رشته است که داخل دابل‬
‫کوتیشن ( " " ) قرار دادیم‪ .‬این رشته از تعدادی کاراکتر تشکیل شده و هر کارکتر هم دارای اندیسی است که اندیس‬
‫ها از صفر شروع میشن‪ .‬در سلول اول یک رشته داخل متغیر ‪ str1‬قرار داده شده که به به کمک تابع )(‪ len‬می تونیم‬
‫طول رشته رو بدست بیاریم‪ .‬در سلول های بعدی از براکت ( ] [ ) استفاده کردیم جهت انتخاب بخشی از رشته‪ .‬مثال‬
‫اونجایی که نوشته ]‪ str1[0 : 13‬یعنی کاراکترهای ‪ 0‬تا ‪ 25( 22‬کاراکتر یا حرف الفبا) انتخاب شده یعنی بخش " ‪Data‬‬
‫‪ "Analysis‬که در خروجی هم همین نوشته شده‪ .‬یا با دستور ] ‪ str2[32 :‬می تونیم از کاراکتری که توی اندیس ‪ 52‬تا‬
‫آخر رشته هستش رو انتخاب کنیم‪.‬‬

‫حاال که با رشته ها آشنا شدیم‪ ،‬بهتره که بدونید کلی تابع باحال و کاربردی برای کار باهاشون وجود داره که مهم ترین‬
‫هاشون رو توی کدهای صفحه بعد میتونی ببینی‪ .‬قبلش میخوام یه نکته خیلی خفن بهت بگم که هم خیر آخرت توشه‬
‫و هم خیر این دنیا‪ .‬اوه دمت گرم داش علی حاال اون نکته چیه؟ فعال زیاد خودمونی نشو بیا صفحه بعد بهت میگم‪.‬‬

‫‪7‬‬
‫اگر شما یه رشته ایجاد کردی‪ ،‬یه ساختمان داده ساختی یا کال از هر الیبرری و ابزای استفاده کردی‪ ،‬برای اینکه بدونی چه‬
‫توابعی برای کار باهاش وجود داره‪ ،‬کافیه که اسمشو بنویسی بعد نقطه و در آخر نیز کلید ‪ tab‬کیبورد رو بزنی تا لیست‬
‫کل توابعی که براش وجود داره رو ببینی‪ .‬مثال اگر بعد از همین رشته ‪ str1‬نقطه و کلید ‪ tab‬بزنی به همه توابعی که‬
‫برای کار با رشته ها در پایتون وجود داره دسترسی داری و میتونی تک تک اونا رو تست کنی‪.‬‬

‫به کمک تابع )(‪ islower‬می تونی بفهمی که آیا همه کاراکترهای یک رشته با حروف کوچک نوشته شده اند یا نه‪ .‬در‬
‫این مثال جواب خیر است و خروجی شده ‪ .False‬به کمک تابع )(‪ isupper‬هم میتونی چک کنی که آیا همه کاراکترهای‬
‫یک رشته با حروف بزر گ نوشته شده اند یا نه که باز هم برای این مثال جواب ‪ False‬است‪ .‬خیلی راحت هم به کمک‬
‫دو تابع )(‪ lower‬و )(‪ upper‬می تونیم همه کاراکترهای یک رشته رو به حروف کوچیک و بزرگ تبدیل کنیم‪.‬‬

‫به کمک تابع )(‪ find‬که تو صفحه بعد آوردم‪ ،‬میتونی م یک کلمه رو تو متن جستجو کنیم که ببینیم وجود داره یا نه‪.‬‬
‫اینجا من کلمه "‪ "python‬رو جستجو کردم که توی خرجی عدد ‪ 29‬رو بهم داده‪ ،‬حاال این ‪ 29‬یعنی چی؟ یعنی این که‬
‫کلمه "‪ "python‬داخل متن هست و اندیس شروعش هم اندیس شماره ‪ 29‬هستش‪ .‬با تابع )(‪ replace‬می تونیم‬
‫یه مقداری رو توی متن با مقداری که مدنظر خودمون هست جایگزین کنیم که اینجا من بهش گفتم هرجا " ‪data‬‬
‫‪ "analysis‬دیدی اونو با کلمه "‪ "python‬جایگزین کن که خروجی هم همینو به ما داده‪.‬‬

‫‪8‬‬
‫یکی از اون توابع خیلی باحال که عاشقشم (امیدوارم ب ه دوس ‪ ...‬م بر نخوره‪ ،‬عهه من که اصال ‪ ...‬ندارم‪ ).‬تابع )(‪split‬‬
‫هستش حاال بگذریم‪ .‬به کمک این تابع می تونیم رشته ها رو تیکه تیکه کنیم‪ .‬به صورت پیش فرض روی "اسپیس"‬
‫یا همون خط فاصله تنظیم شده پس رشته رو بر اساس خط فاصله میشکنه‪ .‬اگه گفتی خروجی چی میشه؟ آفرین!‬
‫خروجی میشه جداسازی کلمات یک متن‪ .‬پس یکی از راه های ساده برای بدست آورن کلمات یک متن‪ ،‬استفاده از‬
‫تابع )(‪ split‬هستش‪ .‬یا مثال توی سلول های پاینی اومدم رشته رو بر اساس کلمه "‪ "python‬در واقع )(‪ split‬کردم‬
‫که اینجوری زیر رشته قبل پایتون تو یه بخش و زیر رشته بعد پایتون تو بخش دیگه قرار میگیره‪.‬‬

‫‪9‬‬
‫خیلی وقت ها برای حل یک مسئله الزم است که شرط هایی را در برنامه لحاظ کنیم و برای تک تک شرط ها نیز‬
‫راهکارهایی ارائه بدیم‪ .‬به کمک دستور ‪ if / else‬می توان این شرط ها را لحاظ کرد که نمونه ای ازش رو توی سلول‬
‫های پا یین میبینید‪ .‬من میخوام یک شرط بزارم که اگر مقدارهای دو متغییر باهم برابر بودند‪ ،‬تو خروجی "‪ "Yes‬چاپ‬
‫بشه و اگر این شرط برقرار نبود یعنی دو عدد با هم برابر نبودند‪ ،‬توی خروجی "‪ "No‬چاپ بشه‪ .‬اگر شرط جلوی دستور ‪if‬‬
‫که همان ‪ a == b‬یعنی برابر بودن ‪ a , b‬برقرار باشد‪ ،‬برنامه وارد بدنه میشه و دستور )”‪ print(“Yes‬چاپ میشه اما در‬
‫اینجا مقدارهای ‪ a , b‬برابر نیستند در نتیجه برنامه وارد بدنه ‪ else‬میشه و دستور )”‪ print(“No‬چاپ میشه که در این‬
‫مثال هم این اتفاق افتاده‪.‬‬

‫در مثال باال فقط شرط برابری ‪ a , b‬را بررسی کردیم که اگر شرط درست بود وارد بدنه ‪ if‬و اگر شرط نادرست بود وارد بدنه‬
‫‪ else‬می شد‪ .‬اما خیی اوقات تعداد شرط های بیشتری در نظر میگیریم و برای برقرار بودن هر شرط‪ ،‬یک راهکار یا کدی‬
‫قرار میدم‪ .‬در مثال زیر حاصل جمع دو متغییر ‪ a , b‬را به عنوان شرط در نظر گرفتیم که اگر این حاصل جمع کوچکتر‬
‫مساوی صفر بود‪ ،‬وارد بدنه ‪ if‬و در خروجی "‪ "a+b <= 0‬چاپ می شود‪ .‬اگر این حاصل جمع دو عدد بین صفر و ده بود‪،‬‬
‫تو خروجی "‪ "0 <= a+b <= 10‬چاپ می شود‪ .‬اگر این حاصل جمع بین بازه ده و بیست بود‪ ،‬تو خروجی " ‪10 <= a+b‬‬
‫‪ "<=20‬چاپ می شود و اگر هیچ کدوم از این شرط ها برقرا نبود‪ ،‬در نهایت برنامه وارد بدنه ‪ else‬میشه و " > ‪a+b‬‬
‫‪ "20‬چاپ میشه‪.‬‬

‫‪10‬‬
‫تو خیلی از مواقع الزم داریم که کاری را به دفعات انجام بدیم یا شمارش و گام هایی را در برنامه لحاظ کنیم‪ .‬این کار‬
‫به کمک دستور ‪ for‬امکان پذیره که البته برای اینکه این گام ها یا شمارش ها را لحاظ کنیم‪ ،‬از تابعی به اسم )(‪range‬‬
‫استفاده میکنیم‪ .‬تو مثال پایین و در سلول اول‪ ،‬داخل تابع )(‪ range‬عدد ‪ 3‬قرار دادم و این بدین معنیه که اعداد ‪0‬‬
‫تا ‪ 4‬تولید و سپس حلقه ‪ for‬به این تعداد یعنی ‪ 3‬بار میشماره‪ .‬خب حاال نقش اون متغییر ‪ i‬چیه؟ آفرین اون ‪ i‬به‬
‫تک تک این اعداد اشاره میکنه خب حاال چجوری‪ ،‬بزن بریم‪ .‬ابتدا ‪ i‬برابر عدد ‪ 0‬سپس برنامه میاد داخل بدنه ‪ for‬و‬
‫خروجی متغییر ‪ i‬که همون صفر است چاپ میشه‪ .‬دفعه بعد ‪ i‬به عدد ‪ 2‬اشاره میکنه و برابر عدد ‪ 2‬میشه‪ ،‬دوباره‬
‫برنامه میاد داخل حلقه ‪ for‬و مقدار ‪ i‬که عدد ‪ 1‬هستش چاپ میشه و این کار تا آخر یعنی عدد ‪ 4‬ادامه دارد‪ .‬حاال دیگه‬
‫خودت میتونی هر کاری داخل بدنه ‪ for‬انجام بدی که توی سلول آخر اومدیم مقدار ‪ i‬ها رو در عدد ‪ 20‬ضرب کردیم‪.‬‬

‫حاال اگر خواستیم گام های دوتا دوتا یا بیشتر برداریم چیکار کنیم؟؟ باشه عزیزیم صبر کن بهت میگم‪ .‬تابع )(‪range‬‬
‫سه مقدار میگیره‪ ( :‬گام حرکت‪ ،‬پایان‪ ،‬شروع(‪ range‬که توی مثال زیر شروع برابر ‪ ،0‬پایان ‪ 20‬و گام حرکت برابر ‪2‬‬
‫است‪ .‬در نتیجه اعداد ‪ 0, 2, 4, 6, 8‬تولید و ‪ i‬تک تک و به ترتیب به همه این اعداد اشاره می کند و در خروجی چاپ‬
‫شده ‪ .‬توی سلول پایین تر‪ ،‬حاصل جمع اعداد زوج یک رقمی محاسبه و در متغییر ‪ SUM‬قرار داده شده‪ .‬حاال چجوری؟‬
‫خب واضحه دیگه‪ ،‬اعداد زوج یکی رقمی ‪ 0, 2, 4, 6, 8‬است که اینم توی تابع )‪ range(0, 10, 2‬تولید و سپس حاصل‬
‫جمع داخل ‪ SUM‬ذخیره شده‪ .‬فهمیدی؟ آره بابا‪.‬‬

‫‪11‬‬
‫توی مثالی که پایین میبینید‪ ،‬ترکیبی از ‪ for‬و ‪ if‬رو ساختیم که اعداد یک تا ده رو شمارش کردیم سپس با دستور ‪if‬‬
‫چک میکنیم که عدد فرد هستش یا زوج و تو خروجی میتونید ببنید‪.‬‬

‫خب گلهای من تا اینجا که با ‪ for‬آشنا شدید‪ ،‬بهتره که یه مثال دیگه ازش بزنیم تا خوب جا بیفته‪ .‬توی این مثال‬
‫اومدیم با ترکیب دو حلقه ‪ ،for‬جدول ضرب ‪ 0‬تا ‪ 9‬رو ساختیم‪.‬‬

‫‪12‬‬
‫خب تا اینجا با دستورات ‪ if / else‬و حلقه ‪ for‬آشنا شدیم‪ ،‬حاال بریم سراغ دستور کنترلی بعدی به نام ‪ .while‬به کمک‬
‫این دستور کنترلی می توانیم تا زمانی ک ه شرایطی برقرار بود‪ ،‬یک کار یا مجموعه ای از دستورات را انجام دهیم‪ .‬در این‬
‫جا شرط گذاشته ایم که متغیر ‪ x‬که مقدارش عدد ‪ 3‬است‪ ،‬تا زمانی که بزرگتر از ‪ 0‬باشد برنامه وارد بدنه ‪ while‬شود‪،‬‬
‫مقدار ‪ x‬را چاپ کند و در نهایت نیز یک واحد از ‪ x‬کم شود‪ .‬چون هر بار یک واحد از ‪ x‬کم می شود‪ ،‬در نتجه زمانی که‬
‫مقدار ‪ x‬برابر ‪ -1‬شود‪ ،‬شرط ‪ while‬برقرار نیست و برنامه از حلقه خارج می شود‪.‬‬

‫‪13‬‬
‫یه مثال دیگه از ‪ while‬ببینیم که با دستور شرطی ‪ if / else‬ترکیب شده است‪ .‬بزارید اینجا یه نکته مهم دیگه بهتون‬
‫بگم که باز خیر دنیا و آخرت توش باشه!! آه آن چیست جناب نظری زاده؟؟ درسته گفتم خودمونی نشو اما در این حد‬
‫هم الزم نیست‪ .‬خب نکته اینه‪ ،‬برای این که بخوایم یک کاری را بی نهایت بار انجام بدیم و تا آخر دنیا ادامه داشته‬
‫باشه‪ ،‬از )‪ while(True‬استفاده می کنیم‪ .‬حاال خب کی این حلقه به اتمام میرسه و از حلقه ‪ while‬خارج می شویم؟‬
‫برای این که از حلقه خارج بشیم‪ ،‬از دستور ‪ break‬استفاده می کنیم‪ .‬در مثال زیر به کمک تابع )(‪ input‬از کاربر مقداری‬
‫رو دریافت می کنیم‪ ،‬اگر اون مقدار مخالف ‪ 0‬بود‪ ،‬عبارت "مقدار ‪ x‬مخالف صفر است" چاپ می شود و بی نهایت بار‬
‫این کار تکرار می شود‪ .‬اما زمانی که عدد ‪ 0‬وارد شود‪ ،‬شرط ‪ if‬برقرار نمی شود و برنامه وارد بدنه ‪ else‬می شود‪ ،‬در آن‬
‫جا عبارت "مقدار ‪ x‬صفر است" است چاپ می شود و بعدش که ‪ break‬نوشتم باعث می شود که برنامه به اتمام‬
‫برسد‪.‬‬

‫‪14‬‬
‫خب بچه های عزیز بریم سراغ مبحث بعدی که خیلی هم مهمه و اسمش تابع یا ‪ function‬هست‪ .‬اگه بخوام خیلی‬
‫ساده تعریف تابع رو بگم اینجوریه ‪ :‬تابع یک ساختار‪ ،‬یک قالب یا چارچوبی است که به کمک آن می توانیم مسائل‬
‫خودمون رو در قالب این ساختار مدل کنیم‪ .‬دقت داشته باش که یک تابع از سه مولفه اصلی (ورودی‪ ،‬پردازش و خروجی)‬
‫تشکیل شده است و هنگام تعریف یک تابع‪ ،‬باید این سه بخش رو مشخص کرد‪ .‬ما توی ریاضیات هم تابع رو داشتیم‬
‫که اونجا به صورت )‪ y = f(x‬می نوشتیم که در اینجا ‪ y‬خروجی‪ f ،‬تابع یا همان عملیات پردازشی و ‪ x‬هم ورودی هستش‪.‬‬
‫همون طور که تو سلول اول میبینید‪ ،‬برای ایجاد یک تابع ابتدا باید از کلمه کلیدی ‪ def‬استفاده کنیم‪ ،‬بعد اسم تابع‬
‫که در اینجا اسم تابع ما ‪ fun_name‬است‪ .‬خب حاال اون سه بخش اصلی یعنی ورودی‪ ،‬پردازش و خروجی کدوم ها‬
‫هستند؟ ورودی تابع‪ Inputs ،‬است‪ ،‬خروجی ‪ Outputs‬است که حتما باید با کلمه کلیدی ‪ return‬بازگشت داده شود‬
‫و عملیات پردازشی یا همان الگوریتم هم در بدنه تابع نوشته می شود‪ .‬خب حاال با توجه به ورودی و خروجی می توانیم‬
‫چهار حالت رو برای توابع در نظر بگیرم‪ -2 .‬ورودی و خروجی نداشته باشد‪ -2 ،‬ورودی و خروجی داشته باشد‪ -5 ،‬ورودی‬
‫نداشته باشد و خروجی داشته باشد‪-4 ،‬خروجی داشته باشد و ورودی نداشته باشد‪ .‬این دیگه چیه سید!!! تو که گفتی‬
‫ورودی و خرجی حتما باید باشه اما تو این چهار موارد‪ ،‬تابع میتونه ورودی یا خروجی نگیره‪ .‬اوال من سید نیستم‪ ،‬دوما‬
‫آره درسته اما اون تو ریاضیات بود ولی توی برنامه نویسی ما میتونیم توابع رو بر اساس این چهار دسته ای که گفتم‬
‫ایجاد کنیم‪ .‬نکته آخر و تکمیلی هم بگم اینکه تو مرحله اول باید تابع رو بسازیم و تو مرحله دوم میتونم از تابعی که‬
‫ایجاد کردیم بینهایت بار در برنامه استفاده کنیم‪ .‬مثال یک تابع برای محاسبه مساحت مستطیل میسازیم سپس هر‬
‫تعداد بار که بخواهیم می تونیم ازش استفاده کنیم‪.‬‬

‫‪15‬‬
‫داخل سلول زیر تابعی به اسم ‪ F1‬ایجاد کردیم که تنها کاری که انجام میده فقط یک پیغام چاپ میکنه‪ .‬خب این تابع‬
‫ورودی ندارد چرا؟ چون خط اول داخل پرانتز چیزی نوشته نشده و همچنین خروجی هم ندارد چرا؟ چون اصال ‪ return‬ای‬
‫وجود ندارد‪ .‬پس ‪ F1‬یگ تابع بدون ورودی و خروجی است‪ .‬تا اینجا مرحله اول انجام شد یعنی تابع رو ساختیم‪.‬‬

‫حاال باید از تابع استفاده کنیم دیگه نه؟ یعنی همون مرحله دوم که برای این کار کافیه فقط اسم تابع رو بدون کلمه‬
‫کلیدی ‪ def‬بنویسیم که خروجی "‪ "Hello Python‬حاصل می شود‪.‬‬

‫داخل سلول اول تابعی به اسم ‪ F2‬ایجاد کردیم حاال بهم بگید که وضعیت ورودی و خروجی های این تابع به چه صورته؟‬
‫آفرین درسته این تابع یک ورودی به نام ‪ x‬دارد اما خروجی ندارد‪ .‬تنها کاری که انجام میده اینه که ورودی که براش‬
‫فرستاده میشه رو تو خروجی چاپ میکنه همین‪ .‬این حاال مرحله اوله که تابع رو ساختیم‪ .‬سلول بعدی همون مرحله‬
‫دومه که ما از تابع استفاده میکنیم‪ .‬چون تابع ورودی دارد در نتیجه اینجا باید یک مقدار براش بفرستیم که در اینجا‬
‫عدد ‪ 00‬به عنوان ورودی فرستاده شده‪.‬‬

‫در زیر تابعی به اسم ‪ F3‬ایجاد شده که دارای ورودی است چرا؟ چون مقدار ‪ x‬داخل پرانتز است و همان ورودی تابع‬
‫است‪ .‬تابع خروجی ندارد چرا؟ چون دستور ‪ return‬ای وجود ندارد‪ .‬حاال رسالت این تابع چیه؟ هیچی فقط باید عددی که‬
‫به عنوان ورودی میگیره رو چک کنه که اگر کوچکتر از ‪ 0‬بود چاپ کنه "منفی" و اگر بزرگتر از صفر بود چاپ کنه "مثبت"‪.‬‬
‫تو سلول بعدی هم از تابع استفاده شده است و عدد ‪ 5‬به عنوان ورودی براش در نظر گرفته شده است‪.‬‬

‫‪16‬‬
‫تابع زیر ورودی ندارد اما خروجی دارد چون کلمه کلیدی ‪ return‬وجود دارد‪ .‬این تابع تا همیشه مقدار ‪ 8 * 2‬یعنی ‪21‬‬
‫رو بازگشت می دهد‪ .‬حاال که تابع رو ساختیم مرحله دوم باید ازش استفاده کنیم‪ ،‬چون تابع خروجی دارد در نتیجه می‬
‫تونیم مقدارشو توی یه متغییر ذخیره کنیم که در سلول زیر داخل متغیر ‪ x‬ذخیره کردیم‪.‬‬

‫توی سلول زیر اومدیم روی تابع )(‪ F4‬شرط گذاشتیم حاال این یعنی چی؟ ببین عزیزم‪ ،‬باال تابع )(‪ F4‬رو ساختیم اینجا‬
‫توی شرط ‪ if‬گذاشتم و ازش استفاده میکنیم‪ ،‬خروجی اش میشه چی؟ خب میشه ‪ 21‬دیگه حاال مثل این میمونه که‬
‫داخل شرط داریم چک میکنیم که آیا ‪ 21‬با ‪ 21‬برابر است‪ .‬خب بله برابره و خروجی ‪ True‬حاصل میشه‪.‬‬

‫تابع ‪ F5‬هم ورودی داره هم خروجی‪ ،‬ورودی ‪ speed‬و خروجی ‪ x‬است که با ‪ return‬بازگشت داده شده‪ .‬نحوه کارش‬
‫ساده است حاال تو مرحله بعد از این تابع استفاده میکنیم و عدد ‪ 240‬رو براش میفرستیم‪ .‬توی سلول بعد عدد ‪220‬‬
‫رو براش میفرستیم با این تفاوت که چون تابع خرجی داره‪ ،‬مقدار خروجی اش رو میتونیم داخل متغیری مثل ‪ x‬ذخیره‬
‫کنیم‪.‬‬

‫‪17‬‬
‫تابع ‪ F6‬نیز دقیقا مثل تابع ‪ F5‬هستش فقط با این تفاوت که توی بدنه ‪ if‬ها‪ ،‬مقدارها با دستور ‪ return‬بازکشت‬
‫داده شده است اما توی تابع ‪ f5‬مقادیر داخل ‪ x‬ذخیره شده و در نهایت یک بار بازگشت داده شده است‪.‬‬

‫توی کد زیر به کمک تابع ‪ input‬از ورودی عددی دریافت میکنیم و سپس داخل تابع ‪ int‬قرار میدهیم تا مقدار ورودی‬
‫به عدد صحیح تبدیل شود و در نهایت داخل متغییر ‪ S‬قرار می گیرد‪ .‬حاال ‪ S‬به عنوان ورودی برای تابع ‪ F6‬ارسال شده‬
‫است و این تابع نیز یک خرجی میدهد حال بر اساس خروجی این تابع‪ ،‬دستور ‪ if‬اعمال می شود‪ .‬در مثال زیر عدد ‪30‬‬
‫به عنوان ورودی به تابع ‪ F6‬داده شده است که خروجی نهایی پیغام "رانندگی شما آهسته و با احتیاط است" چاپ‬
‫شده است‪.‬‬

‫توابع می تونند چندین مقدار به عنوان ورودی بگیرند مثل تابع ‪ F7‬که دو مقدار ‪ a , b‬رو میگیره و برابر بودن شون رو‬
‫چک میکنه که دیگه واضحه و نیازی به توضیح نیست‪.‬‬

‫‪18‬‬
‫خب خب خب بریم سراغ بخش بعدی که هم خیلی جذابه و هم خیلی کاربردی‪ ،‬میخوایم در مورد "ساختمان داده ها" یا‬
‫"داده ساختارها" صحبت کنیم‪ .‬ببینید دوستان زمانی که ما تعداد زیادی داده‪ ،‬عدد‪ ،‬متن و ‪ ...‬داشته باشیم دیگه‬
‫نمیتونیم داخل یه متغییر ذخیره شون کنیم بلکه باید داخل یک ساختار یا قالب استاندارد ذخیره کنیم که بتونیم روی‬
‫این داده ها پردازش های مناسبی انجام بدیم‪ .‬در واقع یک ساختمان داده یک قالب یا ساختاری است که می تواند‬
‫تعداد زیادی داده را در خودش ذخیره کند‪ .‬حاال یکی از این ساختمان داده ها‪ ،‬ساختمان داده "‪ "set‬یا "مجموعه" می‬
‫باشد که تعاریفش همان تعاریف مجموعه ها در ریاضیات است‪ .‬دوستان در ساختمان داده ‪ ،set‬عناصر تکراری قرار‬
‫نمیگیرند مثال اگر هزار تا عدد ‪ 5‬داشته باشیم‪ ،‬ققط یک بار در مجموعه نوشته می شود‪ .‬و نکته دوم اینکه ترتیب در‬
‫مجموعه ها بی معنی است در نتیجه ترتیب قرار گیری داده ها همواره ممکنه تغییر کنه‪ .‬به دو صورت می توان یک‬
‫داده ساختار ‪ set‬ایجاد کرد‪ -2 :‬قرار دادن داده ها داخل براکت ( }{ ) ‪ -2‬استفاده از تابع ‪ set‬و فرستادن داده ها برای‬
‫آن‪ .‬در مثال پایین ‪ S1‬یک مجموعه یا ‪ set‬است که تایپ اش هم داره میگه اره حاجی این یه مجموعه است‪.‬‬

‫حاال هر یک از ساختمان داده ها دارای تعدادی توابع هستند که به کمک اون توابع میتونیم عملیات های پردازشی‬
‫مختلفی روی داده ها داشته باشیم که در زیر تعدای از مهم ترین توابع مجموعه ها را با هم خواهیم دید‪( .‬دقت کن‬
‫همه توابع با ‪ S1. + tab‬در دسترسن‪ .‬بنویس ‪ ،S1‬بعد نقطه و بعد دکمه ‪ tab‬کیبورد رو بزن)‪ .‬با تابع ‪ add‬میتونیم‬
‫مقداری رو به مجموعه اضافه کنیم و همچنین با تابع ‪ remove‬میتونیم داده ای درون مجموعه رو حذف کنیم که در‬
‫این جا برای تابع ‪ remove‬عدد ‪ 4‬فرستاده شده در نتیجه عدد ‪ 4‬از مجموعه حذف میشه‪.‬‬

‫‪19‬‬
‫به کمک تابع ‪ union‬می تونیم اجتماع و به کمک تابع ‪ intersection‬می تونیم اشتراک دو مجموعه رو بگیریم‪ .‬اگه‬
‫خیلی ساده بخوام بگم‪ ،‬اجتماع دو مجموعه یعنی همه داده های دو مجموعه روی هم ریخته میشه اما اشتراک دو‬
‫مجموعه یعنی فقط عضوهایی که بین هر دو مشترک هستند انتخاب میشه‪ .‬مثال سلول آخر که اشتراک گرفتیم‪ ،‬حاصل‬
‫شده اعداد ‪ 2‬و ‪ 1‬حاال چرا ؟ خب چون اعدد ‪ 2‬و ‪ ،1‬هم توی ‪ S1‬هستند هم توی ‪.S2‬‬

‫با تابع ‪ difference‬می تونیم تفاضل دو مجموعه رو بگیریم‪ S1.difference(S2) .‬یعنی داده هایی که تو ‪ S1‬هستند‬
‫اما تو ‪ S2‬نیستند یا مشابه شو میتونیم بنویسیم ‪ .S1 – S2 :‬و همچنین )‪ S2.difference(S1‬یعنی داده هایی که تو‬
‫‪ S2‬هستند اما تو ‪ S1‬نیستند‪ .‬باز مشابه شو می تونیم ‪ S2 – S1‬بنویسیم‪.‬‬

‫با تابع ‪ issubset‬می توان بررسی کرد که آیا یک مجموعه‪ ،‬زیر مجموعه دیگری است یا نه‪.‬‬

‫‪20‬‬
‫خب دوستان شما میتونید به کمک حلقه ها‪ ،‬مجموعه ها رو پیماشین کنید حاال چجوری ؟ خب ساده است دیگه‪ ،‬تو‬
‫مثال های پایین‪ ،‬متغییر ‪ i‬که داخل ‪ for‬هستش‪ ،‬به تک تک داده های داخل مجموعه ‪ S1‬اشاره میکنه و اینجوری‬
‫میش ه تک تک داده ها رو پردازش کرد و هر بالیی سرشون آورد‪ .‬توی اون سلول آخر هم با تابع )(‪ ،clear‬مجموعه ‪S1‬‬
‫رو پاک کردم‪.‬‬

‫خب بزن بریم سراغ ساختمان داده بعدی یعنی لیست (‪ )list‬که اینجا دیگه ترتیب قرار گیری داده ها مهمه و میتونیم‬
‫هر چقدر دلمون خواست داده تکرای قرار بدیم‪ .‬لیست ها رو به دو صورت میشه ایجاد کرد‪ -2 :‬قرار دادن داده ها داخل‬
‫براکت ( ] [ ) ‪ -2‬قرار دادن داده ها داخل تابع ‪.list‬‬

‫حاال که فهمیدیم چجوری میشه لیست ها رو ایجاد کرد‪ ،‬میتونیم بخشی از داده های داخلش رو بکشیم بیرون و یقه‬
‫شون رو بگیریم!! توی کدهای صفحه بعد این کار رو به کمک براکت ( ] [ ) و عملگر دو نقطه ( ‪ ) :‬انجام دادیم‪ .‬قبل دو‬
‫نقطه اندیس شروع و بعد دو نقطه اندیس پایان رو مینویسیم و اینجوری داده های بین این بازه استخراج میشن‪.‬‬

‫‪21‬‬
‫با تابع )(‪ append‬میشه هر نوع داده ای رو به لیست اضافه کرد‪ .‬به سلول دوم نگاه کنید‪ ،‬من خواستم اعداد ‪ 20‬و‬
‫‪ 50‬رو با تابع ‪ append‬به لیست اضافه کنم یعنی عدد ‪ 20‬در اندیس ‪ 0‬و عدد ‪ 50‬در اندیس ‪ 9‬اما این اتفاق نیفتاده‬
‫و لیست ]‪ [20, 30‬در اندیس ‪ 0‬قرار گرفته‪ .‬حاال راه حل چیه ؟ ساده است‪ ،‬استفاده از تابع ‪ extend‬که سول پایین‬
‫مثال شو زدم‪ .‬به کمک این تابع میتونیم هر تعداد داده که خواستیم در اندیس های جداگانه داخل لیست قرار بدیم‪.‬‬

‫تابع )(‪ : copy‬کپی گرفتن از یک لیست‪.‬‬

‫تابع )(‪ : count‬شمارش تعداد داده های داخل لیست‪.‬‬

‫تابع )(‪ : index‬پیدا کردن اندیس داده ای خاص‪ .‬مثال اینجا اندیس عدد ‪ ،3‬صفر هستش‪.‬‬

‫تابع )(‪ : insert‬قرار دادن مقداری در اندیسی خاص‪ .‬در اینجا عدد ‪ 200‬در اندیس ‪ 2‬قرار داده شده است‪.‬‬

‫‪22‬‬
‫با تابع )(‪ pop‬می تونیم داده ای رو از لیست پاپ یا حذف کنیم‪ .‬اگر به صورت پیش فرض هیج عددی برای این تابع‬
‫نفرستیم‪ ،‬آخرین مقدار لیست حذف می شود‪ .‬اما می تونیم اندیس داده ای که میخوایم حذف بشه رو براش بفرستیم‬
‫طبق مثال زیر که بهش گفتم عددی که تو اندیس ‪ 3‬هسش رو حذف کن‪ ،‬یعنی عدد ‪.9‬‬

‫به کمک تابع )(‪ remove‬هم می تونیم داده ای رو از لیست حذف کنیم فقط با این تفاوت که این بار به جای اندیس‪،‬‬
‫خود عددی که میخوایم از لیست حذف بشه رو برای این تابع میفرستیم‪ .‬وایسا ببینم اینجا که برای این تابع عدد ‪ 3‬رو‬
‫فرستادی‪ ،‬پس چرا ‪ 3‬ها رو حذف نکرده ؟ سرکاریم ؟؟ نه عزیزم سرکار چرا‪ .‬به اولین ‪ 3‬که برسه حذف میکنه با بقیه‬
‫شون کاری نداره‪.‬‬

‫‪23‬‬
‫تابع )(‪ : revers‬با این تابع‪ ،‬داده ها از آخر به اول نوشته میشن‪.‬‬

‫تابع )(‪ : sort‬مرتب شدن داده ها از کوچک به بزرگ‪.‬‬

‫تابع )(‪ : clear‬خالی کردن یک لیست‪.‬‬

‫تو سلول زیر اومدم اعداد ‪ 0‬تا ‪ 9‬رو به کمک تابع ‪ range‬تولید کردم‪ ،‬حلقه ‪ for‬روشون زدم و با تابع ‪ append‬توی‬
‫یک لیست ذخیره کردم‪ .‬میخوام بگم که یه جور دیگه هم میشه این کار رو کرد یعنی کال ‪ for‬رو تو یه خط نوشت مثل‬
‫سلول آخر‪ .‬پس کافیه ‪ for‬رو توی براکت یا همون لیست بنویسد‪ ،‬مقداری که قراره تو لیست باشه یعنی همون ‪ i‬رو‬
‫قبل ‪ for‬بنویسید تا اینجوری خیلی ساده بتونید لیست ها رو مقدار دهی کنید‪.‬‬

‫‪24‬‬
‫تو سلول زیر روی حلقه ‪ for‬شرط ‪ if‬رو هم اعمال کردم تا اعداد بزرگتر مساوی ‪ 3‬رو ذخیره کنم‪ .‬روش دوم رو توی سلول‬
‫آخر نوشتم یعنی کال توی یه خط‪ .‬پس دقت کن وقتی یه ‪ for‬و یه ‪ if‬داشتیم‪ ،‬اول باید ‪ for‬رو بنویسم بعد ‪ if‬رو جلوش‬
‫حاال اون مقداری که میخوایم تو لیست ذخیره یشه رو سمت چپ مینویسم که اینجا مقدار ما همین ‪ i‬هستش‪.‬‬

‫تو مثال پایین‪ ،‬از ‪ for‬و ‪ if‬و ‪ else‬استفاده شده که روش دوم نوشتن این قطعه کد رو سلول آخر آوردم براتون که‬
‫حالشو ببرید‪ .‬زمانی که مثل االن سه مولفه داشتیم (یعنی ‪ for‬و ‪ if‬و ‪ ،)else‬سمت راست ‪ for‬و سپس میایم سمت‬
‫چپ ‪ if / else‬می نویسم دقیقا مثل قطعه کد زیر‪.‬‬

‫‪25‬‬
‫بزار حاال که دور همیم ساختمان داده بعدی یعنی دیکشنری ها رو هم بررسی کنیم که خیلی مهم هستند‪ .‬تو دیکشنری‬
‫ها داده ها رو تو ‪ value‬ها ذخیره و برای دستیابی به اون ها ‪ key‬ها رو ایجاد میکنیم‪ .‬پس از ‪ key‬ها جهت دستیابی به‬
‫‪ value‬ها یا همون داده های خودمون استفاده میکنیم‪ .‬اینجا هم میشه به دو صورت دیکشنری ها رو ایجاد کرد ‪-2 :‬‬
‫استفاده از آکوال ( } { )‪ -2 ،‬استفاده از تابع ‪ dict‬که روش اول ساده تر و مرسوم تره‪ .‬توی مثال زیر داده های ما ‪:‬‬
‫’‪ 20 , 24, 52, ‘Ali’, ‘Mohammad‬هستند که ‪ key‬ها یا کلیدهاشون به ترتیب ‪ 2‬و ‪ 4‬و ‪ 3‬و ‪ 0‬و ‪ 9‬هستند‪ .‬مثال برای‬
‫دستیابی به داده ’‪ ‘Ali‬باید کلیدش یعنی ‪ 0‬رو صدا بزنم‪.‬‬

‫تو کد زیر برای دستیابی به مقدار ‪ ،24‬به دو صورت کلیدش رو صدا زدم یعنی استفاده از براکت و استفاده از تابع ‪get.‬‬

‫ما می تونیم داده ساختارهای دیگه ای مثل لیست ها رو توی دیکشنری ها ذخیره کنیم مثل مثال پایین که کامال‬
‫واضحه‪ .‬کلیدها تو این دیکشنری‪ ‘Name’ ،‬و ’‪ ‘Course‬و ’‪ ‘Score‬و ‪Value‬ها هم به ترتیب لیست های ’‪ ‘Name‬و‬
‫’‪ ‘Course‬و ’‪ ‘Score‬هستند‪.‬‬

‫‪26‬‬
‫اکثر اوقات دیکشنری ها به همین سادگی و گوگولی نیستند‪ ،‬بلکه کمی پیچیده تر هستند مثل دیکشنری زیر‪ .‬تنها نکته‬
‫ای که اینجا وجود دارد‪ ،‬در مورد کلید ‪ students‬هستش که مقدارها یا ‪value‬هاش دوباره یک دیکشنری دیگه است !!‬
‫جل الخالق یعنی چی؟؟ ساده ست‪ ،‬ببینید دیکشنری ها میتونند خیلی خیلی منعطف باشند‪ .‬اینجا ‪value‬های کلید‬
‫‪ students‬یک دکشنری دیگه است که کلیدهاش‪ Name ،‬و ‪ Course‬هستند‪.‬‬

‫ما گفتیم که داده های درون یک دیکشنری به صورت کلید مقدار ذخیره میشن حاال چجوری میتونیم به این کلید مقدار‬
‫ها دسترسی داشته باشیم؟ به کمک توابع )(‪ keys‬و )(‪ values‬می تونیم به ترتیب کلیدها و مقدارهای یک دیکشنری‬
‫رو استخراج کنیم‪ .‬یه تابع باحال دیگه به اسم )(‪ items‬وجود داره که خروجی این تابع‪ ،‬هم کلید ها و هم مقدارهای‬

‫‪27‬‬
‫یک دیکشنری هستش !! من اومدم رو این تابع ‪ for‬زدم و چون دو خروجی داره‪ ،‬توی ‪ for‬دو متغیر ‪ key‬و ‪ value‬در‬
‫نظر گرفتم تا به سادگی بتونم یکجا به کلید مقدارهای دیکشنری ‪ d3‬دسترسی داشته باشم‪.‬‬

‫توی سلول های زیر‪ ،‬کلیدهای ’‪ ‘Name‬و ’‪ ‘Skill‬رو تو براکت نوشتم تا بتونم به مقدارها یا ‪value‬هاش دسترسی داشته‬
‫باشم‪.‬‬

‫حاال مثال اگر بخوام به ’‪ ‘Fatemeh‬خانم دسترسی داشته باشم چجویاس!؟ کافیه که مرحله به مرحله فیلتر کنم و برم‬
‫داخل‪ .‬یعنی اول کلید ‪ students‬رو انتخاب کنم تا به ‪value‬هاش برسم‪ ،‬بعد برم سراغ کلید ‪ Name‬ها و در اخر هم‬
‫اندیس ’‪ ‘Fatemeh‬خانم که ‪ 2‬هست رو بنویسم‪ .‬ما میتونیم داده ها درون یک دیکشنری رو تغییر بدیم‪ ،‬مثل مثال‬
‫پایین که به جای ‪ data analysis‬مقدار ‪ ML‬رو قرار دادم‪.‬‬

‫‪28‬‬
‫به کمک عملگر ‪ in‬می تونیم مقداری رو توی کلید مقدارها جستجو کنیم‪ .‬سلول اول گفتم که آیا ‪ Ali‬داخل ‪ d3‬هست؟‬
‫خروجی ‪ False‬برگردونده اما خب چرا مگه ما ‪ Ali‬رو تو دیکشنری نداریم ؟ آره داریم اما اینجا به صورت پیش فرض‬
‫جستجو روی کلیدها انجام میشه نه روی ‪ value‬یا مقدارها‪ .‬برای این که به پایتون بفهمونیم که میخوایم توی ‪value‬‬
‫ها برامون جستجو کنه‪ ،‬کافیه که بنویسم )(‪.d3.values‬‬

‫‪29‬‬
‫داده ساختار آخر هم بگیم که اسمش تاپل یا ‪ tuple‬هست البته سر نامش بین ملت دعواست‪ ،‬یه عده میگن تاپل‪،‬‬
‫یکی دیکه میگه تیوپل و یه سری افراد دیگه هم میگن توپل‪ .‬خالصه که بین علما دعواست اما شما بگید تاپل شاید‬
‫بهتر باشه‪ .‬تاپل ها زیاد منعطف نیستند و نمی تونیم داده های داخل شون رو تغییر بدیم یا حتی مقداری بهشون‬
‫اضافه کنیم‪ .‬وقتی یه تاپل رو ایجاد میکنیم‪ ،‬تا آخر عمر همونجوریه نه مقدار میگیره و نه مقدارهاش تغییر میکنه !!‬
‫ما رو مسخره کردی حاال این بی خاصیت به چه دردی میخوره ؟ مودب باش بهت میگم‪ .‬توی خیلی از مواقع که داده‬
‫های ما اصال تغییر نمی کنند از این ساختمان داده اسفاده می کنیم‪ .‬مواردی مثل کد ملی‪ ،‬موقعیت های جغرافیایی‬
‫و ‪ ...‬که همیشه ثابت هستند‪ .‬تاپل ها رو هم میشه به دو صورت ایجاد کرد ‪ -2 :‬استفاده از پرانتز () ‪ -2‬استفاده از‬
‫تابع ‪ .tuple‬جالبه بدونید که برای تاپل ها فقط دو تابع وجود داره که پایین توضیح دادم‪.‬‬

‫تابع )( ‪ : count‬تعداد تکرار یه داده رو برای ما مشخص میکنه‪ .‬مثال توی تاپل ‪ ،T2‬دو تا عدد ‪ 2‬وجود داره‪.‬‬

‫تابع )( ‪ : index‬میشه با این تابع‪ ،‬اندیس داده ای رو بدست آورد‪ .‬مثال داده ’‪ ‘S‬تو اندیس ‪ 2‬هستش‪.‬‬

‫به کمک براکت ( ] [ ) و مشخص کردن اندیس ها‪ ،‬میشه داده ها رو استخراج کرد‪.‬‬

‫‪30‬‬
‫تو این بخش میخوایم درباره توابع داخلی پایتون یا ‪ Built-in Functions‬صحبت کنیم که خیلی کار راه انداز هستند‪.‬‬
‫جریان از این قراره که پایتون اومده تعدادی تابع که هر کدوم کار خاصی رو انجام میدن برای ما ساخته که بتونیم از‬
‫اون ها تو بخش های مختلفی استفاده کنیم‪ .‬این توابع انعطاف پذیری باالیی دارن و میتونیم هر نوع داده ای با هر‬
‫نوع ساختاری که دارد رو به عنوان ورودی براش بفرستیم‪ .‬تعدای از مهم ترین توابع داخلی پایتون رو اینجا براتون آوردم‬
‫که میتونید ببینید‪.‬‬

‫خروجی سلول باال در زیر نشان داده شده‪:‬‬

‫‪31‬‬
‫تابع )(‪ : min‬کوچک ترین مقدار رو بر میگردونه‪.‬‬

‫تابع )(‪ : max‬بزرگ ترین مقدار رو بر میگردونه‪.‬‬

‫تا بع )(‪ : sum‬حاصل جمع کل داده ها رو حساب میکنه‪.‬‬

‫تابع )(‪ : abs‬عملیات قدر مطلق که تو ریاضیات هست رو انجام میده‪.‬‬

‫تابع )(‪ : len‬طول داده هایی که داخل اون داده ساختار هستش رو حساب میکنه‪.‬‬

‫تابع )(‪ : pow‬عملیات توان رو انجام میده‪( .‬عدد اول رو به توان عدد دوم میرسونه)‬

‫تابع )(‪ : round‬عدد رو گرد میکنه‪.‬‬

‫تابع )(‪ : int‬عدد رو تبدیل به عدد صحیح یا ‪ Int‬میکنه‪.‬‬

‫تابع )(‪ : float‬عدد رو تبدیل به عدد اعشاری یا ‪ float‬میکنه‪.‬‬

‫تابع )(‪ : type‬نوع داده رو مشخص میکنه‪.‬‬

‫تابع )(‪ : range‬از عدد ‪ 4‬تا ‪ ،20‬با گام دو تا دو تا عدد تولید میکنه‪.‬‬

‫تابع )(‪ : reversed‬داده ها رو از آخر به اول مینویسه‪.‬‬

‫‪32‬‬
‫تابع )(‪ : sorted‬داده ها رو مرتب میکنه‪.‬‬

‫تابع )(‪ : del‬داده ساختار رو حذف میکنه‪.‬‬

‫بیاید در مورد دو تابع مهم به نام های عمه ‪ all‬و خاله ‪ any‬صحبت کنیم که خروجی این دوتا‪ ،‬درست و غلط یا ‪ True‬و‬
‫‪ False‬هستش‪ .‬عمه ‪ all‬میگه زمانی خروجی من میشه ‪ True‬که همه شرط هایی که برام میفرستی‪ True ،‬باشه‪ .‬اگر‬
‫‪ 999‬تا شرط ‪ True‬وجود داشت اما یکی ‪ False‬بود‪ ،‬کار خراب میشه و خروجی عمه ‪ all‬میشه ‪( .False‬یعنی رفتار ‪all‬‬
‫سختگیرانه است‪ ،‬دقیقا مثل عمه ها !!!)‪.‬‬

‫حاال مثال عددی هم بزنیم‪ ،‬توی سلول زیر روی لیست ‪ L3‬حلقه ‪ for‬زدم و اونایی که بزرگتر از ‪ 20‬هستند میشه ‪ True‬و‬
‫بقیه ‪ .False‬در نتیجه لیستی از ‪ True‬و ‪ False‬ها تولید میشه و من این لیست رو به عنوان ورودی برای تابع ‪all‬‬
‫فرستادم که خروجی ‪ all‬شده ‪ ، False‬حاال چرا ؟؟ ساده ست من خواستم ببینم آیا همه داده هایی که توی لیست ‪L3‬‬
‫هستش‪ ،‬بزرگتر مساوی ‪ 20‬هستند یا نه ؟ خب برای این کار اول ‪ for‬میزنم و به کمک ‪ number >= 10‬این ‪ True‬و‬
‫‪ False‬ها رو مشخص میکنم‪ ،‬حاال مرحله بعد باید از تابع ‪ all‬استفاده کنم چرا ‪ all‬؟ چون دارم میگم "همه اعداد" پس‬
‫باید یاد عمه ‪ all‬بیفتم که سخت گیره‪ .‬خروجی نهایی شده ‪ .False‬بنده خدا راست هم میگه‪ ،‬همه اعداد داخل ‪ L3‬بزرگتر‬
‫مساوی ‪ 20‬نیستند‪.‬‬

‫‪33‬‬
‫من میتونستم مثال باال رو با تغییر ‪ number <=10‬در یک خط و به صورت زیر بنویسم که میبینیم خروحی ‪ True‬شده‪.‬‬

‫آخرین مثال از عمه ‪ all‬رو ببینیم که بررسی کردم همه اعدادی که بین ‪ 0‬تا ‪ 9‬هستند آیا باقی مانده شون بر ‪ 2‬میشه‬
‫صفر یعنی همه شون زوج هستند؟ خب این درست نیست و جواب شده ‪.False‬‬

‫بریم سراغ تابع بعدی یعنی خاله ‪ any‬که خیلی مهربونه‪ .‬خاله ‪ any‬میگه اگر فقط یه دونه از شرط ها ‪ True‬باشه‪،‬‬
‫خروجی منم میشه ‪ .True‬یعنی اگر هزار تا شرط داشته باشیم ‪ 999‬تا ‪ False‬باشه اما فقط یکی شون ‪ True‬باشه‪،‬‬
‫خروجی میشه ‪( .True‬دقیقا مثل خاله ها که مهربونن)‬

‫‪34‬‬
‫خب بریم ببینیم که مثال عدد به چه صورته‪ ،‬تو سلول اول روی لیست ‪ L4‬حلقه ‪ for‬زدم و بررسی کردم که کدوم ها‬
‫بزرگتر مساوی ‪ 20‬هستند که تعدادی ‪ True‬و ‪ False‬برای من تولید میشه که من دیگه چاپ شون نکردم و سریع‬
‫فرستادمشون برای خاله ‪ .any‬خب چون توی داده های ‪ L4‬حداقل یه دونه عدد پیدا میشه که بزرگتر مساوی ‪ 20‬باشه‪،‬‬
‫در نتیجه خروجی شده ‪( .True‬یعنی حداقل یا ال اقل یه دونه عدد توی ‪ L4‬وجود داره که بزرگتر مساوی ‪ 20‬باشه)‬

‫تو سلول دوم بررسی کردم که آیا حداقل یا ال اقل یه دونه عدد تو ‪ L4‬هست که بزرگتر مساوی ‪ 30‬باشه‪ ،‬خب واضحه‬
‫که نیست پس خروجی شده ‪.False‬‬

‫سلول آخر هم بررسی کردم که آیا حداقل یا ال اقل یه دونه عدد بین بازه ‪ 0‬تا ‪ 9‬وجود داره که زوج باشه؟ خب واضحه‬
‫که وجود داره و خروجی هم شده ‪.True‬‬

‫خب عمه و خاله بازی و اینا بسه بریم سراغ مبحث بعدی یعنی تابع )(‪ zip‬که مهمه‪ .‬بزارید خیلی ساده بهتون بگم‪ ،‬به‬
‫کمک این تابع میتونیم داده ها رو جفت جفت یا هر چندتا مدنظرمون بود رو کنار هم بزاریم‪ .‬من اینجا دو لیست ‪L1‬‬
‫و ‪ L2‬دارم که برای تابع ‪ zip‬اونا رو فرستادم حاال چه اتفاقی میفته ؟ داده اول از ‪ L1‬یعنی ‪ 3‬با داده اول از ‪ L2‬یعنی‬
‫صفر کنار هم قرار میگیرند‪ ،‬داده دوم از ‪ L1‬یعنی ‪ 9‬با داده دوم از ‪ L2‬یعنی ‪ 7‬کنار هم قرار میگیرند و این روال ادامه‬
‫پیدا میکنه‪ .‬حاال اون تابع ‪ list‬که قبل تابع ‪ zip‬نوشتم چی میگه ؟؟ هیچی نمیگه بنده خدا فقط خروجی رو دوباره به‬
‫لیست تدیل میکنه که نوشتنش مهم و باید بنویسیم‪.‬‬

‫‪35‬‬
‫حاال برعس این داستان هم می تونیم داشته باشیم‪ ،‬یعنی یه داده ای ‪ zip‬باشه و بخوایم از حالت ‪ zip‬خارجش کنیم‬
‫که این کار خیلی ساده به کمک همان تابع ‪ zip‬و البته کاراکتر "*" امکان پذیره‪.‬‬

‫بیاید یه کم درمورد ریاضیات و توابع مهم اش صحبت کنیم‪ .‬برای این کار الیبرری های زیادی وجود داره که یکی از‬
‫معروف ترین های اون‪ ،‬الیبرری یا کتابخونه ‪ math‬هستش‪ .‬حاال این الیبرری یا کتابخونه چیه؟ ببینید دوستان ما برای‬
‫انجام هر کار سخت و پیچیده ای‪ ،‬الزم نیست که از صفر خودمون کد بزنیم‪ ،‬فقط کافیه که از الیبرری هایی که برای انجام‬
‫کار ما وجود د اره استفاده کنیم‪ .‬خوشبختانه حضرت عشق یعنی پایتون‪ ،‬بیشترین تعداد کتابخونه بین زبان های برنامه‬
‫نویسی رو داره و برای انجام هر کاری‪ ،‬کتابخونه یا الیبرری براش وجود داره‪ .‬پس نکته خیلی خیلی خیلی مهم‪ ،،‬هر کاری‬
‫خواستید انجام بدید اول تو گوگل سرچ کنید ببینید که چه ک تابخونه هایی براش وجود داره و از اونا استفاده کنید‪.‬‬
‫استفاده از کتابخونه ها توی پایتون هم خیلی خیلی ساده ست فقط کافیه طبق دستور زیر عمل کنیم‪ :‬ا‬

‫اسم کتابخونه ‪Import‬‬ ‫‪ Import math‬‬

‫‪36‬‬
‫تابع‬

‫‪37‬‬
‫تابع )(‪ : sin‬محاسبه سینوس‪.‬‬

‫تابع )(‪ : cos‬محاسبه کسینوس‪.‬‬

‫تابع )(‪ : tan‬محاسبه تانژانت‪.‬‬

‫تابع ‪ : e‬عدد ‪ e‬در ریاضیات‪.‬‬

‫تابع )(‪ : sqrt‬محاسبه جذر‪.‬‬

‫تابع )(‪ : fabs‬قدر مطلق‪.‬‬

‫تابع )(‪ : log10‬محاسبه لگاریم در مبنای ‪.20‬‬

‫تابع )(‪ : log2‬محاسبه لگاریتم در مبنای ‪.2‬‬

‫تابع ‪ : pi‬عدد پی در ریاضیات‪.‬‬

‫تابع )(‪ : pow‬محاسبه توان‪.‬‬

‫تابع )(‪ : factorial‬محاسبه فاکتوریل‪.‬‬

‫تابع )(‪ : ceil‬گرد کردن به سمت باال‪.‬‬

‫خب میرسیم به آخرین بخش و میخوایم توابع المبدا (‪ )lambda‬رو توضیح بدیم که خیلی خیلی مهم هستن و تو زمینه‬
‫های مختلفی مخصوصا پردازش زبان طبیعی‪ ،‬تحلیل داده‪ ،‬کار با کتابخونه ‪ pandas‬و ‪ ...‬ازش استفاده میشه‪ .‬دوستان‬
‫المبدا یک تابع بدون نام است که با کلمه کلید ‪ lambda‬تعریف میشه و حتما حتما باید توی یک خط کد اونو پیاده‬
‫سازی کنیم‪ .‬قالب کلی این تابع به صورت زیر است ‪:‬‬

‫عملیات پردازشی ‪ :‬ورودی ها ‪ = lambda‬خروجی‬

‫توی سلول زیر من اومدم عملیات ساده ‪ a‬به توان ‪ 2‬رو در قالب تابع معمولی که اسمش ‪ F1‬است و تابع ‪lambda‬‬
‫که خروجی اش ‪ F2‬است پیاده سازی کردم تا تفاوت ها و شباهت هاشو ببینید‪ .‬با قالبی که باالتر از المبدا گفتم‪ ،‬فکر‬
‫کنم همه چیز واضح باشه نه ؟ اما خب تا اینجا تابع رو ایجاد کردیم حاال چجوری اونو فراخوانی کنیم و ازش استفاده‬

‫‪38‬‬
‫کنیم مگه نگفتیم این تابع بدون نام هست ؟ درسته اما اینجا ‪ F2‬هم خروجی ماست و هم به عنوان نام این تابع‬
‫ازش استفاده میکنیم که تو سلول بعدی برای ‪ F2‬عدد ‪ 20‬رو فرستادیم و خروجی مناسب رو تولید کرده‪.‬‬

‫تو مثال پایین یه دیکشنری ایجاد کردم که اسامی و نمرات پنج دانشجو رو داخلش ذخیره کردم‪ .‬میخوام با المبدا‬
‫میانگین نمرات این کالس رو بدست بیارم پس یه ورودی به اسم ‪ x‬تعریف میکنم که این ورودی میخوام ‪ value‬های‬
‫داخل دیکشنری باشه پس با تابع ‪ sum‬حاصل جمع همه ‪ value‬ها رو میگیرم و تقسیم بر تعداد دانشجوها یعنی‬
‫همون )‪ len(D1‬می کنم‪ .‬پس تا اینجا من تابع المبدا رو ساختم و خروجی میره تو ‪ .Result‬حاال میتونم از همین‬
‫‪ Result‬استفاده کنم و به عنوان ورودی‪ ،‬دیکشنری ‪ D1‬رو بفرستم‪.‬‬

‫یکی دو مثال دیگه باهم بررسی کنیم‪ .‬تو مثال اول داخل سلول زیر‪ ،‬اومدم زوج بودن رو در قالب المبدا پیاده سازی‬
‫کردم‪ .‬مثال دوم اومدم اعداد ‪ 0‬تا ‪ 9‬رو با استفاده از )(‪ range‬تولید و حلقه ‪ for‬رو روشون اعمال کردم‪ .‬حاال تک تک‬
‫اعدادی که توسط ‪ for‬پیمایش میشه و اسمش ‪ x‬هست رو به ‪ lambda‬میدم و ‪ lambda‬هم توان ‪ 2‬شون رو حساب‬
‫میکنه‪ .‬به همین سادگی و خوشمزگی‪.‬‬

‫‪39‬‬
https://www.linkedin.com/in/ali-nazarizadeh/

: ‫این دوره جامع رو توی لینک زیر میتونید ببینید‬

https://bigdataworld.ir/product/pandas_numpy_matplotlib/

: ‫آموزش جامع پایتون هم خواستید اینجا هست‬

https://bigdataworld.ir/product/python-programming-
machine-learning-base/

40

You might also like