• تمرین عملی | تابع ( )type و type conversion

در جلسه سوّم از فصل سوّم این دوره، مثل همیشه وارد محیط جوپیتر نوت‌بوک شدیم و به‌صورت عملی با تابع type در پایتون کار کردیم. در ادامه این جلسه نیز برای درک عمیق‌تر موضوع type conversion در پایتون، چندین مثال مختلف را باهم پیاده‌سازی کردیم.

🔸کارکردن با تابع ( )type در پایتون

اگر بخواهیم که نوع یک داده را در پایتون تشخیص دهیم، پایتون یک تابع داخلی به‌نام type را در اختیارمان قرار داده‌است. برای تشخیص نوع یک داده کافیست که آبجکت موردنظر را به‌عنوان ورودی به تابع type بدهیم تا به‌عنوان خروجی نوع داده موردنظر را دریافت کنیم. به مثال زیر توجه کنید.

type function in python example one

در مثال بالا، در متغیّر my_int، عددصحیح 5 ذخیره شده‌است. و در خط این متغیّر به‌عنوان ورودی به تابع type پاس داده‌شد و خروجی آن به‌عنوان ورودی به تابع print داده‌شد تا خروجی در صفحه نمایشگر نشان داده‌شود. پس از اجراء‌شدن قطعه کُد بالا، خروجی int را مشاهده خواهیم کرد که نشان می‌دهد در داخل my_int یک عدد صحیح ذخیره شده‌است.

🔸 یک مثال چالشی‌تر

اجازه دهید با نوشتن قطعه کد زیر کمی شما را به چالش بکشیم. به‌نظر شما بعد از اجراء‌شدن قطعه کُد زیر خروجی نهایی چه خواهد بود؟

type function in python example two

ممکن است حدس زده‌باشید که خروجی نهایی از جنس عدد اعشاری یا float است. امّا نکته‌ای که احتمالاً فراموش کردید که به‌آن دقت کنید این است که عدد 3.1415 درنهایت در داخل سینگل کوتِیشن (‘ ‘) قرار گرفته‌است. و زمانی که هر آبجکتی در داخل سینگل / دابِل کوتِیشن قرار بگیرد برای پایتون به‌صورت رشته‌کارکتر یا استرینگ ترجمه می‌شود. به بیانی دیگر؛ پایتون با ‘3.1415’ به‌صورت یک عدد برخورد نمی‌کند بلکه جنس آن به‌صورت متن (text – string) درنظر می‌گیرد. بنابراین درآخر با اجرای کُد؛ خروجیِ str را دریافت خواهیم کرد.

🔸کارکردن با مفهوم type conversion در پایتون

در زبان پایتون این امکان برای ما فراهم شده‌است که در صورت لزوم، انواع داده‌های مختلف را (در صورت امکان) به یکدگیر تبدیل کنیم. به این عمل در برنامه‌نویسی اصطلاحاً type conversion یا type casting گفته می‌شود. مجدداً تاکید می‌کنم که امکان تبدیل داده‌ها به هم در صورت ممکن بودن قابل اجرا است.

🔸 تبدیل عددصحیح به عدد اعشاری

در پایتون با استفاده از تابع داخلی ( )float می‌توانیم داده‌های مختلف را به عدد اعشاری تبدیل کنیم. در این مثال قصد داریم تا عددصحیح 5 را به عدد اعشاری 5.0 تبدیل (convert) کنیم. به مثال زیر توجه کنید.

float function in python example one

با اجراء‌شدن کُد بالا عددصحیح 5، با استفاده از تابع float به عدد اعشاری 5.0 تبدیل (convert) به این مفهوم type conversion یا تبدیل از یک نوع به نوعی دیگر گفته می‌شود.

🔸تبدیل متن به عدد اعشاری

در پایتون با استفاده از تابع داخلی ( )float می‌توانیم داده‌های مختلف را به عدد اعشاری تبدیل کنیم. در این مثال قصد داریم تا رشته کارکتر ‘3.1415’ را به عدد اعشاری3.1415 تبدیل (convert) کنیم. به مثال زیر توجه کنید.

float function in python example two

