You are on page 1of 47

‫بسم اهلل الرحمن الرحیم‬

‫آموزش ‪python‬‬

‫لینک کانال تلگرام‪:‬‬

‫‪https://t.me/DIgSILENT_Python‬‬

‫وب سایت‪:‬‬

‫‪http://Python-ir.org‬‬

‫لینک گروه‪:‬‬

‫‪http://bit.ly/python-ir‬‬

‫لینک کانال‪https://telegram.me/python_ir :‬‬

‫جلسه اول‪:‬‬
‫اگر با زبان برنامه نویسی دیگسایلنت (‪ )DPL‬کار کرده باشید‪ ،‬پی به محدودیت های آن برده اید‪ .‬این زبان‬
‫فقط برای اجرای دستورات دیگسایلنت کاربرد دارد و ‪:‬‬

‫⃣‪ 1‬در ‪ DPL‬نمی توان از اعداد مختلط استفاده کرد‪.‬‬

‫⃣‪ 2‬متغیرهای بردار و ماتریس ندارد و عملیات قابل انجام آن بر روی المان های ماتریس و بردار بسیار‬
‫محدود است‪.‬‬

‫⃣‪ 3‬امکان ارتباط وسیع با دنیای بیرون از نرم افزار (پایگاه داده‪ ،‬وب و ‪ )...‬بجز ارتباط با فایل متن و آفیس را‬
‫ندارد‪.‬‬
‫⃣‪ 4‬امکان ایجاد رابط گرافیکی کاربر یا ‪ GUI‬را ندارد‪.‬‬

‫⃣‪ 5‬امکان اشکال یابی خط به خط و مشاهده مقدار متغیرها حین اجرای برنامه ندارد‪.‬‬

‫⃣‪ 6‬به دلیل نداشتن کتابخانه های تخصصی‪ ،‬نوشتن برنامه های بهینه سازی‪ ،‬هوش مصنوعی و ‪ ...‬با آن‬
‫سخت است‬

‫⃣‪ DPL 7‬قابل اجرا در خارج از محیط دیگسایلنت نیست‪.‬‬

‫اما پایتون (‪ )python‬یک زبان برنامه نویسی عمومی‪ ،‬رایگان‪ ،‬منبع باز‪ ،‬شیئ گرا و مستقل از سیستم‬
‫عامل است‪ .‬با استفاده از پایتون امکانات فراوانی در برنامه نویسی خواهید داشت و محدودیت های ذکر شده‬
‫در باال برای آن وجود ندارد‪ .‬وجود کتابخانه های تخصصی از نقاط قوت این زبان برنامه نویسی است‪ .‬برای‬
‫مثال کتابخانه ‪( numpy‬همراه با ورژن استاندارد نیست و جداگانه باید دانلود و نصب شود) امکاناتی در‬
‫حد متلب پایه در اختیار شما خواهد گذاشت‪ .‬همچنین کتابخانه ‪ tkinter‬که همراه با ورژن استاندارد پایتون‬
‫است امکان ایجاد ‪ GUI‬را فراهم می کند‪ .‬برخی دیگر از کتابخانه های معروف از بین تعداد بیشمار عبارتند‬
‫از‪:‬‬

‫ارتباط با پورت سریال ‪PySerial :‬‬

‫ارتباط با اکسل ‪PyXLL:‬‬

‫هوش مصنوعی ‪PyBrain:‬‬

‫رسم منحنی ‪Matplotlib:‬‬

‫پایتون در دو ورژن جداگانه ‪ 3 , 2‬منتشر می شود‪ .‬ورژن ‪ 3‬ارتقا یافته ورژن ‪ 2‬به شمار می رود ‪ .‬ورژن ‪2‬‬
‫اما به دلیل استفاده وسیع آن در تعدادی از نرم افزارها انتشار آن به موازات ورژن ‪ 3‬ادامه پیدا کرد‪.‬‬
‫دیگسایلنت از ورژن ‪ 3‬استفاده می کند ولی برخی نرم افزارها مانند ‪ ArcGIS‬از ورژن ‪ 2‬استفاده می کنند‪.‬‬
‫پایتون ‪ 2,7‬آخرین ویرایش از نوع ‪ x.2‬می باشد و ورژن دیگری نخواهد داشت‪ .‬متاسفانه ساختار و تعدادی از‬
‫دستورات این دو ورژن با هم اختالف دارد و با یکدیگر سازگار نیستند‪.‬‬
‫زبان پایتون برای دیگسایلنت از ورژن ‪ 15,1‬به بعد با پایتون ‪ 3,3‬شروع شد و در نسخه ‪ 2016‬این نرم افزار‬
‫از پایتون ‪ 3,5‬استفاده شده است‪.‬‬
‫👈نصب پایتون‪:‬‬

‫پس از نصب دیگسایلنت‪ ،‬پوشه ای با نام ‪ python‬در محل نصب دیگسایلنت ایجاد می شود‪ .‬دراین پوشه‬
‫فایل نصب پایتون به همراه سایر فایل های الزم وجود دارد ‪.‬‬

‫برای دیگسایلنت ‪ 15,1‬فایل با نام ‪ python-3.3.2.msi‬را نصب کنید‪ .‬مراحل نصب ساده است ‪.‬‬

‫شکل ‪ :1‬نصب پایتون‬

‫پس از تأیید پنجره باال‪ ،‬محل نصب پرسیده می شود و با تأیید پنجره های بعدی نرم افزار نصب خواهد شد‪.‬‬

‫پس از نصب‪ ،‬پوشه ای با نام ‪ python‬در محل ‪( Program Files‬دکمه استارت ویندوز) ایجاد می‬
‫شود‪:‬‬
‫شکل ‪ :2‬پوشه پایتون در ‪ All Programs‬ویندوز‬

