وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

حداکثر و حداقل مقادیر برای اعداد صحیح در پایتون

0 119
زمان لازم برای مطالعه: 4 دقیقه


معرفی

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

اعداد صحیح در پایتون

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

x = 10
print(type(x))  

این یک استفاده اساسی از یک عدد صحیح در پایتون است. اما اگر بخواهیم یک مقدار واقعاً بزرگ را به یک عدد صحیح اختصاص دهیم، چه؟

x = 10**100
print(x)  
print(type(x))  

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

چرا باید مقادیر حداکثر/حداقل عدد صحیح را بدانید؟

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

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

پیشنهاد می‌کنیم بخوانید:  شبکه‌های عصبی در جاوا اسکریپت با Brain.js در چند سال اخیر، به‌ویژه، شبکه‌های عصبی (NN) واقعاً به‌عنوان یک روش عملی و کارآمد برای حل مشکلاتی مطرح شده‌اند که نمی‌توانند به راحتی با یک الگوریتم حل شوند، مانند تشخیص چهره، تشخیص صدا، و تشخیص پزشکی این تا حد زیادی به لطف اکتشافات اخیر است روی چگونه بهتر تمرین کنیم...

یکی دیگر از موارد استفاده رایج برای مقادیر min/max در الگوریتم های خاص است. فرض کنید در حال تلاش برای یافتن حداقل تعداد در یک مجموعه هستید. به خاطر مقایسه اولیه، احتمالاً می خواهید خود را تنظیم کنید min مقدار را به بالاترین عدد ممکن می رساند تا اولین مقداری که آن را با آن مقایسه می کنید کمتر باشد. در زبانی مانند جاوا اسکریپت، از:

let min = Infinity;

اما متأسفانه پایتون راهی برای انجام این کار ندارد.

روش یافتن حداکثر/حداقل مقادیر صحیح

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

import sys
print(sys.maxsize)  

توجه داشته باشید: ارزش sys.maxsize می تواند بین پلتفرم ها و نسخه های پایتون متفاوت باشد، اما به طور کلی اینطور است 2**31 - 1 روی پلتفرم 32 بیتی و 2**63 - 1 روی پلتفرم 64 بیتی

اما در مورد حداقل مقدار چطور؟ پایتون راهی برای یافتن حداقل مقدار یک عدد صحیح ندارد. با این حال، از آنجایی که اعداد صحیح پایتون می توانند منفی باشند، حداقل مقدار به سادگی است -sys.maxsize - 1.

import sys
print(-sys.maxsize - 1)  

یافتن مقادیر حداقل/حداکثر برای شناورها، از جمله بی نهایت

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

شما می توانید حداکثر و حداقل مقادیر شناور را با استفاده از sys.float_info شی، که بخشی از پایتون است sys مدول. این شی جزئیات مربوط به نوع ممیز شناور، از جمله حداکثر و حداقل مقادیر محدود مثبت قابل نمایش آن را ارائه می دهد.

import sys

print("Max finite float value:", sys.float_info.max)
print("Min positive finite float value:", sys.float_info.min)

هنگامی که این کد را اجرا می کنید، احتمالاً خروجی مشابه زیر را خواهید دید:

Max finite float value: 1.7976931348623157e+308
Min positive finite float value: 2.2250738585072014e-308

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

پیشنهاد می‌کنیم بخوانید:  مدیریت استثناء پایتون

جالب اینجاست که پایتون همچنین راهی برای نمایش بی‌نهایت مثبت و منفی برای انواع شناور ارائه می‌کند، که به طور موثر به عنوان مرزهای فراتر از محدودیت‌های محدود عمل می‌کنند. می توانید با استفاده از این بی نهایت ها را تعریف کنید float('inf') برای بی نهایت مثبت و float('-inf') برای بی نهایت منفی

در اینجا یک مثال سریع آورده شده است:

positive_infinity = float('inf')
negative_infinity = float('-inf')

print("Positive Infinity:", positive_infinity)
print("Negative Infinity:", negative_infinity)

با اجرای این قطعه کد نمایش داده می شود:

Positive Infinity: inf
Negative Infinity: -inf

این مقادیر شناور ویژه می‌تواند برای مقداردهی اولیه متغیرها در الگوریتم‌ها مفید باشد، جایی که شما نیاز به یک مقدار تضمین شده بالاتر یا کمتر از هر عدد دیگری دارید.

پایتون 2 در مقابل پایتون 3

وقتی صحبت از محدودیت های عدد صحیح و شناور می شود، تفاوت قابل توجهی بین پایتون 2 و پایتون 3 وجود دارد.

در پایتون 2 دو نوع اعداد صحیح وجود داشت: int و long. را int نوع میکند محدودیت دارند، اما long نوع می تواند به طور دلخواه اعداد بزرگ را اداره کند. در پایتون 3 اما این دو نوع در یک واحد ادغام شدند int نوع، که می تواند به طور دلخواه اعداد بزرگ را درست مانند long در پایتون 2 تایپ کنید

در مورد شناورها، هیچ تفاوتی بین پایتون 2 و پایتون 3 وجود ندارد. هر دو نسخه از IEEE 754 استاندارد برای محاسبات ممیز شناور، که مقادیر حداکثر و حداقلی را که در بخش قبل توضیح دادیم را تعریف می کند.

نتیجه

در حالی که سیستم تایپ پویا پایتون کار با اعداد را آسان می کند، هنوز هم دانستن این محدودیت ها مهم است، به خصوص وقتی که با اعداد بسیار بزرگ یا محاسبات با دقت بالا سر و کار دارید. امیدوارم این بایت بتواند موضوعی را روشن کند که اغلب مورد توجه قرار نمی گیرد، اما همچنان در برنامه نویسی پایتون مهم است.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1402-12-27 10:10:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید