هنر برنامه نویسی با پایتون ، بخش ششم : آشنایی با دستور range ، عملگرهای عضویت ، تبدیل نوع و گرفتن ورودی از کاربر

یک دنباله عددی ، رشته ای از اعداد است که در آن  هر عدد با افزودن یک عدد ثابت مخالف با صفر به عدد پیش از خود بدست می آید. برای نمونه رشته اعداد 3, 6, 9, 12, 15  یک دنباله عددی است که با عدد 3 آغاز شده و با گامهای افزایشی 3 واحدی رشد کرده است. یعنی هر عدد با افزودن عدد 3 به عدد قبلی بدست آمده است. آخرین عدد این دنباله یعنی عددی که دنباله در آن پایان یافته است. عدد 15 است. در زبان برنامه نویسی پایتون ، برای ساخت دنباله ای از اعداد دلخواه از دستور range() استفاده می شود. واژه درست تر برای اشاره به این دستور ، تابع range()  است که پیش از آشنایی با مفهوم تابع در زبان های برنامه نویسی ما همچنان از واژه دستور استفاده خواهیم کرد. 

 

  در حالت کلی شیوه نگارش و الگوی بکارگیری  این دستور ارزشمند به شکل زیر است :

range(start, stop, step)

همانگونه که دیده می شود این دستور دارای سه ورودی به نام های start  ، stop و step است که به ترتیب زیر شرح داده می شوند :

 start    نخستین عددی که دنباله باید از آن شروع شود را مشخص می کند. مقداردهی به این گزینه اختیاری است و چنانچه برنامه نویس مقدار این گزینه را تعیین نکند دنباله عددی ساخته شده از صفرشروع خواهد شد.

Stop   مقدار این گزینه باید یک واحد بیش از آخرین عددی باشدکه برنامه نویس می خواهد در دنباله تولید شود برای مثال چنانچه این گزینه با عدد 8 مقدار دهی گردد ، آخرین عدد تولید شده در دنباله یک واحد کمتر ، یعنی عدد 7 خواهد بود. لازم به گفتن است  است که  مقدار دهی به این گزینه اجباری است.

Step   این گزینه گام افزایش start را مشخص می کند. این گزینه اختیاری است و چنانچه برنامه نویس مقدار این گزینه را تعیین نکند مقدار start با گام های یک واحدی افزایش خواهد یافت.  برای مثال دستور range(1,8,2) دنباله عددی   7 ، 5 ، 3 ، 1  را تولید می کند. همانگونه که دیده می شود این دنباله عددی از عدد 1 آغاز شده و با گامهای دو واحدی افزایش می یابد و با عدد 7  به پایان می رسد.

مثال : دستور range(6) دنباله عددی زیر را تولید می کند :

0, 1, 2, 3, 4, 5

در مثال بالا گزینه های start و step مقداردهی نشده اند بنابراین دستور range مقادیر پیش فرض این گزینه ها را استفاده خواهد کرد. یعنی دنباله عددی را با شروع از عدد صفر و با گام های افزایشی یک واحدی که با عدد 5 پایان می پذیرد خواهد ساخت

مثال :

range(1,8,3) 

 # output is  1, 4, 7

مثال :

range(3,10)

# output is  3, 4, 5, 6, 7, 8, 9

مثال :

range(3, 20, 2)

# output is    3, 5, 7, 9, 11, 13, 15, 17, 19

  مثال :

range(15)

# output is   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14

 

 

عملگرهای عضویت :

در پایتون به دو عملگر in و not in عملگرهای عضویت گفته می شود چرا که این دو عملگر وجود و یا عدم وجود یک مقدار داده شده را در یک دنباله از عناصر بررسی می کنند.  .برای مثال می دانیم که یک رشته دنباله ای از عناصر به نام نویسه(character) است و یا نتیجه دستور range() دنباله ای از اعداد است. بنابراین برای بررسی اینکه آیا نویسه خاصی در یک رشته وجود دارد یا نه ؟  می توان از عملگر های عضویت استفاده کرد. دیگر انواع داده ای زبان برنامه نویسی پایتون که دنباله ای از مقدارها هستند و می توان آنها را به همراه عملگرهای عضویت بکار برد عبارتند از : list ،  tuple ، set ، dict و range

 

عملگر  in :

با استفاده از عملگر in   می توان به این پرسش پاسخ داد که آیا یک مقدار مشخص در بین عناصر تشکیل دهنده یک دنباله وجود دارد یا خیر ؟ چنانچه عملگر in بتواند مقدار داده شده را در دنباله مورد نظر پیدا کند مقدار منطقی درست (True)  را برمی گرداند و در غیر این صورت مقدار منطقی نادرست (False) برگشت داده خواهد شد. برای مثال می دانیم که یک رشته دنباله ای از عناصر به نام نویسه (character) است. بنابراین برای بررسی وجود یک نویسه خاص در یک رشته می توان از عملگر in استفاده کرد.

 