‫همانطور که در شکل باال مشاهده می کنید‪ ،‬پایتون به دو شکل قابل اجرا است‪:‬‬

‫⃣‪ 1‬از طریق خط فرمان (محیط ‪ ) dos‬با نام)‪Python (command line‬‬

‫⃣‪ 2‬از طریق واسط گرافیکی با نام ‪IDLE‬‬

‫ما در آموزش خود از واسط گرافیکی ‪ IDLE‬استفاده می کنیم‪.‬‬

‫با اجرای ‪ IDLE‬پنجره شکل زیر باز می شود‪:‬‬


‫شکل ‪ :3‬رابط گرافیکی محیط پایتون‬

‫محیط نشان داده شده در شکل ‪ 3‬بسیار شبیه به محیط ساده شده ‪ MATLAB‬است‪ .‬این محیط دستورات‬
‫خط فرمان را اجرا می کند‪ .‬به عبارت دیگر با وارد کردن هر دستور و زدن دکمه ‪ Enter‬دستور اجرا خواهد‬
‫شد‪ .‬برای مثال با تایپ ‪ 3*5‬حاصل یعنی ‪ 15‬در خط بعد نشان داده خواهد شد‪.‬‬

‫آموزش ارائه شده شامل دو قسمت خواهد بود‪:‬‬


‫بخش اول‪ :‬آموزش زبان پایتون جدا از دیگسایلنت‬
‫بخش دوم‪ :‬آموزش نحوه استفاده از پایتون در دیگسایلنت و دستورات مخصوص دیگسایلنت‬

‫آموزش بخش اول را با معرفی انواع داده ها در پایتون شروع می کنیم‪:‬‬

‫از انواع داده های نشان داده شده در شکل ‪ ،4‬داده های عددی ‪ ، Numbers‬رشته ای ‪ Strings‬و لیست‬
‫‪ Lists‬بیشترین استفاده در دیگسایلنت را دارد‪.‬‬

‫شکل ‪ :4‬انواع داده ها در زبان پایتون‬

‫اعداد‪:‬‬

‫اعداد در پایتون می تواند عالوه بر فرمت های متداول شامل فرمت مختلط و کسری هم باشند‪.‬‬
‫در شکل ‪ 5‬انواع داده های عددی را می توانید مشاهده کنید‪:‬‬
‫شکل ‪ :5‬انواع داده های عددی در پایتون‬

‫انواع عملگرهای ریاضی را هم در شکل ‪ 6‬می توانید مالحظه کنید‪:‬‬


‫شکل ‪ :6‬عملگرها ریاضی‪ ،‬منطقی و کاربرد عالئم‬
‫همانطور که در جدول شکل ‪ 6‬مشاهده می کنید ‪:‬‬
‫توان ‪** :‬‬

‫چک کردن تساوی دو عدد‪== :‬‬

‫عالمت نامساوی‪!= :‬‬


‫اندیس ‪ ] [ :‬برای استفاده در لیست (ماتریس و بردار)‬
‫باقیمانده‪% :‬‬
‫بخش صحیح تقسیم‪// :‬‬

‫از عالمت مساوی (=) برای تخصیص مقدار به یک متغیر استفاده می شود‪.‬‬
‫تعداد ارقام در پایتون محدودیت ندارد برای مثال ‪ 2‬به توان یک میلیون را محاسبه می کنیم‪ .‬تعداد ارقام‬
‫نتیجه را می توان از دستور زیر به دست آورد‪:‬‬

‫اصالحیه‪ :‬با توجه به حساس بودن پایتون به حروف کوچک و بزرگ‪ ،‬دستور صحیح به شکل زیر می باشد‪:‬‬

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

‫ماژول های عددی‪:‬‬

‫در پایتون ماژول ها یا کتابخانه هایی وجود دارد که می توانید به صورت جداگانه بارگذاری شوند‪ .‬برای مثال‬
‫به تعدادی از توابع ریاضیاتی می توانید از طریق فراخوانی ماژول ‪ math‬دسترسی پیدا کنید‪.‬‬

‫برای فراخوانی ماژول ها از دستور ‪ import‬باید استفاده کنید‪:‬‬

‫‪»import math‬‬
‫لیست دستورهای موجود در ماژول ‪ math‬پس از فراخوانی با دستور زیر قابل دیدن خواهد بود‪:‬‬

‫)‪dir (math‬‬
‫شکل ‪ :7‬توابع ریاضی موجود در ماژول ‪math‬‬

‫برای استفاده از دستورات ماژول از عالمت نقطه پس از اسم ماژول و سپس درج نام تابع استفاده کنید‪:‬‬

‫)‪» math.sin(math.pi/4‬‬
‫‪0.7071067811865475‬‬
‫️✍ نکته‪ :‬برای تکرار دستوری که در سطر های قبل درج شده‪ ،‬با استفاده از موس یا کلیدهای جهت‪ ،‬عالمت‬
‫مکان نما را به ابتدای سطر مورد نظر ببرید و سپس کلید ‪ enter‬را بزنید‪ .‬در این صورت دستور قبل در‬
‫سطر جدید درج خواهد شد‪.‬‬

‫️✍توابع مربوط به اعداد تصادفی توسط ماژول ‪ random‬قابل فراخوانی است‪.‬‬

‫برای دریافت راهنمای خالصه ای از هر دستور می توانید از دستور ‪ help‬استفاده کنید‪:‬‬

‫)‪» help(math.degrees‬‬
‫‪Help on built-in function degrees in module math:‬‬

‫)‪degrees(...‬‬
‫)‪degrees(x‬‬
‫‪Convert angle x from radians to degrees.‬‬

‫برای دیدن مقدار یک متغیر نام متغیر را تایپ و ‪ enter‬را بزنید‪ .‬برای نمایش مقدار یک متغیر خاص‪ ،‬از‬
‫دستور ‪ print‬استفاده کنید‪:‬‬

‫‪» from fractions import Fraction‬‬


‫)‪» x = Fraction(1, 3‬‬
‫)‪» print(x‬‬
‫‪1/3‬‬
‫)‪» y = Fraction(0.25‬‬
‫)‪»print(y‬‬
‫‪1/4‬‬
‫‪»x+y‬‬
‫)‪Fraction(7,12‬‬
‫️✍ نکته‪ :‬پایتون به فاصله در ابتدای دستور حساس است بنابراین در صورت وجود فاصله قبل از درج دستور‬
‫با خطا مواجه خواهید شد‪.‬‬
‫فاصله در ابتدای دستور ‪ ،‬برای دستورات زیر مجموعه یک دستور دیگر مانند دستورات شرط و حلقه استفاده‬
‫می شود ‪.‬‬
‫اطالعات بیشتر در ارتباط با زبان پایتون‪:‬‬

‫‪https://fa.wikipedia.org/wiki/%D9%BE%D8%A7%DB%8C%D8%AA%D9%‬‬
‫‪88%D9%86_(%D8%B2%D8%A8%D8%A7%D9%86_%D8%A8%D8%B1%D‬‬
‫‪9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C‬‬
‫)‪%D8%B3%DB%8C‬‬
‫لیست و راهنمای ماژولهای پایتون‪:‬‬

‫‪http://python-ir.org/py-modindex.html‬‬
‫آموزش های مرتبط با پایتون در سایت ایران متلب‬

‫‪http://iran-‬‬
‫‪matlab.ir/?s=%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86‬‬
‫نرم افزار آموزش پایتون و پایتون قابل اجرا بر روی اندروید‬

‫)‪(com.sololearn.python-2, com.hipipal.qpy3-1‬‬

‫جلسه دوم‪:‬‬

‫رشته‪:‬‬

‫ترتیبی از کاراکترها است که برای ذخیره اسامی یا به طور کلی مجموعه دلخواهی از بایت ها (مانند یک‬
‫تصویر) مورد استفاده قرار می گیرد‪.‬‬
‫روشهای مختلفی برای مقدار دهی به یک متغیر رشته و یا معرفی رشته ای از کاراکترها وجود دارد‪ .‬این‬
‫روشها در شکل زیر نشان داده شده است‪:‬‬
‫شکل ‪ :8‬روشهای مقدار دهی به متغیر رشته‬

‫تمرین‪ :‬کدهای شکل باال را خط به خط وارد کنید و نتیجه کار را با دستور ‪ print‬مالحظه کنید‪.‬‬

‫رشته متنی می تواند شامل کارکترهای کنترلی مانند ‪ Tab‬یا ‪ New Line‬هم باشد‪ .‬انواع کارکترهای‬
‫کنترلی را در شکل زیر می توانید مشاهده کنید‪:‬‬
‫شکل ‪ :9‬انواع کاراکترهای کنترلی قابل استفاده در یک رشته‬

‫️✍نکته‪ :‬با استفاده از حر ف ‪ r‬قبل از رشته‪ ،‬می توان از کارکتر \ بدون اثر کنترلی آن استفاده‪:‬‬

‫مثال‪:‬‬

‫'‪»> path = r'C:\new\text.dat‬‬


‫‪»> path‬‬ ‫‪# Show as Python code‬‬
‫'‪'C:\\new\\text.dat‬‬
‫)‪»> print(path‬‬ ‫‪# User-friendly format‬‬
‫️✍ نکته‪ :‬از کوتیشن سه تایی برای وارد کردن یک بلوک متنی می توان استفاده کرد‪:‬‬

‫مثال‪:‬‬

‫‪»> mantra = """Always look‬‬


‫‪... on the bright‬‬
‫"""‪... side of life.‬‬
‫>»‬
‫‪»> mantra‬‬
‫'‪'Always look\n on the bright\nside of life.‬‬
‫)‪»> print(mantra‬‬
‫در مثال باال در پایان خط از دکمه ‪ Enter‬استفاده کنید‪ .‬با این روش کارکتر کنترلی (خط جدید) به صورت‬
‫خودکار ایجاد می شود‪.‬‬

‫عملیات بر روی رشته ها‪:‬‬

‫محاسبه طول رشته‪ :‬با استفاده از تابع ‪ len‬طول رشته محاسبه می شود‪:‬‬

‫)'‪»> len('abc‬‬ ‫‪# Length: number of items‬‬