همان‌طور که از مثال بالا مشخص شد، با استفاده از مفهوم type conversion در پایتون توانستیم متن یا استرینگ ‘3.1415’ را به عدد اعشاری 3.1415 تبدیل (convert) کنیم. امّا ممکن است در این لحظه این سوال برایتان ایجاد شود که اصلا چه نیازی به انجام چنین تبدیلی بود؟ و از همان استرینگ ‘3.1415’ در طول کُدنویسی خود استفاده می‌کردیم! اجازه دهید تا جواب این سوال را با نوشتن یک کُد ساده توضیح دهیم. به قطعه کُد زیر توجه کنید.

float function in python example three

بعد از اجراء‌شدن قطعه کُد بالا در پنجره خروجی، خطای TypeError دریافت کردیم. این خطا می‌گوید که؛ امکان چسباندنِ یک استرینگ (concatenate) به یک عدد صحیح (int) وجود ندارد! به بیان دیگر؛ نمی‌توان داده‌ای که از جنس متن (str) هست را با داده‌ای که از جنس عدد هست، جمع نمود. برای رفع این خطا نیاز هست تا داده‌ای که به‌صورت متن ذخیره شده‌است را به عدد تبدیل (convert) کنیم.

لازم به توضیح است که درباره مفهوم string concatenation که در متن خطا مشاهده کردیم در فصل ششم این دوره که درباره استرینگ‌ها است صحبت خواهیم کرد. به قطعه کُد اصلاح‌شده زیر دقت کنید.

float function in python example fourدر خط سوّم با تبدیل رشته‌کارکتر ‘3.1415’ به عدد اعشاری 3.1415 و ذخیره‌کردن مجدّد آن در متغیّر my_number، حالا می‌توانیم از اُپراتور جمع (+) بر روی آن استفاده کنیم و عدد 5 را به آن اضافه کنیم و خروجی 8.1415 را دریافت نماییم.

🔸 هر تبدیلی ممکن نیست!

درنهایت توجه داشته‌باشید که نمی‌توان هر تبدیلی را در پایتون انجام داد. تبدیل موردنظر بایستی از لحاظ منطق برنامه‌نویسی (programming logic) قابل پیاده‌سازی باشد. یعنی چی؟ اجازه بدید که با نوشتن یک قطعه کُد این مورد را توضیح بدهم. به مثال زیر توجه کنید.

common type conversion error in python

در قطعه کُد بالا در خط پنجم، خواستیم تا استرینگ ” با استفاده از تابع int به عددصحیح 28 تبدیل نماییم تا در آینده بر روی آن محاسبات مربوط را انجام دهیم. امّا نکته‌ای که به آن دقّت نکردیم این است که استرینگ ” دارای یک کارکتر غیرعددی (نماد $) است. طبیعتاً ازمنظر منطق برنامه‌نویسی نمی‌توان کارکتری که غیرعددی (non-numeric) هست را به یک عدد تبدیل کرد! به‌همین دلیل است که پس از اجرای چنین کُدی در پایتون خطای ValueError خواهیم گرفت.

🔸 اختیاری : رفع خطای بالا!

قطعه کُدی که در ادامه خواهید دید جزء موضوعات فصل ششم این دوره است و نیازی نیست که با جزئیات به آن بپردازید. ( در این لحظه؛ در حال چیدن آجرهای اولیه برای این دوره هستیم) این خطا را می‌توان به چند روش حل کرد که در ادامه یکی از این روش‌ها را استفاده کردیم.

type conversion in python example five


🔸ارزیابی شما

پس از اجراء‌شدن قطعه کُد زیر، خروجی نهایی به چه صورت خواهد بود؟ (حتماً کُد را نوشته و جواب خود را مقایسه کنید! علّت این خطا چیست؟)

قطعه کُد اوّل :

Test your self

قطعه کُد دوّم :

Test your self

خروجی هر کدام از قطعه کدهای بالا را با علّت در قست دیدگاه‌های این جلسه وارد نمایید.

2 دیدگاه. ارسال دیدگاه جدید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
برای ادامه، شما باید با قوانین موافقت کنید

keyboard_arrow_up