آموزش تبدیل انواع داده در پایتون (Data Type)
در این مقاله میخوانید
Data Typeها در زبان برنامهنویسی پایتون برای طبقهبندی نوع خاصی از دادهها و تعیین مقادیری که میتوان به یک داده اختصاص داد و عملیاتی که میتوانید روی داده انجام دهید، استفاده میشوند. بااینحال، گاهی اوقات هنگام برنامهنویسی نیاز پیدا خواهید کرد که نوع داده را تغییر دهید. برای مثال، ممکن است بخواهید مقادیر عددی را در String نشان دهید یا ارقام اعشاری را در Data Type از نوع Integer قرار دهید که مخصوص اعداد صحیح است. در این مواقع، لازم است بتوانید Data Typeهای مختلف را بههم تبدیل کنید. باتوجهبه اهمیت این موضوع در برنامهنویسی، در این مقاله از آموزش برنامهنویسی بلاگ پارس پک قصد داریم نحوه تبدیل انواع داده در پایتون مانند عددها، رشتهها، تاپلها و لیستها را با ذکر مثال به شما آموزش دهیم؛ پس تا پایان با این مقاله همراه باشید.
پیشنیازها
برای اینکه بتوانید از این مقاله آموزشی استفاده کنید و مراحل آن را گامبهگام انجام دهید، باید پایتون 3 و محیط برنامهنویسی را روی سیستم خود نصب کرده باشید.
تبدیل اعداد در پایتون
در پایتون نیز مانند بیشتر زبانهای برنامهنویسی، دو Data Type عددی وجود دارد: یکی اعداد صحیح (Integer) و دیگری اعداد اعشاری (Float). گاهی وقتها ممکن است روی کد نوشتهشده فرد دیگری کار کنید و متوجه شوید که نوع Data Type متغیر عددی مثلاً بهصورت صحیح تعریف شده؛ اما نوع پروژه بهگونهای است که به متغیر اعشاری نیاز دارید. خوشبختانه زبان برنامهنویسی پایتون شیوههای داخلیای دارد که با استفاده از آنها بهراحتی میتوانید اعداد Float را به Integer و برعکس تبدیل کنید.
برای آشنایی با هاست پایتون مقاله زیر را بخوانید.
۱. تغییر اعداد Integer به Float در پایتون
متد float () در پایتون اعداد Integer را به Float تبدیل میکند. برای استفاده از این تابع، باید یک عدد صحیح را در پرانتز اضافه کنید:
float(57)
در این مثال، عدد ۵۷ به ۵۷.۰ تبدیل خواهد شد. همچنین، میتوانید از یک متغیر در این متد استفاده کنید. بهعنوان نمونه، ما متغیر f را برابر با ۵۷ تعریف و سپس آن را به Float تبدیل و درنهایت آن را چاپ میکنیم:
f = 57 print(float(f))
خروجی این کد، بهصورت زیر خواهد بود:
Output
57.0
بنابراین با استفاده از تابع float ()، میتوانید اعداد صحیح (Integer) را به اعشاری (Float) تبدیل کنید.
پایتون چیست و چرا محبوب است؟ چرا باید کدنویسی در پایتون را یاد بگیریم؟ در مقاله زیر بخوانید.
۲. تبدیل اعداد Float به Integer در پایتون
با استفاده از تابع int () نیز میتوانید اعداد Float را به Integer تبدیل کنید. این تابع مشابه تابع float () عمل میکند. بهعبارتدیگر، برای استفاده از این تابع کافی است که عددی اعشاری را داخل پرانتز قرار دهید تا به عددی صحیح تبدیل شود:
int(390.8)
در مثال بالا، عدد ۳۹۰.۸ به عدد ۳۹۰ تبدیل خواهد شد. شما میتوانید این تابع را نیز مستقیماً برای متغیرها استفاده کنید. بهعنوان مثال، فرض کنید میخواهیم مقدار متغیر b را برابر با ۱۲۵.۰ و متغیر c را برابر با ۳۹۰.۸ تعریف کنیم. کدهای زیر باعث میشوند که این متغیرها به مقدار صحیح تبدیل شوند:
b = 125.0 c = 390.8 print(int(b)) print(int(c))
خروجی این کدها بهصورت زیر خواهد بود:
Output
125 390
نکتهای که باید به آن توجه کنید، این است که پس از تبدیل مقدار عدد اعشاری به صحیح، رُندکردن انجام نمیشود. بهعبارتدیگر، حتی اگر عدد Float شما برابر با ۳۹۰.۸ هم باشد، با قراردادن این عدد در تابع int ()، خروجی برابر با ۳۹۰ خواهد بود و نه ۳۹۱.
۳. تبدیل اعداد حاصل از تقسیم
در پایتون 3 برخلاف پایتون 2، هنگامیکه دو عدد صحیح را بر هم تقسیم میکنید، حاصل عددی اعشاری خواهد بود. برای مثال، وقتی عدد ۵ را بر ۲ تقسیم میکنید، در پایتون 3 عدد ۲.۵ را بهعنوان خروجی دریافت خواهید کرد. بااینحال در پایتون 2، باتوجهبه اینکه دو عدد صحیح بر هم تقسیم شده است، خروجی نیز عددی از نوع int خواهد بود. بههمیندلیل، در پایتون 2 دقیقاً برای همین تقسیم، عدد ۲ را بهعنوان خروجی دریافت خواهید کرد:
a = 5 / 2 print(a)
Output
2.5
تبدیل رشته (String) در پایتون
یکی از انواع متداول Data Typeها در تمامی زبانهای برنامهنویسی، رشته یا String است. هر رشته دنبالهای از یک یا چند کاراکتر است که میتواند حروف یا اعداد یا علائم خاص باشد. در اغلب مواقع، بهخصوص مواقعی که Data را مستقیماً از سمت کاربر دریافت میکنید، نیاز خواهید داشت تا رشته را به عدد یا عدد را به رشته تبدیل کنید.
۱. تبدیل عدد به رشته در پایتون
با استفاده از متد str ()، میتوانید اعداد را به رشته تبدیل کنید. برای این منظور، کافی است عدد یا متغیری که عدد در آن ریخته شده است، در پرانتز قرار دهید. در این صورت، مقدار آن عدد یا متغیر به رشته تبدیل خواهد شد.
اجازه دهید این کار را با عدد صحیح شروع کنیم. بهعنوان نمونه، برای تبدیل عدد صحیح ۱۲ به یک رشته، میتوانید این عدد را به متد str () ارسال کنید. نحوه انجام این کار بهصورت زیر است:
str(12)
خروجی این کد، بهصورت زیر خواهد بود:
Output
’12’
کوتیشنهای قرارگرفته در دو طرف ۱۲ نشان میدهد که ۱۲ دیگر عدد نیست و بهصورت رشته درآمده است.
مثال واقعی از زمانیکه نیاز داریم تا عدد را به رشته تبدیل کنیم، هنگامی است که قصد داریم از آن عدد در رشتهای بلندتر استفاده کنیم. بهعنوان مثال، فرض کنید شما متخصص برنامهنویسی در شرکت خود استخدام کردهاید و میخواهید در پایان روز به او بگویید که چند خط کد نوشته است. برای این منظور، ممکن است فکر کنید که کدهای زیر همان چیزی است که شما را به نتیجه دلخواهتان خواهد رساند:
user = "Sammy" lines = 50 print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")
در این مثال، فرض شده است که برنامهنویس شما Sammy نام دارد و او در یک روز کاری، ۵۰ خط کد نوشته است؛ اما خروجی کدهای زیر پیغام خطایی بهصورت زیر خواهد بود:
Output
TypeError: can only concatenate str (not “int”) to str
دلیل نشاندادن این پیغام خطا آن است که شما نمیتوانید رشته و اعداد صحیح را بههم متصل کنید؛ بنابراین، تنها راه این است که عدد ۵۰ را به رشته تبدیل کنید:
user = "Sammy" lines = 50 print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")
حالا وقتی کد بالا را اجرا میکنید، خروجی بهصورت زیر خواهد بود:
Congratulations, Sammy! You just wrote 50 lines of code.
تبدیل اعداد Float به رشته نیز بهصورت مشابه انجام میشود. بهعبارتدیگر، با قراردادن عدد اعشاری یا متغیری که عدد اعشاری در آن ریخته شده است، در پرانتز متد str ()، عدد به رشته تبدیل خواهد شد:
print(str(421.034)) f = 5524.53 print(str(f))
خروجی این کد نیز بهصورت زیر است:
421.034 5524.53
برای اطمینان از اینکه عدد اعشاری به رشته تبدیل شده است یا خیر، میتوانید خروجی را با یک رشته ترکیب کنید:
f = 5524.53 print("Sammy has " + str(f) + " points.")
Sammy has 5524.53 points.
همانطورکه مشاهده میکنید، خروجی بدون خطا انجام و عدد اعشاری بهدرستی به رشته تبدیل شده است.
۲. تبدیل رشته به عدد در پایتون
رشتهها نیز میتوانند به اعدادی از جنس صحیح (int) یا اعشاری (float) تبدیل شوند. اگر عدد رشته شما بدون ممیز باشد، شاید بخواهید آن را به عددی از جنس int تبدیل کنید. انجام این کار با استفاده از متد int () امکانپذیر است.
فرض کنید قرار است اختلاف بین تعداد خطوط کد نوشتهشده روز قبل و امروز Sammy، متخصص برنامهنویسی را چاپ کنید. احتمالاً قصد دارید این کار را بهصورت زیر انجام دهید:
lines_yesterday = "50" lines_today = "108" lines_more = lines_today - lines_yesterday print(lines_more)
باوجوداین، پس از اجرای این کد با پیغام خطا روبهرو خواهید شد:
Output
TypeError: unsupported operand type(s) for -: ‘str’ and ‘str’
دلیل نمایش این پیغام خطا آن است که دو مقدار عددی شما در رشته ذخیره شدهاند و عملگر منها (-) نمیتواند روی Data Type رشته اجرا شود. چاره کار این است که مقادیر عددی را با استفاده از متد int () به اعداد صحیح تبدیل کنیم. در این صورت، میتوان با استفاده از عملگر (-) تفاضل بین آنها را محاسبه کرد:
lines_yesterday = "50" lines_today = "108" lines_more = int(lines_today) - int(lines_yesterday) print(lines_more)
در این صورت، خروجی کد بهصورت زیر نشان داده میشود:
58
در این مثال، lines_more متغیری است که عدد صحیحی در آن ریخته شده و مقدار این متغیر نیز برابر با ۵۸ است. همچنین، با استفاده از متد float () میتوانید رشتههای حاوی اعداد را بهجای تبدیل به اعداد صحیح به اعداد اعشاری تبدیل کنید. اگر این کار را برای مثال بالا انجام دهیم، بهجای خروجی ۵۸، عدد ۵۸.۰ را بهعنوان خروجی دریافت خواهیم کرد:
total_points = "5524.53" new_points = "45.30" new_total_points = total_points + new_points print(new_total_points)
Output
5524.5345.30
نکته جالب اینکه استفاده از عملگر + برای رشتهها نیز امکانپذیر است؛ اما در این صورت دو عدد باهم جمع نخواهند شد؛ بلکه عملگر + باعث میشود که دو رشته عددی به یکدیگر متصل شوند. باوجوداین، اگر رشته عددی با استفاده از متد float () به عدد اعشاری تبدیل شود، استفاده از عملگر + باعث خواهد شد که دو عدد باهم جمع شوند:
total_points = "5524.53" new_points = "45.30" new_total_points = float(total_points) + float(new_points) print(new_total_points)
Output
5569.83
نکته دیگری که باید بهیاد بسپارید، این است که امکان تبدیل اعداد float به int وجود ندارد. بهعبارتدیگر، اگر این کد را بنویسید، پیغام خطا دریافت خواهید کرد:
f = "54.23" print(int(f))
Output
ValueError: invalid literal for int() with base 10: ‘54.23’
آنچه در پایان این قسمت میتوان گفت، این است که تبدیل مقادیر عددی از رشته به int یا float باعث خواهد شد تا بتوانید عملیات ریاضی را روی آنها انجام دهید.
برای آشنایی با نحوه ساخت یک برنامه ساده در پایتون ۳ و اجرا کردن آن مقاله زیر را بخوانید.
تبدیل به تاپل (Tuple) و لیست (List) در پایتون
با کمک متدهای list () و tuple () میتوانید دیتاهای ارسالشده را بهصورت List و Tuple استفاده کنید. تفاوت بین متغیرهای List و Tuple در پایتون ازاینقرار است:
- متغیر List دنبالهای مرتبشده و تغییرپذیر از عناصری است که در داخل براکت یا [ ] قرار میگیرد.
- متغیر Tuple دنبالهای از عناصری است که بهطورمرتب درکنارهم قرار میگیرند و تغییرناپذیر هستند و در پرانتز () قرار میگیرند.
۱. تبدیل به تاپل در پایتون
گاهی اوقات ممکن است بخواهید لیست را به تاپل و همینطور برعکس تبدیل کنید. بیایید موضوع را با تبدیل لیست به تاپل شروع کنیم. باتوجهبه اینکه انجام این کار Data Type تغییرناپذیری ایجاد میکند، میتواند سبب بهینهسازی چشمگیر در کدهای نوشتهشده با پایتون شود.
همچنین، فراموش نکنید که وقتی از متد tuple () استفاده میکنید، برنامه ورژن تاپل مقدار ارسالشده به متد را برمیگرداند:
print(tuple(['pull request', 'open source', 'repository', 'branch']))
Output
(‘pull request’, ‘open source’, ‘repository’, ‘branch’)
باتوجهبه اینکه خروجی کد نوشتهشده در پرانتز نشان داده شده، بهروشنی مشخص است که Data Type بهصورت تاپل درآمده است. همچنین، میتوان از این متد برای متغیرهایی استفاده کرد که درون آنها یک لیست قرار داده شده است:
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'] print(tuple(sea_creatures))
Output
(‘shark’, ‘cuttlefish’, ‘squid’, ‘mantis shrimp’)
همانطورکه مشاهده میکنید، در این مثال نیز باتوجهبه اینکه خروجی در پرانتز نشان داده شده است، نتیجه میگیریم که Data Type متغیر به تاپل تغییر داده شده است. شما میتوانید هر Type تکرارشونده (Iterable) مانند رشتهها را نیز به تاپل تبدیل کنید:
print(tuple('Sammy'))
Output
(‘S’, ‘a’, ‘m’, ‘m’, ‘y’)
گفتنی است نوشتن این کد برای Data Typeهای تکرارنشدنی مانند اعداد (چه صحیح و چه اعشاری) با پیغام خطا مواجه خواهد شد:
print(tuple(5000))
Output
TypeError: ‘int’ object is not iterable
البته حالا دیگر میدانید که اگر بخواهید مقدار عددی را به تاپل تغییر دهید، بهراحتی میتوانید ابتدا آن را به رشته تبدیل و سپس از متد tuple () استفاده کنید:
print(str(tuple(5000)))
۲. تبدیل به لیست در پایتون
تبدیل تاپل به لیست بهویژه در مواقعی کاربرد دارد که بخواهید نسخهای تغییرپذیر از مقادیر داشته باشید. برای این منظور، میتوانید از متد list () استفاده کنید. ازآنجاکه امکان استفاده از پرانتز در سینتکس متد list و print وجود دارد، در نحوه استفاده از آن بسیار دقت کنید:
print(list(('blue coral', 'staghorn coral', 'pillar coral')))
Output
[‘blue coral’, ‘staghorn coral’, ‘pillar coral’]
براکتها نشان میدهند که تاپل ارسالشده به متد list، به لیست تبدیل شده است. برای خوانایی بیشتر کد هم میتوانیم یکی از جفت پرانتزها را با استفاده از متغیر حذف کنیم:
coral = ('blue coral', 'staghorn coral', 'pillar coral') list(coral)
حالا اگر list(coral) را چاپ کنیم، همان خروجی بالا را دریافت خواهیم کرد. دقیقاً مشابه با تاپلها، رشتهها را نیز میتوان به لیست تبدیل کرد:
print(list('shark'))
Output
[‘s’, ‘h’, ‘a’, ‘r’, ‘k’]
حالا رشته ‘shark’ به لیست تبدیل میشود و بدینترتیب، نسخه تغییرپذیری از مقدار اصلی خود را ارائه میدهد.
برای آشنایی با راهنمای کامل نصب پایتون در ویندوز، لینوکس و مک مقاله زیر را بخوانید.
جمعبندی
Data Typeها یکی از مفاهیم پایهای در یادگیری تمامی زبانهای برنامهنویسی، ازجمله پایتون هستند. در اغلب مواقع حین کار نیاز خواهید داشت تا Data Typeهای مختلف را به یکدیگر تبدیل کنید. این همان موضوعی است که در این مقاله از آموزش پایتون بلاگ پارس پک بهطورکامل درباره آن صحبت کردیم. با خواندن این مقاله میتوانید نحوه تبدیل Data Typeهای مختلف را به یکدیگر در زبان برنامهنویسی پایتون 3 یاد بگیرید.
سؤالات متداول
۱. تفاوت Data Type از نوع int با Float چیست؟
این Data Typeها به اعداد نسبت داده میشوند، با این تفاوت که اعداد int نشاندهنده اعداد صحیح و float نشاندهنده اعداد اعشاری هستند.
۲. آیا میتوان یک عدد را به یک رشته تبدیل کرد؟
بله، با استفاده از متد str () در زبان برنامهنویسی پایتون میتوان یک مقدار عددی را به رشته تبدیل کرد.
۳. متد float () در پایتون 3 چه کاربردی دارد؟
با استفاده از این متد، میتوانید Data Typeهای مختلف را به عدد اعشاری تبدیل کنید.