در این مقاله به صورت کاملا تصویری و قدم به قدم در مورد تبدیل انواع داده در پایتون صحبت میکنیم. اگر برای انجام پروژه پایتون خود نیاز به تبدیل انواع داده ها به همدیگر را دارید، این آموزش را از دست ندهید.
چگونگی تبدیل انواع داده در پایتون
به سراغ یک پوشهی جدید میرویم و پروژهای را ایجاد میکنیم و نام آن را python-projects میگذاریم.
ویژوال استودیو کد را باز میکنیم و این پوشه را به داخل برنامه انتقال میدهیم.
یک file جدید ایجاد میکنیم و نام آن را main.py میگذاریم.

منظور از بحث آموزش تبدیل انواع داده در پایتون چیست؟ در مورد interpolation در جلسه گذشته صحبت کرده بودیم. میگوییم که print کند و داخل پرانتز ابتدا f را قرار میدهیم و سپس “multiply 2 and 6 is : {2 * 6}” را تایپ میکنیم. آن را اجرا میکنیم و در خروجی نمایش میدهیم.
خروجی را مشاهده میکنید که میگوید حاصلضرب ۲ و ۶ میشود ۱۲.

زمانی که کلا داشتیم در مورد concatenating صحبت میکردیم، گفتیم که اگر یک عدد را به یک رشته اضافه کنیم، error میدهد. در اینجا یک عدد را داخل یک رشته قرار دادیم. پس چرا در اینجا error نمیدهد؟ در اینجا در interpolation به صورت درونی هسته پایتون خودش آن را به string تبدیل میکند و هرچیزی که این داخل باشد به یک رشته تبدیل میشود و در نهایت در خروجی نمایش داده میشود.
اما این عملیات دارد داخل هستهی پایتون صورت میگیرد. اگر بخواهیم به صورت سریع و مستقیم این کار را انجام دهیم، آیا راه و روشی وجود دارد که بخواهیم این کار را انجام دهیم؟ بله. این کار امکانپذیر است و میتوانیم این کار را انجام دهیم. یک سری قابلیتها به صورت پیشفرض درون این زبان قرار گرفته است که به ما این امکان را میدهد که تبدیل انواع داده در پایتون را انجام دهیم. مثلا یک عدد را به یک رشته تبدیل کنید یا اینکه برعکس، یک رشته را به یک عدد تبدیل کنید، اگر قابلیت این کار وجود داشته باشد.
به عنوان مثال فرض کنید ما یک متغیر داریم که نام آن را myWeight (وزن من) قرار میدهیم. مقدار آن را 80 قرار میدهیم. حال میخواهیم type مربوط به myWeight را print کند یعنی type وزن ما را چاپ کند.
آن را اجرا میکنیم.

در خروجی class ‘int’ را داریم. یعنی نوع این داده int است. وزن انسان معمولا عدد صحیح نیست و ممکن است اعشار داشته باشد. اگر بخواهیم این نوع دادهای را به اعشار تبدیل کنیم، چگونه ممکن است؟

چنان که مشاهده میکنید، الان نوع داده int (عدد صحیح) است. میخواهیم آن را به عدد اعشاری تبدیل کنیم. این کار بسیار ساده است.
به عنوان مثال میگوییم myWeightFloat = float(myWeight) یعنی این عدد float مربوط به myWeight است. و بعد میخواهیم type مربوط به myWeightFloat را print کند.
کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.

خروجی اول را مشاهده کنید؛ int برمیگردد به myWeight و نشان میدهد که type وزنی که ۸۰ وارد کردیم، int است. در خط ۶ جلوی دستور کامنت مینویسیم که type آن integer است.
اما type متغیر myWeightFloat چیست؟ type آن float شده است. در خط ۸ هم روبهروی دستور به صورت کامنت float را مینویسیم.

مشاهده کردید که type خروجی دوم تغییر پیدا کرده بود. حتی type خود myWeight را هم میتوانید تغییر دهید. به عنوان مثال خود myWeight را هم در اینجا print میکنیم. بعد در خط بعد میخواهیم type آن را تغییر دهیم. مینویسیم myWeight = float(myWeight) یعنی myWeight تبدیل شده به float خودش است یعنی خودش را به float تبدیل میکند. فکر میکنم دیگر متوجه شده باشید. اگر بخواهید یک type را تبدیل کنید، خود type را قرار میدهیم و آن مقداری که قرار است تبدیل شود را داخل پرانتز مینویسیم و تبدیل انجام میشود.
در خط بعدی مینویسیم که myWeight را print کند.
بقیه خطهای اضافه را به کامنت تبدیل میکنیم که چیزی در اینجا دیده نشود. قسمت پایین را هم کلا میبندیم.
در اینجا یک cls تایپ میکنیم که چیزی وجود نداشته باشد.