مثال :

string1="Nothing in the world is single"

print("w" in string1)   # output is True

print("T" in string1)  #  output is False

مثال :

FullName="Mohammad Izanlou"

if "m" in FullName :

    print("yes")

else:

    print("No")

 

# output is yes

عملگر not in  :

هر چند که خروجی منطقی عملگر not in  عکس عملگر in است اما فلسفه وجودی و شیوه کار هردو یکسان است به بیان ساده تر با استفاده از عملگر not in می توان وجود نداشتن یک مقدار مشخص در بین عناصر تشکیل دهنده یک دنباله رابررسی کرد. چنانچه عملگر not in نتواند مقدار داده شده را در دنباله مورد نظر پیدا کند مقدار منطقی درست (True)  را برمی گرداند و در غیر این صورت مقدار منطقی نادرست (False)  برگشت داده خواهد شد.برای مثال می دانیم که یک رشته دنباله ای از عناصر به نام نویسه (character) است. بنابراین برای بررسی عدم وجود یک نویسه خاص در یک رشته می توان از عملگر not in استفاده کرد.

مثال :

 

string1="Nothing in the world is single"

print("w" not in string1)   # output is False

print("T" not in string1)  #  output is True

 

  

دستور input  :

در بسیاری از برنامه های کاربردی ، داده های مورد نیاز برنامه به وسیله کاربر فراهم می گردد و داد و ستد داده ای کاربر و برنامه مهمترین شکل از برهم کنش و تعامل انسان و نرم افزار است از این رو زبان برنامه نویسی باید دارای ابزارهای لازم برای دریافت ورودی از کاربر باشد. برای دست یابی به این هدف ، مفسر پایتون  دستور ( به بیان درست تر تابع) input() را فراهم آورده است. این دستور برای دریافت ورودی از کاربر استفاده می شود.  و حالت کلی نگارش و الگوی بکارگیری آن به شکل زبر است :

Variable = input(prompt)

Variable نام متغیری است که مقدار ورودی گرفته شده از کاربر به صورت یک رشته (string) در آن ذخیره خواهد شد.

prompt   تنها ورودی دستور input است و در بردارنده پیامی است که برنامه نویس می خواهد به کاربر نمایش داده شود . مقدار  این ورودی باید از نوع رشته (string) باشد. مقداردهی به این ورودی دلخواه است و برنامه نویس  می تواند آن را خالی رها کند.

مثال :

CountryName=input("نام کشور محل تولد خود را وارد کنید :")

print(CountryName)

هنگامی که اجرای کد پایتون به دستور input() می رسد، مفسر پایتون با نمایش پیغام مورد نظر برنامه نویس که همان مقدار اختصاص داده شده به گزینه prompt است منتظر می ماند تا کاربر، ورودی مورد نظر خود را وارد کند. پس از آنکه کاربر مقدار مورد نظر خود را وارد کرد می تواند با زدن کلید Enter پایان ورود اطلاعات را به دستور input اعلام کند. پس از این ، دستور input مقدار وارد شده توسط کاربر را به صورت یک مقدار از نوع رشته در متغیر variable ذخیره می کند. و مفسر پایتون اجرای برنامه را از دستور پس از input از سر می گیرد.

مثال : قطعه کد زیر با نمایش پیام Please Enter Your Fist Name: منتظر ورود یک مقدار از طرف کاربر می ماند ، کاربر نام مورد نظر خود را وارد کرده و با زدن کلید Enter در صفحه کلید ، مقدار وارد شده توسط کاربر در متغیر FirstName ریخته می شود و با اجرای خط بعدی ، مقدار متغیر FirstName توسط دستور print در خروجی صفحه نمایش چاپ خی شود.

FirstName=input("Please Enter Your Fist Name :")

print(FirstName)

 

نکته بسیار مهمی که لازم است بدانید این است که دستور input ، ورودی وارد شده توسط کاربر را به صورت یک رشته (string)  تفسیر می کند . به بیان ساده تر ، خروجی دستور input یک مقدار از نوع رشته ای (string) است. از این رو داده های عددی وارد شده توسط کاربر باید با استفاده از دستورات تبدیل نوع مناسب ، به نوع عددی مورد نظر تبدیل شوند.

مثال : با فرض اینکه در قطعه کد زیر کاربر ، نخستین ورودی را عدد 25  و ورودی دوم را عدد 60 وارد کند خروجی دستور print رشته "2560" است در حالی که مجموع دو عدد 25 و 60  عدد 85  است :

