English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
الأعداد في بايثون، تحويلات النوع والعمليات الرياضية
أنواع البيانات الرقمية في بايثون
يدعم بايثون الأعداد الصحيحة والأعداد العشرية والأعداد المعقدة. ويتم تعريفهم كـ int، float و complex في أنواع البيانات في بايثون.
العدد الصحيح والعدد العشري يتم الفصل بينهما بواسطة وجود أو عدم وجود نقطة عشرية. 5 هو عدد صحيح، بينما 5.0 هو عدد عشري.العدد المعقد يكتب على شكل x + yj، حيثxهذا هو الجزء الحقيقي،y
هذا هو الجزء المعقد.
يمكننا استخدام دالة type() للتحقق من نوع المتغير أو القيمة إذا كانت تنتمي إلى نوع معين، ونستطيع استخدام دالة isinstance() لتحقق من أنها تنتمي إلى نوع معين. a = 5 # الناتج: <class 'int'> print(type(a)) # الناتج: <class 'float'> print(type(5.0)) # الناتج: (8+3j) c = 5 + 3j # الايراد: True print(c + 3)
print(isinstance(c, complex))
بالرغم من أن الأعداد الصحيحة يمكن أن تكون طويلة العدد، إلا أن الأعداد العشرية يمكن أن تكون دقيقة فقط حتى 15 منفصلة (غير دقيقة في المكان السادس عشر).
في بايثون، يمكننا استخدام المقدمة قبل العدد لتمثيل هذه الأعداد. الجدول التالي يبين هذه المقدمة.
النظام الرقمي | السابق |
---|---|
النظام الثنائي | '0b' أو '0B' |
السابعة العشرية | '0o' أو '0O' |
العشرية | '0x' أو '0X' |
هناك بعض الأمثلة
# الناتج: 107 print(0b1101011) # الناتج: 253 (251 + 2) print(0xFB + 0b10) # output: 13 print(0o15)
When the program is run, the output is:
107 253 13
We can convert one number to another. This is also called type casting.
If one of the operands is a floating-point number, then operations such as addition, subtraction, etc. will force integers to implicitly (automatically) float.
>>> 1 + 2.0 3.0
We can see above that 1 (integer) is forced to convert to 1.0 (float) for addition, and the result is also a floating-point number.
We can also use built-in functions like int(), float(), and complex() to perform explicit conversions between types. These functions can even convert fromStringConversion.
>>> int(2.3) 2 >>> int(-2.8) -2 >>> float(5) 5.0 >>> complex('3+5j') (3+5j)
When converting from float to integer, the number is truncated (close to zero integer).
The built-in class float in Python performs some calculations that may surprise us. We all know that the sum of 1.1 and 2.2 is 3.3, but Python seems to disagree.
>>> (1.1 + 2.2) == 3.3 False
What's going on?
It turns out that floating-point numbers are implemented as binary fractions in computer hardware because computers only understand binary (0 and 1). For this reason, most of the decimal fractions we know cannot be accurately stored in our computers.
Let's take an example. We cannot represent the fraction 1/3 as a decimal number. This will give 0.33333333 ... infinite, and we can only approximate it.
The original decimal fraction 0.1 will cause an infinite binary fraction 0.000110011001100110011 ... and our computer only stores a finite number of binary numbers.
This will only get close to 0.1, but it will never be equal. Therefore, this is a limitation of our computer hardware, not an error in Python.
>>> 1.1 + 2.2 3.3000000000000003
To overcome this issue, we can use the decimal module that comes with Python. The precision of floating-point numbers can be as high as 15 decimal places, while the decimal module has precision that can be set by the user.
import decimal # output: 0.1 print(0.1) # output: Decimal('0.1000000000000000055511151231257827021181583404541015625') إدراجُ (decimal.Decimal(0.1))
عندما نريدُ القيامُ بحساباتِ عشريةٍ كما في المدرسةِ، سنستخدمُ هذا المoduleً.
إنهُ يحافظُ على المعنىِ. نعلمُ أنُ 25.50 كيلوغرامًا أكثر دقةً من 25.5 كيلوغرامًا لأنُ لديهُ عشرةُ أرقامٍ عشريةً بدلاً من رقمٍ عشريٍ واحدٍ.
من استيرادُ decimal من decimal كـً D # إخراج: Decimal('3.3') إدراجُ (D('1.1') + D('2.2')) # إخراج: Decimal('3.000') إدراجُ (D('1.2') * D('2.50'))
لاحظُ الأصفارُ التالفةِ في المثالِ السابقِ.
قد نسألُ، لماذا لا نستخدمُ Decimal بدلاً من float في كل مرة؟ السببُ الرئيسيُ هو الكفاءةِ. يجبُ أن تكونُ العملياتُ العشريةُ أسرعُ من العملياتِ الثنائيةِ.
في الحالاتِ التالية، نستخدمُ عادةً العشريةً.
عندما نقومُ بعملياتِ ماليةِ تحتاجُ إلى تمثيلِ عشري دقيق.
عندما نريدُ تحديدُ مستوىُ الدقةِ المطلوبِ.
عندما نريدُ تنفيذُ مفهومُ الأعداد العشريةِ المحددةِ في المكانِ.
عندما نريدُ أن نقومُ بالعملياتِ كما في المدرسةُ
يقدمُ بايثونُ وحدةُ fractions لعملياتُ الأعدادِ العشريةً.
الأعداد العشريةُ تحتويُ على المولدِ والمقام، كلاهما من الأعداد الصحيحةِ. يدعمُ هذا المoduleُ خوارزمياتُ الأعدادِ الموجبةِ.
يمكننا إنشاءُ وحداتُ Fraction بطرقُ متعددةُ.
استيرادُ فئاتُ # إخراج: 3/2 إدراجُ (fractions.Fraction(1.5)) # إخراج: 5 إدراجُ (fractions.Fraction(5)) # إخراج: 1/3 إدراجُ (fractions.Fraction(1,3))
عندما نخلقُ النسب من العدد العشري، قد نحصلُ على بعضُ النتائجِ الاستثنائيةِ. هذا بسبب عدمُ الكمالِ في تمثيلُ العدد العشري الثنائي الذي تم مناقشته في الفصلِ السابقِ.
لحسن الحظ، تسمحُ الأعداد العشريةُ لنا باستخدامُ مثالِ النصوصِ. هذا هو الخيارُ المفضلُ عند استخدامِ الأرقامِ العشريةً.
استيرادُ فئاتُ # كـً عدد عشري # إخراج: 2476979795053773/2251799813685248 إدراجُ (fractions.Fraction(1.1)) # كـً نص # إخراج: 11/10 إدراجُ (fractions.Fraction('1.1'))
يُدعمُ هذا النوعُ من البياناتُ جميعُ العملياتُ الأساسيةُ. هناكُ بعضُ الأمثلةُ.
من استيرادُ فئاتُ منُ فئاتُ منقولةُ كـً ف # الايراد: 2/3 print(F(1, 3) + F(1, 3)) # الايراد: 6/5 print(1 / F(5, 6)) # الايراد: False print(F(-3, 10) > 0) # الايراد: True print(F(-3, 10) < 0)
يقدم بايثون مكتبات مشابهة، مثل math وrandom يمكنها تنفيذ عمليات رياضية مختلفة، مثل الدوال التربيعية، واللوغاريتم، والإحصاءات، وما إلى ذلك.
import math # الايراد: 3.141592653589793 print(math.pi) # الايراد: -1.0 print(math.cos(math.pi)) # الايراد: 22026.465794806718 print(math.exp(10)) # الايراد: 3.0 print(math.log10(1000)) # الايراد: 1.1752011936438014 print(math.sinh(1)) # الايراد: 720 print(math.factorial(6))
هذافي مكتبة الرياضيات بايثونقائمة الكاملة من الوظائف والخصائص المتاحة.
import random # الايراد: 16 print(random.randrange(10, 20)) x = ['a', 'b', 'c', 'd', 'e'] # الحصول على خيار عشوائي print(random.choice(x)) # اعادة ترتيب قائمة x random.shuffle(x) # طباعة x بعد اعادة ترتيبها print(x) # طباعة عنصر عشوائي print(random.random())
نتيجة الايراد (نتيجة عشوائية):
19 c ['e', 'a', 'd', 'c', 'b'] 0.707947055817621
هذافي مكتبة العشوائية بايثونقائمة الكاملة من الوظائف والخصائص المتاحة.