‫‪3‬‬
‫اتصال دو رشته‪ :‬از عالمت ‪ +‬می توانید رشته ها را به هم متصل کنید و با عالمت * می توانید رشته را‬
‫تکرار کنید‪:‬‬

‫'‪»> 'abc' + 'def‬‬ ‫‪# Concatenation: a new string‬‬


‫'‪'abcdef‬‬
‫‪»> 'Ni!' * 4‬‬ ‫‪# Repetition: like "Ni!" + "Ni!" + ...‬‬
‫' !‪'Ni!Ni!Ni!Ni‬‬

‫تمرین‪ :‬کد زیر را وارد کرده و نتیجه را مالحظه کنید‪:‬‬

‫)‪»> print('-' * 80‬‬


‫️✍نکته‪ :‬از آنجایی ک عالمت ‪ +‬برای جمع اعداد نیز به کار می رود بنابراین برای ترکیب عدد و رشته از این‬
‫عالمت نمی توان استفاده کرد و برای اینکار الزم است آن عدد را به رشته تبدیل کنید‪ .‬دستور زیر منجر به‬
‫‪ TypeError‬می شود‪:‬‬

‫)‪Print('abc'+123‬‬
‫برای تبدیل عدد به رشته از تابع ‪ str‬و برعکس آن از تابعی مانند ‪ float،int‬یا ‪ complex‬می توان‬
‫استفاده کرد‪:‬‬

‫))‪»> print ('abc' + str(123‬‬


‫‪abc123‬‬
‫'‪»> s='123‬‬
‫‪»> int(s)+10‬‬
‫‪133‬‬
‫از توابع ‪ ord‬و ‪ chr‬می توان به ترتیب جهت استخراج کد کاراکتر و تبدیل کد به کاراکتر استفاده کرد‪:‬‬

‫)'‪»> ord('a‬‬
‫‪97‬‬
‫)‪»> chr(98‬‬
‫'‪'b‬‬
‫برای فرمت دادن به یک رشته می توان از عالمت ‪ %‬نیز استفاده کرد‪:‬‬

‫مثال‪:‬‬

‫)'‪»> 'That is %d %s bird!' % (1, 'dead‬‬ ‫‪# Format expression‬‬