num1=input("Please Enter Your First Number:")

num2=input("Please Enter Your Second Number:")

sum = num1 + num2

print(sum)

مثال : قطعه کد زیر همان کد نوشته شده در مثال قبلی است با این تفاوت که با استفاده از دستور تبدیل نوع ، ورودی های وارد شده توسط کاربر که به ترتیب عددهای 25 و 60 هستند به نوع عددی int تبدیل شده اند . بنابراین خروجی دستور print عدد  85   خواهد بود.

 

num1=input("Please Enter Your First Number:")

num2=input("Please Enter Your Second Number:")

sum= int(num1) + int(num2)

print(sum)

مثال بالا را می توان به شکل زیر نیز بازنویسی کرد در این مثال با قراردادن دستور input() درون دستور int()  ورددی دریافت شده از کاربر ابتدا به نوع عدد صحیح تبدیل شده و سپس در متغیرهای num1 و num2 قرار می گیرند :

num1 = int (input("Please Enter Your First Number:") )

num2 = int (input("Please Enter Your Second Number:") )

sum= num1 + num2

print(sum)

 

تبدیل نوع  (Type Casting):

همانگونه که می دانید نوع داده ، تعیین کننده  عملیاتی است که می توان بر روی داده انجام داد برای مثال عملیات ریاضی ضرب و تقسیم بر روی نوع داده اعداد صحیح (int) و یا اعداد اعشاری (float) قابل اجراست اما بر روی نوع داده رشته ای (string) قابل اجرا نیست از این رو اجرای دستوری چون  X = "2" * "5"  در پایتون موجب تولید خطا خواهد شد حال چنانچه نوع داده اطلاعات ورودی به برنامه متفاوت از نوع داده متناسب با عملیات کد نویسی شده در برنامه باشد ، برنامه نویس ناچار است که با استفاده از ابزارهایی که پایتون فراهم آورده یک نوع داده را به نوع داده دیگری تبدیل کند . که به این نوع تبدیل نوع ، تبدیل نوع صریح گفته می شود برای مثال ، همان گونه که می دانید خروجی دستور input یک مقدار از نوع رشته (string) است. از این رو داده های عددی که کاربر با استفاده از این دستور به برنامه وارد می کند را باید با بهره گیری از دستورات تبدیل نوع ، به نوع عددی مناسب تبدیل کرد.

دستورات تبدیل نوع صریح در پایتون :

 Int()   این دستور نوع داده ورودی خود را به نوع داده عدد صحیح (int) تبدیل می کند ورودی این دستور می تواند یک عدد صحیح ، یک عدد اعشاری و یا رشته ای شامل ارقام 0 تا 9  باشد.

 مثال : در مثال زیر مفسر پایتون با رسیدن اجرای کد به خط x = "2" نوع داده متغیر x را از نوع رشته (string) در نظر خواهد گرفت اما با رسیدن اجرا به خط x = int(x) نوع داده ای آن به نوع int تغییر خواهد یافت. که این موضوع در خروجی دستور print(type(x)) به روشنی دیده می شود.

 

 x="2"

print(type(x))

#output is <class 'str'>

x=int(x)

print(type(x))

#output is  <class 'int'>

 

مثال : برنامه زیر دو عدد را از کاربر گرفته و حاصلضرب آن دو را چاپ می کند :

num1=input("Please Enter Your First Number:")

num2=input("Please Enter Your Second Number:")

mul= int(num1) * int(num2)

print(mul)

مثال :

x = int(1)             # x will be 1

y = int(2.8)         # y will be 2

z = int("51" )     # z will be 51

  

float()   این دستور نوع داده ورودی خود را به نوع داده عدد اعشاری (float) تبدیل می کند. ورودی این دستور می تواند یک عدد صحیح ، یک عدد اعشاری و یا رشته ای شامل ارقام 0 تا 9  باشد.

 مثال : در مثال زیر مفسر پایتون با رسیدن اجرای کد به خط x = "4.5" نوع داده متغیر x را از نوع رشته (string) در نظر خواهد گرفت اما با رسیدن اجرا به خط x = float(x) نوع داده ای آن به نوع float تغییر خواهد یافت. که این موضوع در خروجی دستور print(type(x)) به روشنی دیده می شود.

 

مثال :

x="4.5"

print(type(x))

#output is <class 'str'>

x=float(x)

print(type(x))

#output is  <class 'float'>

مثال : برنامه زیر با دریافت شعاع یک دایره ، مساحت و محیط دایره را در خروجی صفحه نمایش چاپ خواهد کرد.

