آموزش زبان برنامه نویسی پایتون#جلسه سوم

آموزش زبان برنامه نویسی پایتون#جلسه سوم

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

جلسه دوم

بخش اول
در پایتون هر مقداری دارای یک نوع داده ای است اما نیازی به مشخص کردن نوع داده نمی باشد، بلکه با انتساب یک مقدار اولیه به متغیر، نوع آن مشخص می شود. نوع داده ای های اولیه در پایتون عبارتند از:
Booleans: که دارای دو مقدار True یا False می باشد
Numbers: که می تواند مقادیری از نوع صحیح (int)، اعشاری (float)، کسری (fraction) و ... می باشد
String: دنباله ای از یونیکد کاراکترها می باشد
Byte و آرایه های بایتی: مانند فایل های تصویر JPEG
List و Tuple: دنباله های مرتبی از مقادیر هستند
Set: مقادیری که ترتیب قرار گرفتن آنها در کنار یکدیگر اهمیتی ندارد
Dictionary: مقادیری که ترتیب قرار گرفتن آنها در کنار یکدیگر اهمیتی ندارد و به صورت جفت های کلید- مقدار (key-value pairs) می باشند.
 
 
آموزش پایتون به زبان فارسی
 

انواع داده در پایتون (Python)

جلسه دوم

بخش اول
در پایتون هر مقداری دارای یک نوع داده ای است اما نیازی به مشخص کردن نوع داده نمی باشد، بلکه با انتساب یک مقدار اولیه به متغیر، نوع آن مشخص می شود. نوع داده ای های اولیه در پایتون عبارتند از:
Booleans: که دارای دو مقدار True یا False می باشد
Numbers: که می تواند مقادیری از نوع صحیح (int)، اعشاری (float)، کسری (fraction) و ... می باشد
String: دنباله ای از یونیکد کاراکترها می باشد
Byte و آرایه های بایتی: مانند فایل های تصویر JPEG
List و Tuple: دنباله های مرتبی از مقادیر هستند
Set: مقادیری که ترتیب قرار گرفتن آنها در کنار یکدیگر اهمیتی ندارد
Dictionary: مقادیری که ترتیب قرار گرفتن آنها در کنار یکدیگر اهمیتی ندارد و به صورت جفت های کلید- مقدار (key-value pairs) می باشند.
 

نکاتی درباره انواع داده در پایتون (Python)

نوع داده های بولی در واقع زیر مجموعه ای از اعداد صحیح است که False معادل با مقدار 0 و True معادل با مقدار 1 است، بنابراین انجام عملیات ریاضیاتی روی داده های بولی مجاز است. مثلاً می توان حاصل عبارت False + True را که مترادف عبارت 1 + 0 است را به دست آورد که برابر با 1 است.
توجه کنید که نتیجه اجرای آخرین کد با خطای تقسیم بر صفر مواجه می شود، چون False را معادل صفر در نظر گرفته است.

 

 


>>> True + True
2 
>>> True - False 
1 
>>> True * False 
0 
>>> True / False
Traceback (most recent call last): 
 File "kpyshell#38>", line 1, in 
    True / False
zeroDivisionError: integer division or modulo by zero
>>>

در مورد اعداد با توجه به نقطه اعشاری (decimal point) می توان نوع داده ای را از نظر صحیح یا اعشاری بون مشخص کرد.
 با استفاده از تابع type() می توان نوع داده ای یک مقدار یا متغیر و در کل یک object را مشخص کرد و با تابع isinstance() نیز می توان بررسی کرد که آیا یک مقدار دارای نوع خاصی مورد نظر است یا. در مثال زیر دستور isinstance() در ابتدا از نظر syntax اشتباه نوشته شده است زیرا ایت تابع نیاز به دو آرگومان ورودی دارد. در مواقعی که آگاهی درستی درباره ی تابع و syntax مربوط به آن نداریم می توان با استفاده از تابع help() اطلاعاتی مفیدی درباره آن بدست آورد.

>>> a=2

>>> type (a) 

 

>>> b = 5.O 

>>> isinstance ( int)

Traceback (most recent call last): 

File "", line 1, in 

    isinstance ( int) 

TypeError: is instance expected 2 arguments, got 1 

>>> help (isinstance) 

Help on built-in function is instance in module __builtin__ :

isinstance (. . . )

isinstance (object, class-or-type-or-tuple) -> bool

Return whether an object is an instance of a class or of a subclass thereof. With a type as second argument, return whether that is the object's type. The form using a tuple, is instance (x, (A, B, . . . )), is a shortcut for is instance (X, A) or is instance (x, B) or . . . (etc.).

>>> is instance (b, float) 

True

>>>
 