سپس کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.

مشاهده میکنیم که خروجی اول ۸۰ است. در خط ۷ گفته بودیم آن را چاپ کند. در خط بعد گفتیم آن را به float تبدیل کند. در خط ۹ دارد تبدیل انجام میشود. پس روبهروی دستور خط ۹ کامنت convert to float را قرار میدهیم. عدد دوم که دوباره خودش چاپ شده است، یک نقطه اعشاری یا decimal point (float point) دارد. یعنی data از حالت integer (عدد صحیح) به عدد اعشاری تبدیل شده است. در خط ۹ دیگر تبدیل به عدد اعشاری شده است.
اگر بخواهیم آن را به string تبدیل کنید، در خط ۹ به جای float مینویسیم str یعنی آن را به string تبدیل کند.
حال یک cls تایپ میکنیم تا پاک شود.

آن را اجرا میکنیم
خروجی آن را مشاهده میکنیم.

در خروجی دوم که ۸۰ است، فکر میکنیم که یک عدد است اما در واقع string است.
در خط ۱۱ داخل پرانتز myWeight را برمیداریم و میگوییم type مربوط به myWeight را چاپ کند.
کلیک راست میکنیم و Run Python File in Terminal را انتخاب میکنیم.

Class آن string است. درست است که ۸۰ را میآورد اما عدد نیست و string است و type آن تغییر کرده است.
خط ۹ و ۱۱ را به حالت قبلی برمیگردانیم.
حال میخواهیم برعکس آن را هم امتحان کنیم. در خط ۵ به جای عدد 80، عدد 80.600 را قرار میدهیم.

اکنون نوع داده float است. میخواهیم آن را به integer تبدیل کنیم. خط ۹ که دیگر کاری انجام نمیدهد زیرا خود عدد float است. پس خط ۹ را به کامنت تبدیل میکنیم. خط ۱۱ را هم پاک میکنیم. زیرا به آن نیاز نداریم.
۴ کامنت آخر را به پایین انتقال میدهیم.
در خط ۹ میگوییم که myWeight را به integer تبدیل کند و داخل خودش بریزد.

یک بار در خط ۷ آن را چاپ کردیم. حال یک بار دیگر آن را چاپ میکنیم. همان خط ۷ را copy میکنیم و در خط ۱۱ paste میکنیم. حال cls را تایپ میکنیم.

کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.

در خروجی مشاهده میکنید که 80.6 تغییر کرده است و 80 شده است. چه اتفاقی افتاد؟ قسمت اعشار آن را کلا برداشت. البته اکنون ممکن است برایتان سؤال پیش بیاید که int چگونه دارد کار میکند و اصلا معنی این int در خط ۹ چیست؟ این int یک function است.
کلاس intاست و به عنوان ورودی myWeight را دریافت میکند و آن را تبدیل میکند. پرانتز جلوی int علامت یک function است. ما هنوز نمیدانیم function چیست. حتی printای هم که داریم میگذاریم هم یک function است. اما فعلا چیزی در مورد functionها نمیدانیم. گوش شما با آن آشنا باشد، اما فعلا در مورد آن صحبت نمیکنیم. فقط بدانید که برای تبدیل کردن از این syntax استفاده میشود.
برای مثال اگر بخواهید به float تبدیل کنید، float را مینویسید و بعد پرانتز باز و بسته را قرار میدهیم و مقدار را داخل پرانتز وارد میکنیم.

اگر بخواهیم به integer تبدیل کنیم، int را مینویسیم و پرانتز باز و بسته را قرار میدهیم و مقدار را داخل پرانتز وارد میکنیم.
اینها syntax آن هستند و نوع نوشتاری به این صورت است. امیدوارم که آن را درک کرده باشید.
یک مثال ساده بیان میکنیم.
فرض کنید میخواهید این مقدار را به سمت پایین گرد کنید. همین روش جواب میدهد. اما اگر بخواهید به سمت بالا گرد کنید، اعشار آن از بین میرود. بعد به اضافه ۱ میکنید که به سمت بالا گرد میشود.
آن را اجرا میکنیم.
مشاهده میکنید که خروجی ۸۱ شده است و به سمت بالا گرد شده است.

