English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الأدوات عبر الإنترنت

دروس بايثون الأساسية

الوظائف في Python

أنواع البيانات في Python

تحكم العمليات في بايثون

عمليات ملفات بايثون

الجسم والأشخاص في بايثون

التاريخ والوقت في بايثون

المعرفة المتقدمة في بايثون

دليل بايثون

الأعداد في بايثون، تحويلات النوع والعمليات الرياضية

في هذا المقال، ستتعرف على الأعداد المختلفة المستخدمة في بايثون، وكيفية تحويل نوع بيانات واحد إلى آخر، والعمليات الرياضية المدعومة في بايثون.

أنواع البيانات الرقمية في بايثون

يدعم بايثون الأعداد الصحيحة والأعداد العشرية والأعداد المعقدة. ويتم تعريفهم كـ 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

Data Type Conversion

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).

Python Decimal

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 في كل مرة؟ السببُ الرئيسيُ هو الكفاءةِ. يجبُ أن تكونُ العملياتُ العشريةُ أسرعُ من العملياتِ الثنائيةِ.

متى نستخدمُ 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

هذافي مكتبة العشوائية بايثونقائمة الكاملة من الوظائف والخصائص المتاحة.