اعداد پایتون «Numbers» یکی از انواع دادههای اصلی هستند که برای انجام محاسبات ریاضی «Mathematical calculations» استفاده میشوند. این زبان از انواع عددی مختلفی مانند صحیح «int»، اعشاری «float» و مختلط «complex» پشتیبانی میکند. عملیات ریاضی متنوعی از جمله جمع، تفریق، ضرب، تقسیم و توان روی این اعداد قابل انجام است. همچنین، پایتون توابع داخلی و ماژولهایی مانند math و decimal را برای انجام محاسبات پیچیدهتر ارائه میدهد.
مقدمه
انواع اعداد پایتون به عنوان یک دستهبندی مهم شناخته میشوند که شامل انواع مختلف دادههای عددی است. این زبان از انواع متنوعی از اعداد پشتیبانی میکند، از جمله اعداد صحیح «Integer»، اعداد اعشاری «Floating-point»، و اعداد مختلط «Complex». در ادامه، نگاهی کوتاه به هر یک از این انواع خواهیم داشت:
انواع اعداد پایتون
انواع و توضیحات اعداد پایتون به همراه مثال به شرح زیر میباشد:
۱- اعداد صحیح در پایتون (Python Integer)
نوع دادهی «int» در پایتون شامل اعداد صحیح است که شامل اعداد منفی نیز میشود اما کسری یا اعشاری ندارد. در پایتون، هیچ محدودیتی برای طول مقدار عدد صحیح وجود ندارد. به عبارت دیگر، هر عددی که به صورت کامل و بدون تقسیمپذیری بهعنوان عدد وارد شود، یک عدد صحیح محسوب میشود. برای مثال، اعداد ۵، ۳- و ۰ همگی از نوع صحیح هستند.
ویژگی مهمی که در پایتون برای نوع دادهی int وجود دارد این است که هیچ محدودیتی برای اندازهی آن وجود ندارد. این به این معناست که میتوانید اعداد بسیار بزرگ را بدون هیچ مشکلی در پایتون ذخیره کنید، برخلاف برخی زبانهای برنامهنویسی که ممکن است محدودیتهایی برای ذخیرهسازی اعداد بسیار بزرگ داشته باشند. در پایتون، حتی اعداد صحیح با تعداد بسیار زیاد رقم، بدون مشکل در حافظه ذخیره میشوند و تا زمانی که حافظه دستگاه شما اجازه دهد، میتوانند رشد کنند.
این ویژگی پایتون باعث میشود که بتوانید در محاسبات دقیق و پروژههایی که نیاز به اعداد بزرگ دارند، بدون نگرانی از دست دادن دقت یا مواجهه با محدودیتهای اندازه، از اعداد صحیح استفاده کنید. به این ترتیب، پایتون بهخوبی از اعداد صحیح پشتیبانی میکند و محدودیتی برای استفاده از آنها در اندازههای مختلف ندارد.
مثال ۱: ساخت یک عدد صحیح int و بررسی نوع آن.
num = -8 # print the data type print(type(num))
خروجی:
<class 'int'>
مثال ۲: انجام عملیات ریاضی روی نوع دادهای int
در پایتون میتوانید عملیات ریاضی مانند جمع، تفریق، ضرب و تقسیم را روی اعداد صحیح انجام دهید.
a = 5 b = 6 # Addition c = a + b print("Addition:",c) d = 9 e = 6 # Subtraction f = d - e print("Subtraction:",f) g = 8 h = 2 # Division i = g // h print("Division:",i) j = 3 k = 5 # Multiplication l = j * k print("Multiplication:",l) m = 25 n = 5 # Modulus o = m % n print("Modulus:",o) p = 6 q = 2 # Exponent r = p ** q print("Exponent:",r)
خروجی:
Addition: 11 Subtraction: 3 Division: 4 Multiplication: 15 Modulus: 0 Exponent: 36
۲- اعداد اعشاری در پایتون (Python Float)
نوع دادهی «float» در پایتون به اعداد واقعی اطلاق میشود که با استفاده از نقطهی اعشار نمایش داده میشوند. این نوع داده برای نمایش اعداد غیرصحیح یا اعشاری کاربرد دارد. بهطور معمول، وقتی یک عدد را با نقطه اعشار وارد میکنیم، پایتون آن را بهطور خودکار به عنوان عدد اعشاری «float» شناسایی میکند. برای مثال، اعداد ۰.۵ و ۷.۸۲۳۴۵۷- نمونههایی از اعداد اعشاری هستند.
اعداد اعشاری میتوانند بهصورت مستقیم وارد شوند، یعنی عددی که دارای نقطه اعشار باشد، یا بهوسیله انجام عملیاتی مانند تقسیم اعداد صحیح، تولید شوند. بهعنوان مثال، وقتی دو عدد صحیح را تقسیم میکنید، نتیجه بهصورت یک عدد اعشاری «float» خواهد بود. علاوه بر این، پایتون بهطور خودکار صفرهای اضافی در انتهای عدد را نادیده میگیرد.
num = 3/4 # print the data type print(type(num))
خروجی:
<class 'float'>
همانطور که مشاهده کردیم، تقسیم هر دو عدد صحیح «integer» یک عدد اعشاری «float» تولید میکند. همچنین، زمانی که عملیاتی بین دو عدد اعشاری یا بین یک عدد اعشاری و یک عدد صحیح انجام شود، نتیجه نیز یک عدد اعشاری خواهد بود.
num = 6 * 7.0 print(type(num))
خروجی:
<class 'float'>
مثال ۲: انجام عملیات ریاضی روی نوع دادهای «float»
a = 5.5 b = 3.2 # Addition c = a + b print("Addition:", c) # Subtraction c = a-b print("Subtraction:", c) # Division c = a/b print("Division:", c) # Multiplication c = a*b print("Multiplication:", c)
خروجی:
Addition: 8.7 Subtraction: 2.3 Division: 1.71875 Multiplication: 17.6
توجه: دقت اعداد اعشاری «float» در پایتون حداکثر تا ۱۵ رقم اعشار است و رقم ۱۶ام ممکن است نادقیق باشد.
۳- اعداد مختلط در پایتون (Python Complex)
عدد مختلط، عددی است که از دو بخش تشکیل شده است: بخش حقیقی و بخش موهومی. بخش حقیقی یک عدد معمولی است، در حالی که بخش موهومی از یک عدد حقیقی ضربشده در نماد j یا i (که در ریاضیات بهطور معمول بهعنوان واحد موهومی شناخته میشود) تشکیل شده است.
برای مثال، ۲ + 3j یک عدد مختلط است که در آن ۲ بخش حقیقی و 3j بخش موهومی است. در اینجا، «۲» همان عدد معمولی است که بخش حقیقی را میسازد، و 3j نمایانگر بخش موهومی است که در آن عدد ۳ با j ضرب شده است. در حقیقت، j بهطور خاص در پایتون برای نشان دادن بخش موهومی استفاده میشود.
اعداد مختلط در پایتون با استفاده از نماد j برای بخش موهومی نوشته میشوند و میتوانند در بسیاری از محاسبات و معادلات ریاضی و مهندسی کاربرد داشته باشند. برای مثال، در مسائل فیزیک، الکترونیک و مهندسی، از اعداد مختلط برای مدلسازی رفتارهای امواج و دیگر پدیدههای فیزیکی استفاده میشود.
مثال ۱: ایجاد عدد مختلط «complex» و بررسی نوع آن.
num = 6 + 9j print(type(num))
خروجی:
<class 'complex'>
مثال ۲: انجام عملیات ریاضی روی نوع دادهای «complex»
a = 1 + 5j b = 2 + 3j # Addition c = a + b print("Addition:",c) d = 1 + 5j e = 2 - 3j # Subtraction f = d - e print("Subtraction:",f) g = 1 + 5j h = 2 + 3j # Division i = g / h print("Division:",i) j = 1 + 5j k = 2 + 3j # Multiplication l = j * k print("Multiplication:",l)
خروجی:
Addition: (3+8j) Subtraction: (-1+8j) Division: (1.307692307692308+0.5384615384615384j) Multiplication: (-13+13j)
۴- تبدیل نوع در پایتون (Type Conversion in Python)
به فرآیند تغییر نوع دادهها از یک نوع به نوع دیگر اطلاق میشود. پایتون بهطور پیشفرض از تبدیل نوع پشتیبانی میکند و این کار را بهصورت خودکار «Implicit» یا دستی «Explicit» انجام میدهد. تبدیل نوع میتواند به دلایل مختلفی انجام شود، مانند انجام عملیات ریاضی یا مقایسه مقادیر از انواع مختلف. در اینجا به دو روش رایج تبدیل نوع در پایتون اشاره میکنیم:
استفاده از عملیات ریاضی
در پایتون، میتوان با استفاده از عملیاتهایی مانند جمع و تفریق، نوع دادهی عدد را بهصورت ضمنی (خودکار) تغییر داد. به این معنی که اگر یکی از عملوندها از نوع «float» باشد، پایتون بهطور خودکار نوع دادههای دیگر را به «float» تبدیل میکند تا نتیجهی عملیات صحیح باشد. برای مثال، اگر یک عدد صحیح و یک عدد اعشاری با هم جمع شوند، پایتون عدد صحیح را به عدد اعشاری تبدیل میکند و نتیجه بهصورت اعشاری نمایش داده میشود.
اما این ویژگی برای اعداد مختلط عمل نمیکند. به عبارت دیگر، اگر یکی از عملوندها عدد مختلط باشد، پایتون بهطور خودکار آن را به عدد اعشاری یا صحیح تبدیل نخواهد کرد. در این حالت، نتیجهی عملیات همیشه یک عدد مختلط خواهد بود و تبدیل نوع بهصورت خودکار انجام نمیشود.
مثال: تبدیل نوع با استفاده از عملیات ریاضی.
a = 1.6 b = 5 c = a + b print(c)
خروجی:
۶.۶
استفاده از توابع داخلی (Using Built-in Functions)
همچنین میتوان از توابع داخلی مانند ()int()، float و ()complex برای تبدیل انواع دادهها بهصورت صریح استفاده کرد. این توابع به شما این امکان را میدهند که نوع دادهها را بهطور دقیق و مطابق نیاز خود تغییر دهید.
مثال: تبدیل نوع با استفاده از توابع داخلی.
a = 2 print(float(a)) b = 5.6 print(int(b)) c = '3' print(type(int(c))) d = '5.6' print(type(float(c))) e = 5 print(complex(e)) f = 6.5 print(complex(f))
خروجی:
۲.۰ ۵ <class 'int'> <class 'float'> (۵+0j) (۶.۵+0j)
وقتی یک عدد اعشاری را به عدد صحیح تبدیل میکنیم، بخش اعشاری حذف میشود.
تابع ()int:
این تابع برای تبدیل دادهها به نوع عدد صحیح استفاده میشود. بهعنوان مثال، اگر شما یک عدد اعشاری یا یک رشته که نمایانگر یک عدد صحیح است داشته باشید، میتوانید آن را به عدد صحیح تبدیل کنید. این تابع بخش اعشاری را نادیده میگیرد و فقط بخش صحیح را برمیدارد.
تابع ()float:
این تابع برای تبدیل دادهها به نوع عدد اعشاری استفاده میشود. اگر شما یک عدد صحیح یا یک رشته که نمایانگر یک عدد اعشاری است داشته باشید، میتوانید آن را به عدد اعشاری تبدیل کنید.
تابع ()complex:
این تابع برای تبدیل دادهها به نوع عدد مختلط استفاده میشود. اگر شما دو عدد حقیقی و موهومی داشته باشید، میتوانید با استفاده از این تابع یک عدد مختلط ایجاد کنید.
این توابع به شما کمک میکنند تا نوع دادهها را بهطور دستی و مطابق با نیاز خاص خود تغییر دهید، مثلاً در صورتی که بخواهید عملیات خاصی را با دادههای مختلف انجام دهید یا نوع دادهها را برای استفاده در یک تابع یا محاسبات خاص تنظیم کنید.
توجه:
- نمیتوان نوع دادهی مختلط را به اعداد صحیح یا اعشاری تبدیل کرد.
- نمیتوان توابع داخلی مربوط به اعداد مختلط را روی رشتهها «strings» اعمال کرد.
۵- اعداد اعشاری در پایتون (Decimal Numbers in Python)
عملیات ریاضی روی اعداد اعشاری در پایتون ممکن است نتایج غیرمنتظرهای تولید کند. این مشکل بهویژه زمانی رخ میدهد که اعداد اعشاری بهطور دقیق در حافظه ذخیره نمیشوند، چرا که در بسیاری از سیستمها، اعداد اعشاری بهصورت باینری ذخیره میشوند. این تبدیل از سیستم دهدهی به باینری ممکن است باعث ایجاد خطاهای جزئی در دقت اعداد شود.
مثال ۱: بیایید موردی را در نظر بگیریم که میخواهیم۱.۱ را به ۲.۲ اضافه کنیم. ممکن است تصور کنید نتیجه باید ۳.۳ باشد، اما اجازه دهید خروجی پایتون را ببینیم.
a = 1.1 b = 2.2 c = a+b print(c)
خروجی:
۳.۳۰۰۰۰۰۰۰۰۰۰۰۰۰۰۳
مثال ۲: نتیجه ممکن است غیرمنتظره باشد. این بار، موردی را در نظر بگیریم که ۱.۲ را از ۱.۰ کم میکنیم. انتظار داریم نتیجه برابر با ۰.۲ باشد، اما اجازه دهید خروجی ارائهشده توسط پایتون را مشاهده کنیم.
علت: این رفتار به دلیل محدودیتهای نحوه ذخیرهسازی اعداد اعشاری در کامپیوتر است که میتواند منجر به خطاهای کوچک در محاسبات شود.
a = 1.2 b = 1.0 c = a-b print(c)
خروجی:
۰.۱۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۶
شما ممکن است فکر کنید که مشکلی در پایتون وجود دارد، اما اینطور نیست. این موضوع ارتباط کمی با پایتون دارد و بیشتر مربوط به نحوهی پردازش اعداد اعشاری «floating-point numbers» توسط پلتفرم زیرساختی است. این یک مسئله رایج است که هنگام کار با اعداد اعشاری در سیستمها بهطور داخلی رخ میدهد.
مشکل از آنجا ناشی میشود که در نمایش داخلی اعداد اعشاری از تعداد محدودی رقم باینری (اعداد صفر و یک) برای نمایش یک عدد اعشاری استفاده میشود. نمایندگی برخی از اعداد اعشاری در قالب باینری دشوار است و به همین دلیل در بسیاری از موارد، خطاهای کوچک گرد کردن به وجود میآید.
برای مثال، در مورد عدد ۱.۲، نمایندگی ۰.۲ در قالب باینری به این صورت است: ۰.۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰… و این یک دنباله بیپایان است. ذخیره این عدد اعشاری نامتناهی در حافظه داخلی مشکلساز است. معمولاً، مقدار یک شی «float» بهصورت عدد اعشاری شناور با دقت ثابت (معمولاً ۵۳ بیت) در قالب باینری ذخیره میشود. بنابراین، ۱.۲ بهطور داخلی به این صورت نمایهسازی میشود:
۱.۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱۰۰۱۱
که دقیقاً معادل است با:
۱.۱۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۵۵۵۹۱۰۷۹۰۱۴۹۹۳۷۳۸۳۸۳۰۵۴۷۳۳۲۷۶۳۶۷۱۸۷۵
برای چنین مواردی، ماژول «decimal» پایتون وارد عمل میشود. همانطور که قبلاً ذکر شد، دقت اعداد اعشاری (floating-point) تنها تا ۱۵ رقم است، اما در اعداد اعشاری ، دقت قابل تنظیم توسط کاربر است. این ماژول عملیات را بر روی اعداد اعشاری به همان روشی که در مدرسه آموختهایم، انجام میدهد.
بیایید دو مثال بالا را بررسی کنیم و سعی کنیم آنها را با استفاده از اعداد اعشاری «decimal» حل کنیم.
import decimal a = decimal.Decimal('1.1') b = decimal.Decimal('2.2') c = a+b print(c)
خروجی:
۳.۳
ما میتوانیم از ماژول decimal برای موارد زیر استفاده کنیم:
- زمانی که میخواهیم دقت مورد نظر خود را بهطور دلخواه تعریف کنیم.
- برای کاربردهای مالی که نیاز به نمایش دقیق اعداد اعشاری دارند.
خلاصه و نتیجه گیری
اعداد پایتون یکی از پرکاربردترین انواع دادهها هستند و به سه دستهی اصلی تقسیم میشوند: اعداد صحیح که شامل اعداد کامل بدون قسمت اعشاری بوده و میتوانند مثبت، منفی یا صفر باشند و در پایتون هیچ محدودیتی برای اندازهی آنها وجود ندارد، اعداد اعشاری که شامل مقادیر اعشاری و واقعی هستند و با یک نقطهی اعشار مشخص میشوند و امکان نمایش مقادیر بسیار کوچک یا بزرگ با نماد علمی را دارند، و اعداد مختلط که شامل دو بخش حقیقی و موهومی بوده و برای محاسبات پیچیدهی ریاضی استفاده میشوند و بخش موهومی آنها با حرف j مشخص میشود.
پایتون از تبدیل نوع خودکار پشتیبانی میکند، بهطوری که هنگام انجام عملیات بین عدد صحیح و اعشاری، عدد صحیح به اعشاری تبدیل میشود. همچنین برای تبدیل صریح بین انواع اعداد میتوان از توابع داخلی مانند ()int()، float و ()complex استفاده کرد. عملیات ریاضی روی اعداد اعشاری ممکن است به دلیل نحوهی ذخیرهسازی باینری، نتایج کمی متفاوت از مقدار مورد انتظار بدهد که برای محاسبات دقیقتر میتوان از ماژول decimal بهره برد. اعداد در پایتون انعطافپذیری بالایی دارند و برای طیف گستردهای از کاربردها، از محاسبات ساده تا معادلات پیچیده، قابل استفاده هستند.