یک مثال دیگر نیز بیان میکنیم.
یک متغیر تحت عنوان testNumber داریم. مقدار آن یک رشته است و عدد ۵ داخل آن است.
در خط بعدی میگوییم testNumber را print کند.
البته در خط قبل از آن باید یک print قرار دهیم و بگوییم یک خط را پرینت کند که از هم جدا شوند. cls را تایپ میکنیم.

اجرا میگیریم.
عدد ۵ را در خروجی نمایش داده است.

پس از اینکه چاپ کردید، میگوییم testNumber = int(testNumber) و میخواهیم string را به عدد تبدیل کنیم.
حال از آن اجرا میگیریم.
باز هم خروجی ۵ را داریم. البته در اینجا آن را print نکرده بودیم. testNumber را print میکنیم.
سپس یک cls تایپ میکنیم.

کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.
در خروجی ۵ و ۵ را نمایش میدهد و مشکلی وجود ندارد. قابل تبدیل است. اما اگر testNumber از نوع رشته باشد، چطور؟ به نظر شما کار میکند؟

cls را تایپ میکنیم و آن را امتحان میکنیم.

کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.

مشاهده میکنیم که error داریم. چرا error میدهد؟ میگوید نمیتواند این رشته را به عدد تبدیل کند. آن مقداری که دارید به integer تبدیل میکنید، باید شامل عدد باشد نه یک حرف. آنگاه با مشکل مواجه میشود. ما میتوانیم ۶۰۰ را به عنوان یک رشته برای testNumber وارد کنیم. مشکلی پیش نمیآید.
cls را تایپ میکنیم.

آن را ذخیره میکنیم و کلیک راست کرده و گزینه Run Python File in Terminal را انتخاب میکنیم.
۶۰۰ را در خروجی نمایش میدهد. type ما برای testNumber از نوع string است.

در خط ۲۴ میگوییم type مربوط به testNumber را ابتدا چاپ کند و بعد تغییرات را انجام دهد. کلیک راست میکنیم و گزینه Run Python File in Terminal را انتخاب میکنیم.

ابتدا از نوع string بوده است، به عدد تبدیل شده است و سپس عدد را چاپ کرده است.
فقط در اینجا باید یک نکتهای را مطرح کنیم. این تریسس [۱۱:۱۳] به شما کمک میکند که کلمات را تشخیص دهید. بیشتر کلماتی که رنگشان متفاوت است، کلمات رزرو شده هستند. برای مثال int را مشاهده کنید.
شما نباید یک متغیری با نام int تعریف کنید و برای مثال یک رشته را به آن نسبت دهید.
این کار ایراد دارد .
نباید این کار را انجام دهیم.
برای مثال فرض کنید ما int را به str تبدیل کردیم. حال در خط بعدی میگوییم متغیر test مساوی است با int مربوط به عدد 9.6
به نظر شما الان درست کار میکند؟ مسلما نه error می دهد .
اصلا نمیتوانید از آن استفاده کنید. در صورت عادی چطور؟
اگر خط ۳۰ را پاک کنیم، مشکلی ندارد.
وقتی که در خط ۳۰ int را به یک رشته نسبت دادیم، یعنی رشته را داخل آن قرار دادیم، دیگر در خط بعدی با error مواجه میشود.
وقتی که آن را اجرا میکنیم، با error مواجه میشویم.
چرا error داریم؟ زیرا int را تغییر دادیم و همه چیز به هم ریخته است و دچار مشکل میشود. بنابراین هرگز از کلمات رزرو شده برای تعریف کردن متغیر استفاده نکنید. زیرا باعث میشود پروژه کلا با مشکل مواجه شود.
مثالی که میخواهیم بیان کنیم، یک convertor است که از کاربر به صورت گروهی یک اطلاعاتی را دریافت میکند و مقدار کیلومتر را دریافت میکند و آن را به mile تبدیل میکند و در خروجی چاپ میکند.
با هم فایلهای مورد نیازمان را ایجاد میکنیم. یک پوشه ایجاد میکنیم.

نام آن را python-projects میگذاریم.

و ویژوال استودیو کد را باز میکنیم و این پوشه را به داخل برنامه انتقال میدهیم.

یک file جدید در این قسمت ایجاد کردیم و نام آن را convertor.py قرار دادیم.

تا اینجا ما با یک سری از functionها آشنا شدیم. هنوز نمیدانیم function چیست. مفصل در مورد آنها صحبت نکردیم. اما بعضی از موارد مانند print و int و str آشنا شدید. اینها برای convert کردن بودند.
با اینها آشنا شدیم. اما یک دستور جدید را تحت عنوان input میخواهیم با هم کار کنیم. input این اجازه را به ما میدهد که در Terminal از کاربر مقدار دریافت کنیم. در اصل میتوان گفت که این function یک واسطی بین کاربر و application است که مقدار را کاربر میتواند وارد کند و برنامه آن مقدار را دریافت میکند و در یک متغیر میریزد. به عنوان مثال ما میخواستیم مقدار کیلومتر را از کاربر دریافت کنیم. برای مثال مینویسیم kms = input()
قبل از آن یک متنی را به کاربر نمایش میدهیم. یک دستور print قرار میدهیم و میگوییم how many kms do you want to conert? را print کند. یعنی میخواهید چند کیلومتر را conert کنید؟ وقتی که در اینجا از کاربر مقدار را دریافت کردیم، یک print دیگر در خط بعد قرار میدهیم و میگوییم “ok you said” + kms
تا اینجای برنامه را اجر ا میکنیم.

در اینجا از ما سؤال پرسیده است که چند کیلومتر را میخواهید convert کنید؟ میگوییم 20 کیلومتر.
بعد enterرا میزنیم.
میگوید ok you said 20

فکر میکنم یک مطلبی را متوجه شده باشید. به خط ۵ توجه کنید که ما آمدیم از string concatenating استفاده کردیم. گفتیم که اگ type این متغیری که قرار است به آن اضافه شود خارج از str باشد یعنی str (string) نباشد، error میدهد. مثلا ما در اینجا عدد 20 را وارد کردیم. اما نوع متغیر ما string شد.
این را میخواهیم بگوییم که ورودیای که دریافت میشود، در هر صورتی یک رشته است.
حالا میخواهیم به یک روش دیگر بنویسیم و میخواهیم از fstring استفاده کنیم. به صورت زیر در خط ۵ نوشته میشود.
یک بار دیگر آن را اجرا میکنیم.
ابتدا یک cls تایپ میکنیم تا پاک شود.

سپس آن را run میکنیم.
میگویند چند کیلومتر میخواهید تبدیل کنید؟ مثلا میگوییم 30 تا
Enter را میزنیم.
میگوید ok you said 30 kms

حال قدم بعدی این است که باید بیاییم این data دریافت شده را تبدیل کنیم. چرا؟ زیرا گفتیم type مقدار ورودی دریافت شده string است.
ما در اینجا میخواهیم عملیاتی را انجام دهیم. به عنوان مثال میخواهیم بگوییم که وقتی که آن را تبدیل کرد، آن را نمایش دهد. اما برای تبدیل باید چه کار کنیم؟ باید
بگوییم این کیلومتر دریافت شده را باید بر یک عدد تقسیم کند که آن عدد 1.60934 است. (هر یک مایل ۶/۱ کیلومتر است)
فرمولی که در خط ۵ نوشتیم، یک رشته را تقسیم بر یک عدد میکند. مطمئناً به ما error میدهد. یعنی چه کار میکند؟ در اینجا به صورت کامنت مینویسیم؛ یعنی یک رشته به این صورت (مثلا “50”) را بر 1.60934 تقسیم میکند که این تقسیم error برمیگرداند. ما نمیتوانیم یک رشته را تقسیم کنیم. پس آن ورودی ما باید تبدیل شود. کل خط ۵ را کامنت میکنیم.
کلا آن را برمیداریم و به خط ۳ انتقال میدهیم.

در اینجا ۲ روش وجود دارد. اول اینکه وقتی که input را دریافت میکنید، همان لحظه مقدار input دریافت شده را به float تبدیل میکنیم. الان مقدار input دریافتی که یک رشته است با استفاده از این دستور float به مقدار float تبدیل میشود.
یا اینکه موقع تقسیم کردن kms بر عدد 1.60934 در همین جا (خط ۷) kms را به float تبدیل کنیم.

دیگر در خط ۵ float را نمیخواهیم.
چرا int نگذاشتیم؟ چرا نگفتیم به جای float به int تبدیل کند؟
ممکن است در ورودی عدد 50.5 را وارد کنیم یا بگوییم 21.5 کیلومتر را به مایل تبدیل کند. چند مایل میشود؟ آن وقت آن 0.5 را پاک میکند و مقدار عدد صحیح آن را اعمال میکند که ما نمیخواهیم این کار را انجام دهد.
حال این را به کاربر نمایش میدهیم. مقدار تبدیل شده را داخل یک متغیری تحت عنوان miles میریزیم.
در خط ۹ هم به جای kms میگذاریم miles را به ما نشان دهد. به طور کلی نوشته را در این قسمت تغیییر میدهیم و میگوییم که ok converted data is : {miles}
یک cls تایپ میکنیم تا Terminal پاک شود و بعد یک اجرا از آن میگیریم.