‫!‪That is 1 dead bird‬‬

‫همانطور که در مثال باال مشاهده می شود‪ ،‬استفاده از عالمت ‪ %d‬به معنای وجود عدد و ‪ %s‬به معنای‬
‫وجود یک رشته در محل مورد نظر است‪ .‬پس از پایان رشته فرمت دار‪ ،‬یک عالمت درصد قرار می گیرد و‬
‫مقادیر به ترتیب مشخص می شوند‪ .‬همچنین می تواندی طول فیلد و دقت اعشار را نیز مشخص کنید‪.‬‬

‫کدهای قابل استفاده بعد از عالمت درصد در شکل زیر نشان داده شده است‪:‬‬

‫شکل ‪ :9‬کداهای قابل استفاده بعد از عالمت ‪ %‬برای فرمت دهی به رشته های ترکیبی‬
‫مثال‪:‬‬

‫‪»> x = 1234‬‬
‫)‪»> res = 'integers: ...%d...%−6d...%06d' % (x, x, x‬‬
‫‪»> res‬‬
‫'‪'integers: ...1234...1234 ...001234‬‬

‫‪»> x = 1.23456789‬‬
‫‪»> x‬‬ ‫‪# Shows more digits before 2.7 and 3.1‬‬
‫‪1.23456789‬‬

‫)‪»> '%e | %f | %g' % (x, x, x‬‬


‫'‪'1.234568e+00 | 1.234568 | 1.23457‬‬

‫)‪»> '%−6.2f | %05.2f | %+06.1f' % (x, x, x‬‬


‫'‪'1.23 | 01.23 | +001.2‬‬

‫)‪»> '%s' % x, str(x‬‬


‫)'‪('1.23456789', '1.23456789‬‬
‫👈دسترسی به اجزای رشته‪:‬‬

‫برای دسترسی به هر یک از کاراکترهای از عالمت کروشه استفاده می کنیم‪ .‬شماره از صفر شروع می شود‪.‬‬
‫اگر بخواهیم از آخر دسترسی داشته باشیم از عالمت منفی استفاده می کنیم‪ .‬بنابراین منفی ‪ 1‬یعنی آخرین‬
‫کاراکتر‪.‬‬
‫مثال‪:‬‬

‫'‪» S='salam‬‬
‫]‪» S[0:2‬‬
‫‪Sa‬‬
‫حد چپ پیش فرض صفر است و حد راست پیش فرض برابر با طول کاراکتر است‪.‬‬

‫تمرین‪:‬‬

‫]‪S[:3‬‬
‫] ‪S[2:‬‬
‫] ‪S[: -1‬‬
‫] ‪S[ :‬‬
‫با فرمت‬

‫]‪[s:j:k‬‬
‫میتوان گام ‪ k‬را برای شمارش جایگاه کاراکترها اعمال کرد‬

‫'‪»> s='123456‬‬
‫]‪»> s[::2‬‬
‫'‪'135‬‬
‫تمرین‪ :‬خروجی دستور زیر را حدس بزنید‪:‬‬

‫]‪»> s[:: -1‬‬


‫شکل زیر نمایش خوبی از جایگاه کاراکترها در یک رشته را نشان می دهد‪:‬‬
‫شکل ‪ :10‬نحوه شماره دهی برای دسترسی ترتیبی به زیر بخش یک رشته‬

‫️✍نکته‪ :‬کاراکترهای رشته قابل تغییر یا جایگزینی نیست‪.‬‬

‫مثال زیر منجر به خطای ‪ TypeError‬خواهد شد‪:‬‬

‫'‪s[1] = 'a‬‬
‫👈متدهای قابل اجرا برای متغیرهای رشته‪:‬‬

‫متدها مانند یک تابع عمل میکنند با این تفاوت که متغیری که متد بر روی آن عمل می کند در ابتدا نوشته‬
‫می شود و سپس به واسطه یک نقطه‪ ،‬نام متد و در صورت لزوم آرگومان های ورودی در پرانتز مشخص می‬
‫شود ‪:‬‬

‫از متدهای رشته برای اهدافی مانند پیدا کردن یک زیر رشته در رشته‪ ،‬جایگزینی‪ ،‬تجزیه و ‪ ...‬استفاده نمود ‪.‬‬

‫مثال‪:‬‬

‫)'‪S.find('ab‬‬
‫)'‪S.replace('ab','abcd‬‬
‫تبدیل رشته به لیست با جدا سازی عالمت مشخص شده )'‪S.split(',‬‬