pi=3.14

r = float(input("Please Enter Circle Raduis:"))

c = pi * 2 * r

s = r * r * pi

print(c)

print(s)

  مثال :

 

x = float(5)                 # x will be 5.0

y = float (2.8)            # y will be 2.8

z = float ("17.3" )      # z will be 17.3

str()   این دستور نوع داده ورودی خود را به نوع داده رشته (string) تبدیل می کند. ورودی این دستور می تواند یک عدد صحیح ، یک عدد اعشاری و یا یک رشته باشد.

 مثال : در مثال زیر مفسر پایتون با رسیدن اجرای کد به خط x = 35 نوع داده متغیر x را از نوع عدد صحیح (int) در نظر خواهد گرفت اما با رسیدن اجرا به خط x = str(x) نوع داده ای آن به نوع string تغییر خواهد یافت. که این موضوع در خروجی دستور print(type(x)) به روشنی دیده می شود.

 x = 35

print(type(x))

#output is <class 'int'>

x=str(x)

print(type(x))

#output is  <class 'str'>

مثال :

 

x = str(5)                 # x will be '5'

y = str (2.8)            # y will be '2.8'

z = str ("ABC" )      # z will be 'ABC'

 تبدیل نوع ضمنی :

در این نوع تبدیل مفسر پایتون به صورت خودکار یک نوع داده را به نوع دیگر تبدیل می کند در این فرآیند نیازی به دخالت برنامه نویس نیست. برای نمونه در مثال زیر متغیر int_num از نوع عدد صحیح (int) ومتغیر float_num از نوع عدد اعشاری (float) است از این رو مفسر پایتون با رسیدن اجرای کد به خط   sum = int_num + float_num با هدف پیشگیری از ازدست رفتن داده ها ابتدا نوع داده متغیر int_num را به نوع float تبدیل کرده و سپس حاصل جمع مقدار دو متغیر float را در متغیر sum ذخیره می کند. با اجرای دستور print(type(sum)) دیده می شود که نوع داده متغیر sum هم float است زیرا پایتون همواره نوع داده کوچکتر (در این مثال int) را به نوع داده بزرگتر (در این مثال float) تبدید می کند. به بیان دیگر پایتون امن بودن تبدیل ضمنی و پیشگیری از ازدست رفتن داده ها را تضمین می کند. برا ی درک بهتر مطلب فرض کنید که در مثال زیر مفسر پایتون  متغیرfloat_num را به نوع عددی کوچکتر (در این مثال int)   تبدیل می کرد آنگاه مقدار ذخیره شده در متغیر float_num یعنی عدد اعشاری 12.8  به نوع عددی صحیح یعنی عدد 12 تبدیل می شد و در نتیجه حاصل جمع ذخیره شده در متغیر sum عدد 37 است و این به معنای از دست رفتن بخش اعشاری جواب یعنی 0.8  است.

 مثال :

 

int_num=25

float_num=12.8

print(type(int_num))        #output is  <class 'int' >

print(type(float_num))    #output is  <class 'float' >

 

sum = int_num + float_num

print(type(sum))    #output is  <class 'float' >

print(sum)           #output is  37.8

مثال : در مثال زیر پایتون نمی تواند نوع متغیر x را که یک رشته است به صورت ضمنی به نوع عدد صحیح تبدیل کند و در نتیجه پردازش  z = x + y با شکست روبرو شده و یک خطا اعلام خواهد شد.

x = "5"

y = 16

z = x + y

برای جلوگیری از رخ دادن خطا ، برنامه نویس باید ازروش تبدیل نوع صریح استفاده کند :

x = "5"

y = 16

z = int(x) + y

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

 

نام دستور

عملکرد دستور

Str()

تبدیل ورودی دستور به نوع رشته ای

int()

تبدیل ورودی دستور به عدد صحیح

float()

تبدیل ورودی دستور به نوع عدد اعشاری

complex()

تبدیل ورودی دستور به نوع عدد مختلط

list()

تبدیل ورودی دستور به نوع list

tuple()

تبدیل ورودی دستور به نوع tuple

range()

تبدیل ورودی دستور به نوع range

dict()

تبدیل ورودی دستور به نوع dict

set()

تبدیل ورودی دستور به نوع set

frozenset()

تبدیل ورودی دستور به نوع frozenset

bool()

تبدیل ورودی دستور به نوع منطقی

bytes()

تبدیل ورودی دستور به نوع bytes

bytearray()

تبدیل ورودی دستور به نوع bytearray

memoryview()

تبدیل ورودی دستور به نوع memoryview

پایان بخش ششم

محمد ایزانلو

اردیبهشت 1401

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.