الان از ما میپرسد که میخواهید چه تعداد کیلومتر را تبدیل کنید.
برای مثال میگوییم 30.9 را تبدیل کند.
Enter را میزنیم.

به error آن توجه کنید. این عدد ما دارد از int ایراد میگیرد و نمیتواند این کار را انجام دهد.

در اینجا cls را میزنیم.

کلیک راست میکنیم، آن را run میکنیم.
عدد 30.6 را وارد میکنیم.

مقدار آن را مشاهده میکنید که میگوید data تبدیل شده 19.01 است.

حال نگاهی به عدد دریافت شده داشته باشید. مشاهده میکنید که چندین رقم اعشار دارد. ما به این تعداد رقم اعشار نیاز نداریم. برای مثال تا دو رقم اعشار یا نهایتا سه رقم اعشار برایمان کافی است و بقیه ارقام اضافه است و کاربردی ندارد. پس بهتر است آن را به طریقی گرد یا رند کنیم. خوشبختانه یک دستور دیگر در پایتون وجود دارد که این کار را برای ما انجام میدهد. به عنوان مثال شما بخواهید یک عدد را رند کنید، دستور round وجود دارد. به ورودیهای آن نگاه کنید. یک number و یک ndigits گرفته است.
مورد اول میگوید آیتمی که قرار است رند شود را بدهیم. برای مثال ما قرار است miles را رند کنیم. مورد بعدی ndigits است که میگوید تا چند رقم اعشار میخواهید آن را رند کنید. برای مثال ما میگوییم تا ۲ رقم اعشار رند کند.
این عملیات برای ما رند کردن را انجام میدهد. ما آن را کامنت کردیم.

در خط ۹ به جای miles مینویسیم round(miles,2) یعنی round را فراخوانی کند و miles و عدد 2 را به آن بدهد.
در اینجا cls را میزنیم.

کلیک راست و run میکنیم.
عدد را از ما میخواهد برای مثال 65.4 را وارد میکنیم.

این سری 40.64 شد و تا دو رقم اعشار به ما نشان داد.
تعداد ارقام را ۳ قرار میدهیم. دوباره اجرا میکنیم.
عدد 60.96 را وارد میکنیم.
Enter را میزنیم.

پروژه های مرتبط با پایتون که ما انجام میدهیم:
در زیر لیست برخی از پروژه هایی که توسط ما ارائه میشود را آوردهایم. حال که به دنبال یادگیری پایتون هستید، ممکن است به این خدمات هم نیاز داشته باشید:
انجام پروژه برنامه نویسی | انجام پروژه ماشین لرنینگ | انجام پروژه هوش مصنوعی
انجام پروژه شبکه عصبی | انجام پروژه داده کاوی | انجام پروژه پردازش تصویر
انجام پروژه متلب | انجام پروژه یادگیری عمیق
مشاهده میکنیم که تا سه رقم اعشار عدد را به ما نشان میدهد.
فقط مسئلهی دیگری که در اینجا وجود دارد، این است که کمی خواندن این کد جالب نیست و ممکن است بعدا خواندن آن سخت شود.
در خط بعدی (خط ۹) همینجا تبدیل را انجام میدهیم. میگوییم round را فراخوانی کند، miles و عدد 3 را به آن بدهد که دیگر در خط ۱۱ round را فراخوانی نکنیم.
و یکدفعه خود مقدار miles را نمایش دهیم.
این روش از نظر خوانایی کد یک مقدار بهتر است و شما متوجه شدید؛ کیلومتر دریافت شده و در خط ۷ مقدار دریافت شده به float تبدیل شده است و همینطور در خط ۹ آن را رند کردیم. در نهایت هم آن را در خروجی نمایش دادیم. از نظر خوانایی این کد بهتر است.
حال میخواهیم خروجی را کمی تغییر دهیم. مثلا در خط ۱۱ به جای جمله قبلی میگوییم که kms را بیاورد، km is { miles } miles
نوشتن به این صورت کمی بهتر است. یک cls در اینجا تایپ میکنیم.
آن را run میکنیم.
برای مثال عدد 60.3 را وارد میکنیم.

در خروجی نشان میدهد که 60.3km is 37.469 miles

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