‫)(‪S.upper‬‬
‫)(‪S.isalpha() S.isdigit‬‬
‫حذف کاراکتر فضای خالی )(‪S.Rstrip‬‬
‫لیست کامل متدهای قابل اجرا بر روی متغیر رشته در شکل های زیر آمده است‪:‬‬

‫شکل ‪ :11‬بخش اول متدهای رشته‬

‫شکل ‪ :12‬بخش دوم متدهای رشته‬


‫تمرین‪ :‬رشته دلخواهی در متغیر ‪ S‬ذخیره کنید و متدهای نشان داده شده در شکل های باال را بر روی رشته‬
‫اجرا کنید‪.‬‬

‫متغیرهای منطقی‪:‬‬

‫متغیرها منطقی ‪ True‬و ‪ False‬هست که به ترتیب معادل یک و صفر می باشند‪:‬‬

‫‪»> a=1‬‬
‫‪»> a==1‬‬
‫‪True‬‬
‫‪»> 3>5‬‬
‫‪False‬‬
‫‪»> 5>3 and 2!=3‬‬
‫‪True‬‬
‫شکل ‪ :13‬ارزش منطقی برخی متغیرها‬

‫جلسه سوم‪:‬‬

‫لیست‪ :‬مجموعه ای از اشیاء مرتب شده است و همانطور که قبال اشاره شد‪ ،‬بیشترین کاربرد در برنامه‬
‫نویسی دیگسایلنت را دارد‪.‬‬

‫برای معرفی یا دسترسی به اجزای لیست از عالمت کروشه [ ] استفاده می کنیم‪.‬‬


‫برای مثال لیست زیر حاوی سه نوع داده است‪:‬‬

‫]‪L = [1.2,'Salam',12‬‬
‫برای دسترسی به طول یک لیست از دستور ‪ len‬میتوان استفاده کرد‪:‬‬

‫)‪len(L‬‬
‫‪3‬‬
‫برای دسترسی به اجزای یک لیست‪ ،‬مشابه روشی که برای متغیر رشته گفته شد می توان عمل کرد‪:‬‬

‫]‪L[0‬‬
‫‪1.2‬‬
‫]‪L[-1‬‬
‫‪12‬‬
‫برای الحاق یک لیست به لیست موجود از عالمت ‪ +‬و برای تکرار اجزای یک لیست از عالمت * استفاده‬
‫کنید‪ .‬به عبارت دیگر عالمت های ‪ +‬و * تعریف خاص خود را برای متغیر از نوع لیست دارند که نباید با‬
‫تعریف معمول آنها برای متغیر بردار یا ماتریس اشتباه شود‪.‬‬
‫مثال‪:‬‬

‫]‪> > > L = [1‬‬


‫‪> > > L*3‬‬
‫]‪[1, 1, 1‬‬
‫]‪> > > L+[3‬‬
‫]‪[1, 3‬‬
‫نکته‪ :‬یک لیست فقط در محدود موجود خود‪ ،‬اندیس پذیر است‪:‬‬

‫]‪> > > L=[1,2,3‬‬


‫]‪> > > L[3] =[4‬‬
‫‪IndexError: list assignment index out of range‬‬
‫از متد ‪ append‬می توان برای الحاق یک مقدار به انتهای لیست استفاده کرد‪:‬‬
‫]‪> > > L=[1,2,3‬‬

‫)‪> > > L.append(4‬‬


‫‪>>>L‬‬
‫]‪[1, 2, 3, 4‬‬
‫اجزای یک لیست خود می تواند از نوع لیست هم باشد‪:‬‬

‫] ]‪> > > Matrix = [ [1,2,3] , [5,6,7] , [8,9,10‬‬


‫]‪> > > Matrix [1] [2‬‬
‫‪7‬‬
‫برای اطالع از وجود یک مقدار در لیست از دستور ‪ in‬استفاده کنید‪:‬‬

‫]‪> > > L=[1,2,3‬‬


‫‪> > > 1 in L‬‬
‫‪True‬‬
‫‪> > > 4 in L‬‬
‫‪False‬‬

‫برای پیدا کردن یک مقدار در لیست از متد ‪ index‬استفاده کنید‪:‬‬

‫)‪> > > L.index(3‬‬


‫‪2‬‬
‫برای حذف یک یا چند شیء از لیست می توان از دستور ‪ del‬یا روش مقدار دهی تهی استفاده کرد‪:‬‬

‫]‪> > > del L[1‬‬


‫‪>>>L‬‬
‫]‪[1, 3‬‬
‫‪----------------------------------‬‬
‫]‪> > > L = [1,2,3,4,5‬‬
‫] [ = ]‪> > > L [2 : 4‬‬
‫‪>>>L‬‬
‫]‪[1, 2, 5‬‬

‫برای تبدیل رشته به لیست می توانید از تابع ‪ list‬استفاده کنید‪:‬‬

‫)'‪> > > L = list('123456789‬‬


‫‪>>>L‬‬
‫]'‪['1', '2', '3', '4', '5', '6', '7', '8', '9‬‬
‫برای ایجاد لیستی از رنج اعداد می توانید از تبدیل رنج به لیست استفاده کنید‪:‬‬