برای آنکه مستقیما نوع داده ای int یا float را بتوان به یکدیگر تبدیل کرد، از توابع int() و float() استفاده می شود، اما زمانی که مفسر پایتون به یک عبارت محاسباتی که عملیاتی را بر روی انواع مختلف انجام می دهد،  برخورد می کند(برای مثال جمع یه مقدار int با یک مقدار عددی از نوع  float) یک سلسله مراتب برای انواع داده های عددی آن قائل می شود؛ به این صورت که اولویت را به ترتیب به نوع داده ی مختلط، اعشاری، صحیح، و بولی می دهد.  بنابراین برای محاسبه جواب، نوع داده ای با بالاترین اولویت را انتخاب کرده، انواع دیگر را به این نوع تبدیل می کند و عملیات را انجام می دهد (در مثال زیر اولویت یک عدد اشاری از یک عدد صحیح بالاتر است).
 

>>> int (ー2・5)

-2

>>> float(3)

3.0

>>> type (1 + 5.0)

<type 'float’>

>>>
 
 

داده های عددی در پایتون (Python)

عملیات پردازش روی داده ها بواسطه ی به کارگیری عملگرها و توابع امکان پذیر است. از نماد = برای انتساب object به متغیر استفاده می شود. این نماد بیانگر یک Operator یا عملگر است که عملیات انتساب را روی دو  Operand یا عملوند که در سمت چپ و راست آن قرار دارند انجام می دهد. در پایتون با استفاده از (,) می توان همزمان چندین مقدار را به چندین متغیر اختصاص داد.
عملگرهای (-  +  *  /  %  ** ) به ترتیب برای محاسبه تفاضل، جمع، ضرب، تقسیم و محاسبه باقیمانده و به توان رساندن  مقادیر عددی به کار می رود.
(== ) عملگر برابر (Equality) عملوندهای سمت چپ و راست خود را بررسی می کند و در صورت برابر بودن مقدار True و در غیر این صورت مقدار False را بر می گرداند. توجه داشته باشید که این عملگر را با انتساب (=) اشتباه نگیرید.
(=! ) عملگر نابرابری یا (Difference) عملوندهای سمت چپ و راست خود را بررسی می کند و بر خلاف عملگر == در صورت برابر بودن مقدار False و در غیر این صورت مقدار True را بر می گرداند.
در زمان استفاده از عملگرهایی مانند =+،  =<،  ==، و ... که از دو نماد تشکیل شده اند بین دو نماد آن ها از کاراکتر فاصله یا Space استفاده نکنید، چون در صورت عدم رعایت این شرط با خطای سینتکسی برخورد می کنید.
ترتیب اجرای عملیات بر روی مقادیر عددی را می توان به صورت (PEMDAS) در نظر گرفت به این معنا که اگرترکیبی از عملگرهای مختلف را داشته باشیم، اول اولویت پرانتز (parenthesis) از همه عملگرها بالاتر است و سپس به ترتیب توان (exponentiation)، ضرب (mulitiplication)، تقسیم (division)، جمع (addition)و تفریق (subtraction).
در نسخه ی پایتون 3.5، مفسر پایتون حاصل تقسیم اعداد صحیح را به صورت اعشاری نمایش می دهد در صورتی که در نسخه های پایین تر این مقادیر را گرد می کند و حاصل را به صورت یک عدد صحیح نشان می داد. در صورتی که بخواهیم خارج قسمت تقسیم را به صورت گرد شده -بدون ارقام اعشاری- به دست آوریم، می توانیم از عملگر(// ) استفاده کرد که خارج قسمت گرد شده را به عنوان حاصل عملیات بر می گرداند.

>>> 11 / 2

5.5

>>> 11 // 2

5

>>> -11 // 2

-6

>>> 11.0 // 2

5.0

>>> 11 ** 2

121

>>>11% 2

1
 
عملگرهای + و – می توانند تنها با یک عملوند در سمت راست خود ظاهر شوند. در این صورت عملگر + علامت عملوند خود را تغییر نخواهد داد، اما عملگر – عملوندی با مقدار مثبت را به منفی و عملوندی با مقدار منفی را به مثبت تغییر می دهد.

>>> a = -4

>>> +a

-4

>>> -a

4

>>> 

 
 
 
برای اعمال عملیات ریاضی پیچیده تردر پایتون می توان از ماژول های math و fractions  که در کتابخانه های استاندارد پایتون وجود دارد، استفاده کرد. از ماژول های پیچیده و پرکاربرد دیگر numpy و scipy هستند.
برای استفاده از یک ماژول باید نام آن را با استفاده از کلمه کلیدی import به برنامه اضافه کرد.
در مثال های زیر نحوه استفاده از دو ماژول math و fractions  آمده است. 

ماژول fractions

برای تعریف یک عدد کسری، یک شیء از نوع fractions ساخته شده و صورت و مخرج کسر به آن پاس داده می شود. بعد از ایجاد این شیء، اعمال هر نوع عملگر مربوط به مقادیر عددی بر روی آن امکان پذیر است. 
توجه: پس از ایجاد یک کسر، چنانچه آن کسر قابل ساده شدن باشد، ساده شده کسر را بر می گرداند.
در صورت ایجاد کسری با مخرج صفر، با خطای تقسیم بر صفر مواجه خواهید شد.

>>> import fractions

>>> a = fractions. Fraction (1,3)

>>> a

Fraction (1, 3)

>>>  a  -  3

Fraction (-8, 3)

>>> fractions. Fraction (0,0)

Traceback (most recent call last):

 File "<pyshell#103>", line 1, in <module>

    fractions. Fraction (0,0)

 File "C:\Python 27\lib\fractions.py", line 162, in__new__

     raise ZeroDivisionError('Fraction(%s, O)' % numerator)

Zero Division Error: Fraction(0, 0)

>>> fractions.Fraction(0,5)

Fraction(0, 1)

>>> 

>>> fractions. Fraction(10,5)

Fraction(2, 1)

 

ماژول math

این ماژول برای عدد π مقدار ثابتی تعیین کرده است. همچنین دارای تمام توابع مثلثاتی پایه مانند sin، cos، tan و انواع دیگری از جمله asin() می باشد.

>>> import math

>>> math.pi

3.141592653589793

>>> math.Sin(math.pi / 2)

1.O

>>> math.tan(math.pi / 4)

O.9999999999999999

 
در پایتون وقتی از یک ماژول استفاده کرده باشید، برای صدا زدن تابعی از آن کافی است نام ماژول را به همراه علامت (.) بنویسید، با فشردن کلید tab، لیستی از توابع آن ماژول نشان داده می شود.
توابع در پایتون
 

رشته ها در پایتون (Strings)

رشته (string) دنباله مرتبی از داده های کاراکتری است و ایجاد رشته ای مانند (“python”) به معنای ایجاد آرایه ای از کاراکترها می باشد که با استفاده از علامت کروشه می توان به کاراکترهای درون رشته دسترسی پیدا کرد و بسته به نوع کار مورد نظر می توان از دابل کوتیشن(") یا تک کوتیشن(') استفاده کرد. 
توجه: "docstring"  امکان دیگری در پایتون برای ارائه توضیح بیشتر درباره کدهای برنامه است. متن Docstring توسط سه علامت نقل قول (""" یا ''') شروع و پایان می‌یابد و معمولا از آن به عنوان نخستین دستور در ماژول، کلاس، تابع و متد استفاده می‌شود که در این شرایط Docstring توسط مفسر نادیده گرفته نمی‌شود و در زمان اجرا نیز با استفاده از صفت __doc__ قابل دستیابی است:
Docstringها در هر جای دیگری از کدهای برنامه نیز به عنوان جایگزینی برای توضیح‌های چند سطری قابل استفاده هستند که در این حالت مفسر آن‌ها نادیده گرفته و دیگر قابل دستیابی نیستند.

توابع و متد های پایتون (Python)

تابع len() طول رشته (تعداد کاراکترهای موجود در رشته) را بر می گرداند.
در پایتون، space مانند هر کاراکتر دیگری، یک کاراکتر معتبر به حساب می آید.
برای آنکه متدی برای یک object صدا زده شود، از علامت (.) استفاده می شود. در ادامه برخی متدهای پرکاربرد برای رشته توضیح داده شده است.
متد upper() یک رشته را دریافت کرده و یک رشته جدید بر می گرداند که در آن تمامی حروف به حروف بزرگ تبدیل شده اند و برعکس تابع lower() تمامی حروف رشته را به حروف کوچک تبدیل می کند.
برای اتصال دو یا چندین رشته به هم از عملگر (+) و برای تکرار دنباله ها  بدون space از (*)استفاده می شود. عملگر * داده ی استرینگی را که در یک طرف آن قرار دارد (و مهم هم نیست که در کدام طرف باشد) به تعداد عملوندی که در سمت دیگر آن با مقدار صحیح قرار دارد تکرار می کند. اگر مقدار این عدد صحیح 0 یا یک عدد منفی باشد خروجی نهایی استرینگی تهی خواهد بود.
به منظور تبدیل یک مقدار به نوع رشته ای (type casting) از تابع str() استفاده می شود.

>>> s = “python”

>>> s

‘python’

>>> a = 'learning'

>>> a

'learning'

>>> len(s)

6

>>> s.upper()

'PYTHON'

>>> a + s

'learningpython'

>>> a + ' ' + s

'learning python'

 
 
همچنین در پایتون به منظور فرمت دهی رشته ها می توان از متد format() استفاده کرد. مقادیر یا متغیرهایی برای درج در رشته با کاما از هم جدا می‌شوند و از آکولاد به عنوان نگهدارنده استفاده می‌شود. این متد را برای فرمت دهی های پیچیده می توان به کار برد، اما در اینجا مثال ساده ای از آن آمده است که {0} با اولین آرگومان و {1}با آرگومان دوم موجود در متد format() جایگزین می شود( موقعیت ها از ایندکس صفر شروع می‌شوند ). اگر فقط جایگزینی در رشته ها مدنظر باشد، و نه فرمت دهی آنها، لازم نیست عددی درون آکولادها قرار داده و از آکولادهای خالی استفاده می شود.
برای فرمت دهی دقیق تر می توان درون آکولاد ابتدا جایگاه پارامتر مورد استفاده را نوشت، سپس یک دو نقطه قرار داد و پس از آن، فرمت دهنده را وارد کرد. درون آکولاد نبایستی فاصله‌ای قرار داد. برای مثال {1:s} از مفسر می خواهد که این پارامتر را با موقعیت پارامتری 1 که یک مقدار رشته ای است جایگزین کنیم (فرمت دهندهs  می‌باشد چون مقدار مورد نظر رشته ای است). همچنین {0:.1f}به پارامتر موجود در موقعیت 0 که یک مقدار اعشاری است اشاره می کند. {0:d}به پارامتر موجود در موقعیت 0 که یک مقدار عددی است اشاره می کند.

 

>>> session_no = 'first'

>>> course = 'python'

>>> "this is the {O} course of {1}". forma(session_no, course)

'this is the first course of python'

 

>>> "this is the {} course of {}".format(session_no, course)

"this is the first course of python"

>>> 

>>> '{0:.if} {1}'. format(698.24, 'GB')

'698.2 GB'

>>> '{0:d} days ago was {1:s}'. format (2, 'Sunday')

'2 days ago was Sunday'

 
 
 
متد split() براساس کاراکترهای داده شده، رشته اصلی را به زیر رشته هایی تقسیم می کند و خروجی را به صورت یک لیست برمی گرداند.

>>> query = 'user=Tom&database=master&password=1234'

>>> l= query.split ('&')

>>> l

['user=Tom', 'database=master', 'password=1234']

Slicing در پایتون

در پایتون وقتی یک رشته تعریف می شود، می توان عملیات slicing را بر روی رشته اولیه انجام داد وهر زیر مجموعه ای از آن را به عنوان یک رشته جدید در نظر گرفت. Slicing در مورد رشته ها به منزله انجام عملیات بر روی آرایه ها (لیست ها) می باشد.
 برای تعیین محدوده ای از رشته که مدنظر است، از اندیس استفاده می شود که این اندیس ها می توانند مثبت یا منفی باشند. اولین اندیس از سمت چپ برابر صفر و اولین اندیس از سمت راست برابر منفی یک است. برای مثال s[0:2] دو عنصر اول رشته که دارای اندیس های 0 و 1 هستند را بر می گرداند (دقت کنید این زیر رشته عنصری که در s[2] قرار دارد را شامل نمی شود). اگر اندیس سمت چپ در زیر رشته جدید، 0 باشد نیازی به نوشتن آن نیست، به عبارتی s[0:9] معادل s[:9] می باشد. هم چنین اگر اندیس سمت راست برابر طول رشته باشد، نیازی به نوشتن آن نیست، برای مثال در مورد رشته ‘python’ با طول 6 عبارت s[2:] با s[2:6] معادل است. 
با توجه به مطالب فوق می توان نتیجه گرفت که عبارت s[:] را برای برگرداندن کل رشته می توان استفاده کرد.

>>> a_str = 'python is an easy language'

>>> a_str[:]

'python is an easy language'

>>> a_str[0:6]

'python'

>>> a_str[:6]

'python'

>>> a_str[13:]

'easy language'

>>> a_str[-8: -1]

'languag'

 
 
متد replace() برای جایگزین کردن مقداری به جای یک قسمت از رشته به کار می رود. برای فراخوانی آن، نام متد به همراه (.) بعد از نام رشته آورده می شود. اولین پارامتر قسمتی از رشته که می خواهیم آن را تغییر دهیم  و دومین پارامتر نیز رشته ای که قرار است جایگزین رشته فعلی شود، می باشد. 

>>> a_str.replace(a_str[0:6],  'c#')

'c# is an easy language'

 

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس