تبدیل واحدها در پایتون — به زبان ساده + کد
در برخی کشورها، طول با واحد «متر» اندازهگیری میشود، در حالی که در برخی کشورهای دیگر این اندازهگیری با واحد «فوت» انجام مییابد. اگر بخواهید این واحدها را به همدیگر تبدیل کنید، باید این کار را با دقت مضاعفی انجام دهید، چون ممکن است همه چیز به هم بریزد. اگر با زبان برنامهنویسی پایتون کار میکنید، خبر خوب این است که یک پکیج اختصاصی به این منظور توسعه یافته است که «پاینت» (Pint) نام دارد. در این مطلب با روش تبدیل واحدها در پایتون آشنا خواهیم شد.
همچنین اگر به تازگی شروع به یادگیری پایتون کردهاید و به دنبال انتخاب بهترین مسیر برای بدل شدن به یک برنامهنویس پایتون عالی هستید، توصیه میکنیم بعد از این نوشتار، سری نیز به مطلب یادگیری پایتون بزنید که در مجله تم آف و به همین منظور تهیه شده است.
پاینت چیست؟
پاینت یک پکیج پایتون است که برای کار کردن و دستکاری کردن کمیتهای فیزیکی ساخته شده است. میدانیم که کمیتهای فیزیکی حاصل ضرب یک مقدار عددی در یک واحد اندازهگیری هستند. با استفاده از پاینت میتوانید بین این واحدهای مختلف تبدیل کنید و یا مستقیماً عملیات ریاضی را روی کمیتهای متفاوت انجام دهید.
آموزش برنامه نویسی پایتون Python – مقدماتی
پاینت به همراه فهرستی جامعی از واحدهای فیزیکی، پیشوندها و ثوابت توزیع یافته است. با این حال به دلیل ماهیت ماژولارش میتوانید این فهرست را بدون نیاز به دست بردن در سورس کد، بسط داده و یا حتی بازنویسی کنید. پاینت از بسیاری از عملیات ریاضی «نامپای» (Numpy) نیز پشتیبانی میکند.
- مطلب پیشنهادی برای مطالعه: آشنایی با ماژول Math در پایتون — از صفر تا صد
نصب پاینت
برای نصب پاینت از دستور زیر استفاده کنید:
pip install pint
پس از نصب میتوانید از رجیستری واحد درون این پکیج بهره بگیرید.
import pint
ureg = pint.UnitRegistry()
این «رجیستری واحد» شیء اصلی است که با آن تعامل پیدا میکنیم. با استفاده از آن میتوانیم کمیتهایی را تعریف کنیم که بزرگی دارند و واحدی نیز به آنها الصاق شده است. برای نمونه میتوانید با چند عمل حسابی ساده واحدهای متر و سانتیمتر را با هم جمع بزنید.
3 * ureg.meter + 4 * ureg.cm
# 3.04 meter
نتیجه کد فوق، یک شیء است که میتواند برای تبدیل کمیت به واحد دیگری استفاده شود.
(3 * ureg.meter + 4 * ureg.cm).to(ureg.feet)
# 9.9737 foot
پکیج پاینت امکان ایجاد واحدها را به طور پویا نیز فراهم ساخته است. برای نمونه سرعت بر حسب مسافت تقسیم بر زمان تعریف میشود.
60 * ureg.miles / ureg.hour
# 60.0 mile/hour
شما میتوانید این کمیت را به واحد متر بر دقیقه تبدیل کنید.
(60 * ureg.miles / ureg.hour).to(ureg.meters/ureg.minute)
# 1609.344 meter/minute
همچنین میتوانید از رشتهها برای تعریف واحد استفاده کنید. شاید گاهی اوقات انجام این کار آسانتر باشد.
ureg("meter/second**2") * 10 * ureg("seconds")
# 10.0 meter/second
نکته دیگری که در زمان استفاده از پکیج پاینت بهتر است به آن توجه کنیم، این است که امکان تعریف واحدهای جدید نیز وجود دارد.
ureg.define("dog_year = 52 * day = dy")
(5 * ureg("years").to(ureg("dog_year")))
# 35.1201 dog_year
این کتابخانه، واحدهای زیادی دارد و با کمی کاوش در آن شگفتزده خواهید شد. همچنین میتوانید خصوصیات یک واحد را به شیوه زیر به دست آورید.
(60 * ureg.miles / ureg.hour).magnitude
# 60.0
(60 * ureg.miles / ureg.hour).units
# mile/hour
(60 * ureg.miles / ureg.hour).dimensionality
#
سخن پایانی
اگر در زمینه علوم داده فعال هستید و یا هر استفاده علمی از زبان برنامهنویسی پایتون میکنید، با نصب و بهکارگیری کتابخانه پاینت میتوانید از بسیاری از مشکلاتی که ممکن است تبدیل واحدها برای شما پیش بیاورد، اجتناب نمایید. کار با پاینت آسان است و موجب بهبود چشمگیری در زمان و تلاش مورد نیاز برای کدنویسی محاسبات علمی میشود.