‫))‪> > >L = list(range(-4, 4‬‬


‫‪>>>L‬‬
‫]‪[-4, -3, -2, -1, 0, 1, 2, 3‬‬
‫متد ‪ sort‬و ‪ reverse‬برای مرتب نمودن و چینش برعکس لیست‪:‬‬

‫]‪> > > L=[3,2,5,4,1‬‬


‫)(‪> > > L.sort‬‬
‫‪>>>L‬‬
‫]‪[1, 2, 3, 4, 5‬‬
‫)(‪> > > L.reverse‬‬
‫‪>>>L‬‬
‫]‪[5, 4, 3, 2, 1‬‬
‫)(‪> > > L.reverse‬‬
‫‪>>>L‬‬
‫]‪[1, 2, 3, 4, 5‬‬
‫برای لیست های عددی می توانید از دستورات ریاضی زیر استفاده کنید ‪:‬‬

‫)‪sum(L‬‬
‫)‪min(L‬‬
‫)‪max(L‬‬
‫👈کاربرد دستورات ‪ if‬و ‪ for‬برای ایجاد لیست و دسترسی ترتیبی یامشروط به اجزای لیست‬

‫برای استفاده از دستور ‪ for‬برای تولید لیست باید در کنار آن از دستور ‪ in‬استفاده کرد‪.‬‬

‫مثال ‪ :1‬تولید توان ‪ 2‬اعداد بین ‪ 0‬تا ‪:9‬‬

‫])‪> > > L2 = [i**2 for i in range(10‬‬


‫‪> > > L2‬‬
‫]‪[0, 1, 4, 9, 16, 25, 36, 49, 64, 81‬‬
‫مثال ‪ :2‬گزینش ستون اول یک لیست ماتریسی‬

‫]]‪> > > M = [[1,2,3],[4,5,6],[7,8,9‬‬


‫]‪> > > [row[0] for row in M‬‬
‫]‪[1, 4, 7‬‬
‫مثال ‪ :3‬جمع سطر های ماتریس‬

‫]‪> > > [sum(row) for row in M‬‬


‫]‪[6, 15, 24‬‬
‫مثال ‪:4‬‬

‫]'‪> > > [c*2 for c in 'salam‬‬


‫]'‪['ss', 'aa', 'll', 'aa', 'mm‬‬
: 5 ‫مثال‬

> > > [ [x,x+1] for x in [1,2,3] ]


[ [1, 2], [2, 3], [3, 4] ]
:6 ‫مثال‬

> > > a = [3,7,19]


> > > [[x, a[x]] for x in range(len(a))]
[[0, 3], [1, 7], [2, 19]]
:if ‫ و‬for ‫ترکیب دستور‬

:1 ‫ گزینش اعداد بزرگتر از‬:1 ‫مثال‬

> > > L = [0.9, 0.95 , 1.1 , 0.85 ,2]


> > > [i for i in L if i>1]
[1.1 , 2]
> > > [L.index(i) for i in L if i>1]
[2, 4]
:‫تو در تو‬for

> > > [ [ i for i in range (j) ] for j in range (1,4) ]


[[0], [0, 1], [0, 1, 2]]

flattened = [n for n in row for row in matrix]


)PythonReference_en(‫فایل‬
‫جلسه چهارم‪:‬‬

‫دستورات کنترلی‬

‫دستور ‪:if‬‬

‫فرمت کلی دستور ‪ if‬به شکل زیر است‪:‬‬

‫‪if test1:‬‬
‫‪statements1‬‬
‫‪elif test2:‬‬
‫‪statements2if‬‬
‫‪else:‬‬
‫‪statements3‬‬
‫فرمت این دستور در مقایسه با فرمت زبان ‪( C‬که در برنامه نویسی متلب و ‪ DPL‬هم استفاده می شود)‬
‫دارای تفاوت هایی به شرح زیر است‪:‬‬

‫‪-1‬نیاز به قرار دادن شرط داخل پرانتز نیست‪.‬‬

‫‪-2‬به جای استفاده از نماد آکوالد } برای اعالم شروع یک بلوک از نماد دو نقطه ‪ :‬استفاده شده است‬
‫‪-3‬بلوکی از دستورات که بعد از صحیح بودن شرط اجرا می شود توسط تورفتگی مشخص می شود ‪ .‬انتهای‬
‫بلوک جایی است که تورفتگی به اندازه دستور ‪ if‬باشد‪.‬‬

‫مثال‪:‬‬

‫)‪if x > y: print(x‬‬

‫] '‪AllGens = [ 'G1' , 'G2' , 'G3‬‬


‫] '‪AllProg = [ 'G2' , 'G3‬‬
if 'G1' in AllGens:
print('G1 is ready')
if 'G1' in AllProg:
print('G1 is ON')
else: print('G1 is OFF')
else: print('G1 not ready')

IDLE‫ مثال فوق در محیط‬:14 ‫شکل‬

.‫ را بزنید‬enter ‫ برای مشاهده جواب پس از پایان آخرین دستور دو بار دکمه‬:‫️✍نکته‬

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


if X:

A=Y

else:

A=Z

A = Y if X else Z
‫دستور‪while‬‬

‫فرمت دستور به شکل زیر است‪:‬‬

‫‪while test:‬‬
‫‪statements # Loop body‬‬
‫‪else:‬‬
‫‪statements‬‬

‫شکل ‪ :15‬مثالی از دستور ‪while‬‬

‫️✍نکته‪ :‬از دستور ‪ break‬برای خروج و ‪ continue‬برای پرش به ابتدای حلقه ‪ while‬می توان‬
‫استفاده کرد‪.‬‬

‫شکل ‪ :16‬مثال دیگری از دستور ‪while‬‬


‫شکل ‪ :17‬مثال استفاده از ‪ break‬در حلقه ‪while‬‬

‫دستور‪for‬‬

‫فرمت دستور ‪ for‬به شکل زیر است‪:‬‬

‫‪for target in object:‬‬


‫‪statements‬‬
‫‪else:‬‬
‫‪statements‬‬

‫شکل ‪ :18‬مثالی از دستور‪for‬‬


‫شکل ‪ :19‬مثال دستور ‪( for‬اضافه نمودن عدد ثابت به اعداد لیست)‬

‫ذخیره برنامه در فایل و اجرای آن‪:‬‬

‫همانطور که قبال اشاره شد‪ ،‬مجموعه دستورات پایتون را می توانید در یک فایل متن ذخیره کنید‪.‬‬

‫اگر در محیط ‪ shell‬یا همان ‪ IDLE‬هستید از منوی فایل گزینه ‪ New Window‬را انتخاب کنید تا‬
‫پنجره جدید برای نوشتن متن برنامه باز شود‪.‬‬

‫متن برنامه را نوشته و با پسوند ‪ py‬ذخیره کنید‪ .‬سپس از منوی ‪ run‬گزینه ‪ run module‬را انتخاب‬
‫کنید یا کلید ‪ F5‬را بزنید تا برنامه اجرا شود ‪.‬‬
‫مثال ‪ :‬برنامه ای بنویسید که یک جدول ضرب ‪ 10‬در ‪ 10‬مرتب را در خروجی چاپ کند‪.‬‬

‫شکل ‪ :20‬محیطی برای نوشتن متن برنامه پایتون‬


‫شکل ‪ :21‬نتیجه اجرای برنامه مثال شکل ‪20‬‬
‫مثال‪:‬‬

‫شکل ‪ :22‬کاربرد دستور ‪for‬‬

‫️✍نکته‪ :‬برای دستور ‪ for‬نیز می توان از دستور‪continue ، break‬و ‪ else‬استفاده کرد‪.‬‬

‫موضوع جلسه آینده ‪numpy:‬‬

‫برای اضافه شدن توابع ‪ numpy‬به پایتون‪ ،‬می توانید از فایل نصبی زیر استفاده کنید‪.‬‬

‫(فایل‪)numpy-1.10.2-win32-superpack-python3.3‬‬
‫جلسه پنجم‪:‬‬

‫معرفی دستورات ‪numpy‬‬

‫مهمترین کتابخانه ها ‪ numpy‬عبارتند از‪:‬‬

‫‪random:‬‬ ‫‪Random Tools‬‬


‫‪linalg:‬‬ ‫‪Linear Algebra Tools‬‬
‫‪fft:‬‬ ‫‪FFT routines‬‬
‫‪polynomial:‬‬ ‫‪Polynomial tools‬‬
‫اضافه نمودن دستورات ‪ numpy‬به پایتون‪:‬‬

‫پس از نصب ‪( numpy‬از طریق فایلی که در جلسه قبل معرفی شد‪ ،‬یا نصب پکیجی مانند ‪anaconda‬‬
‫که حاوی کتابخانه های زیادی از جمله ‪ Scipy ،numpy‬و ‪ matplotlib‬است) با استفاده از روش‬
‫های زیر می توان دستورات ‪ numpy‬را برای استفاده در برنامه نویسی ‪ python‬فراخوانی کرد‪:‬‬

‫روش اول‪:‬‬

‫‪> > > import numpy‬‬


‫در صورت استفاده از این دستور‪ ،‬هر یک از توابع ‪ numpy‬مشابه دستور زیر باید فراخوانی گردد‪:‬‬

‫)]‪> > > numpy.average([1,2‬‬


‫روش دوم ‪:‬‬

‫‪Import numpy as np‬‬


‫در این صورت فراخوانی توابع با نام مستعار دلخواه (در اینجا ‪ np‬انتخاب شده) مشابه زیر خواهد بود‪:‬‬

‫)]‪np.average([1,2‬‬
‫معموال از این روش برای حالتی که تعداد دفعات مراجعه به دستورات ‪ numpy‬زیاد است‪ ،‬استفاده می‬
‫کنیم‪.‬‬

‫روش سوم ‪:‬‬

‫روش نهایی که ساده تر ولی با ریسک تداخل نام توابع مشابه با سایرکتابخانه های فعال‪ ،‬به شکل زیر است‪:‬‬

‫* ‪from numpy import‬‬


‫در این روش‪ ،‬فراخوانی توابع به صورت مستقیم خواهد بود ‪.‬‬

‫)]‪average([1,2‬‬
‫آرایه ‪:‬‬
‫مهمترین نوع متغیر قابل تعریف در نامپای است‪ .‬آرایه مشابه متغیر لیست در پایتون است با این تفاوت که‬
‫تمامی عناصر آن باید از یک نوع (عدد) باشد‪ .‬آرایه ها برای نمایش بردارها بیشترین کاربرد دارد‪.‬‬

‫از دستور ‪ array‬می توان برای تبدیل لیست به آرایه و از متد ‪ tolist‬برای عکس این کاراستفاده کرد‪:‬‬

‫شکل ‪ :23‬دستورات ‪ array‬و ‪tolist‬‬


‫به جای استفاده از دستور ‪ range‬و تبدیل به آرایه می توانید به صورت مستقیم از دستور ‪ arange‬نامپای‬
‫استفاده کنید‪:‬‬

‫)‪»> a=np.arange(1,5‬‬
‫‪»> a‬‬
‫)]‪array([1, 2, 3, 4‬‬
‫نکته‪ :‬روش دسترسی به اجزای یک آرایه مشابه روشی است که برای متغیر از نوع لیست و رشته به کار می‬
‫رفت‪.‬‬

‫با دستور ‪ shape‬می توانید سایز آرایه را بدست آورید‪:‬‬

‫شکل ‪ :24‬دستور ‪shape‬‬

‫با دستور ‪ reshape‬می توان رنجی از اعداد را به صورت یک ماتریس دلخواه درآورد‪:‬‬

‫شکل ‪ :25‬دستور ‪reshape‬‬

‫متد ‪ flatten‬عکس حالت فوق را انجام می دهد‪.‬‬

‫)(‪»> b=B.flatten‬‬
‫‪»> b‬‬
‫)]‪array([1, 2, 3, 4‬‬
‫️✍نکته‪ :‬تایپ ‪ array‬مانند لیست‪ ،‬یک ‪ object‬محسوب می شود‪ .‬بنابراین در استفاده از مساوی و کپی‬
‫دقت کنید‪:‬‬

‫شکل ‪ :26‬توجه به شیئ بودن متغیرها در پایتون‬

‫آرایه خاص‪:‬‬

‫ماتریس صفر‪ ،zeros :‬ماتریس یک‪ ones :‬و ماتریس همانی‪eye :‬‬

‫شکل ‪ :27‬آرایه های خاص‬


‫اعداد خاص‪ np.e :‬و ‪np.pi‬‬

‫نکته‪ :‬عملگرهای ریاضی بر روی تک تک عناصر آرایه عمل می کنند‪= < > ** / + - * .‬‬

‫ضرب داخلی و خارجی بردارها ‪:‬‬

‫دستور ‪ dot‬ضرب داخلی و دستور ‪ cross‬ضرب خارجی را بر روی بردارها انجام می دهد‪.‬‬

‫ماتریس‪:‬‬

‫با دستور ‪ matrix‬یا ‪ mat‬می توان یک لیست یا آرایه را به ماتریس تبدیل کرد‪ .‬فرق ماتریس و آرایه در‬
‫نحوه تأثیر عملگرهای ریاضی بر آنها است که تعاریف ماتریسی جایگزین آن می شود ‪.‬‬

‫در مثال زیر نحوه وارون گرفتن‪ ،‬ترانهاد‪ ،‬ضرب ماتریس و ‪ )...‬نشان داده شده است‪:‬‬
‫شکل ‪ :28‬مثالی از ماتریس و دستورات آن‬

‫دترمینان‪ ،‬مقادیر ویژه و بردارهای ویژه‪ ،‬حل دستگاه معادالت خطی‪:‬‬


‫شکل ‪ :29‬دستورات جبر خطی‬
‫چند جمله ای ها‪( :‬نمایش‪ ،‬ریشه‪ ،‬مشتق‪ ،‬مقدار)‬

‫شکل ‪ :30‬مثالی از محاسبه بر روی چند جمله ای ها‬

‫فایل(‪)numpy.pdf‬‬

‫فایل(‪)PythonReference_en_1395-10-9-8-48‬‬
‫👆راهنمای دستورات دیگسایلنت در پایتون‬

‫فایل(‪)Doing Math With Python‬‬

‫برای داشتن یک پایتون با الیبرری کامل مراحل زیر را انجام دهید‪:‬‬

‫‪- 1‬ابتدا پایتون همراه دیگسایلنت ‪ 15,1‬را نصب کنید (به صورت پیش فرض در مسیر‪:‬‬
‫\‪c:\python33‬‬
‫نصب می شود)‬

‫‪- 2‬پس از اتمام نصب پایتون‪ ،‬نام فولدری که پایتون در آن نصب شده را تغییر دهید‪ .‬مثال یکی از ‪ 3‬های‬
‫آن را پاک کنید‪.‬‬

‫‪- 3‬فایل زیر را دانلود کنید و در همان مسیری که قبال پایتون را نصب کرده بودید‪ ،‬حالت فشرده خارج‬
‫کنید‪(.‬در این مثال در ریشه اصلی درایو‪) C‬‬

‫‪-4‬نام فولدر جدید را به نام فولدری که ورژن اولیه پایتون را نصب کرده بودید‪ ،‬تغییر دهید‪ .‬برای مثال در‬
‫صورتیکه نام قبلی همان ‪ python33‬باشد‪ ،‬کافی است حرف ‪ x‬را از انتهای نام فولدر جدید برداریم‪.‬‬

‫‪ -5‬فولدر قدیمی را حذف کنید‪ .‬در این مثال ‪ python3‬را باید حذف کنید‪.‬‬

‫فایل(‪ python33x‬یکی از کاملترین پکیج های پایتون ‪)3,3,5‬‬


‫نمونه ای از یک برنامه ساده و خروجی آن‪:‬‬

‫مثال‪ :‬برنامه برای رسم ولتاژ باسبارها‬


‫خروجی برنامه باال در محیط دیگسایلنت (‪ 33‬باس ‪)IEEE‬‬

‫فایل ‪( )2009( Sandro Tosi-Matplotlib for Python Developers‬مرجعی برای آموزش‬


‫رسم انواع منحنی ها در پایتون با استفاده از کتابخانه ‪)Matplotlib‬‬

‫فایل(‪)Python_Tutorial‬‬
‫👆‬
‫فایل ‪( testchar.py‬مثال‪ :‬این برنامه برای بارهایی که مشخصه توان آنها وابسته به زمان‬
‫مطالعه نیست‪ ،‬یک مشخصه ‪ 24‬ساعته تعریف می کند‪ .‬در غیر این صورت مشخصه آنها‬
‫را در یک فایل اکسل ذخیره می کند‪).‬‬
‫فایل(_‪ )Mark_Roseman_Modern_Tkinter_for‬کتاب عالی برای کار با ‪tkinter‬‬
‫(رابط گرافیکی کاربر)‬

‫نمونه ‪ GUI‬با پایتون در دیگسایلنت 👇‬


‫ویدیوی ‪GUI_test‬‬
‫فایل (‪)CapGUI.py‬پوسته برنامه فوق‬

‫اینفوگرافی پایتون‬

‫امکان استفاده از دستورات ‪ GAMS‬در پایتون ‪ 3.4‬از ورژن ‪ 24.5.1‬این نرم افزار وجود‬
‫دارد‪ .‬پس از نصب ‪ GAMS‬و پایتون با ورژن مناسب و بیت یکسان (هردو ‪ 32‬بیت یا هر‬
‫دو ‪ 64‬بیت)‪ ،‬با خط فرمان به مسیر زیر رفته‪:‬‬
‫‪C:\GAMS\win64\24.8\apifiles\Python\api_34‬‬
‫و فرمان زیر را اجرا کنید‪:‬‬
‫‪python setup.py install‬‬
‫توضیحات بیشتر در راهنمای و سایت ‪ GAMS‬وجود دارد‪.‬‬
‫جهت استفاده از توابع متلب (البته نه همه توابع) در پایتون هم مشابه روش باال به مسیر زیر‬
‫رفته و فایل مربوطه را نصب کنید‪:‬‬
‫‪C:\Program Files\MATLAB\R2016b\extern\engines\python‬‬

‫🔹‪Top 15 Python Libraries for Data Science in 2017‬‬