الفرق بين المراجعتين لصفحة: «Python/fraction»
أنشأ الصفحة ب'{{DISPLAYTITLE:الأعداد الكسرية في بايثون}} تتيح وحدة fractions التعامل مع الأعداد الكسرية وإجراء العملي...' |
لا ملخص تعديل |
||
(8 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة) | |||
سطر 1: | سطر 1: | ||
{{DISPLAYTITLE:الأعداد الكسرية في بايثون}} | <noinclude>{{DISPLAYTITLE:الأعداد الكسرية في بايثون}}</noinclude> | ||
تتيح وحدة <code>fractions</code> التعامل مع الأعداد الكسرية وإجراء العمليات الحسابية المختلفة عليها. | |||
يمكن إنشاء نسخة من الكائن <code>Fraction</code> باستخدام زوج من [[Python/int|الأعداد الصحيحة]] أو من عدد كسري آخر أو من [[Python/str|سلسلة نصية]].<syntaxhighlight lang="python3"> | |||
يمكن إنشاء نسخة من الكائن Fraction باستخدام زوج من الأعداد الصحيحة أو من عدد كسري آخر أو من سلسلة نصية.<syntaxhighlight lang="python3"> | |||
class fractions.Fraction(numerator=0, denominator=1) | class fractions.Fraction(numerator=0, denominator=1) | ||
class fractions.Fraction(other_fraction) | class fractions.Fraction(other_fraction) | ||
class fractions.Fraction(float) | class fractions.Fraction(float) | ||
class fractions.Fraction(decimal) | class fractions.Fraction(decimal) | ||
class fractions.Fraction(string) | class fractions.Fraction(string) | ||
</syntaxhighlight>في السطر الأول من المثال السابق جرى استخدام زوج من | </syntaxhighlight>في السطر الأول من المثال السابق جرى استخدام زوج من [[Python/int|الأعداد الصحيحة]] لإنشاء نسخة جديدة من الصنف <code>Fraction</code>. يجب أن يكون كلّ من البسط <code>numerator</code> والمقام <code>denominator</code> نسخًا من الصنف <code>numbers.Rational</code> ونحصل بذلك على نسخة جديدة من الصنف <code>Fraction</code> تحمل القيمة (البسط/المقام). إن كانت قيمة المقام تساوي <code>0</code> فستطلق اللغة خطأً من نوع <code>ZeroDivisionError</code>. | ||
في السطر الثاني يتطلب إنشاء نسخة الصنف <code>Fraction</code> استخدام عدد كسري آخر والذي يشترط أن يكون نسخة من الصنف <code>numbers.Rational</code>، وبذلك تعاد نسخة من الصنف Fraction تحمل نفس القيمة. | في السطر الثاني يتطلب إنشاء نسخة الصنف <code>Fraction</code> استخدام عدد كسري آخر والذي يشترط أن يكون نسخة من الصنف <code>numbers.Rational</code>، وبذلك تعاد نسخة من الصنف Fraction تحمل نفس القيمة. | ||
في السطرين الثالث والرابع يمكن استخدام الأعداد العشرية ذات الفاصلة العائمة float أو نسخة من الكائن decimal. | في السطرين الثالث والرابع يمكن استخدام [[Python/float|الأعداد العشرية ذات الفاصلة العائمة]] <code>float</code> أو نسخة من الكائن <code>[[Python/decimal|decimal.Decimal]]</code>، ونحصل بذلك على نسخة من الصنف <code>Fraction</code> تحمل القيمة ذاتها. | ||
لاحظ أنّه بسبب وجود مشاكل في الأعداد العشرية ذات الفاصلة العائمة المعتمدة على النظام الثنائي (راجع العمليات الحسابية على الأعداد العشرية ذات الفاصلة العائمة)، فإنّ | لاحظ أنّه بسبب وجود مشاكل في الأعداد العشرية ذات الفاصلة العائمة المعتمدة على النظام الثنائي (راجع [[Python/float_arithmatics|مشاكل العمليات الحسابية على الأعداد العشرية ذات الفاصلة العائمة]])، فإنّ المعامل في العبارة <code>Fraction(1.1)</code> لا يساوي بالضبط <code>11/10</code>؛ لذا فإنّ هذه العبارة لا تعيد <code>Fraction(11, 10)</code> كما هو متوقع. | ||
أما في السطر الأخير من المثال السابق فتستخدم عبارة إنشاء نسخة الكائن Fraction نسخة من سلسلة نصية أو unicode. عادة ما تكون صيغة هذه النسخة كما يلي:<syntaxhighlight> | أما في السطر الأخير من المثال السابق فتستخدم عبارة إنشاء نسخة الكائن <code>Fraction</code> نسخة من [[Python/str|سلسلة نصية]] أو unicode. عادة ما تكون صيغة هذه النسخة كما يلي:<syntaxhighlight lang="text"> | ||
[sign] numerator ['/' denominator] | [sign] numerator ['/' denominator] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
حيث تكون الإشارة الاختيارية <code>'+'</code> أو <code>'-'</code> والبسط والمقام (إن وجد) سلاسل نصية تتضمن أعدادًا عشرية، إضافة إلى ذلك فإن أيّ سلسلة نصية تمثّل قيمة محدّدة وصالحة للاستخدام في | حيث تكون الإشارة الاختيارية <code>'+'</code> أو <code>'-'</code> والبسط والمقام (إن وجد) سلاسل نصية تتضمن أعدادًا عشرية، إضافة إلى ذلك فإن أيّ [[Python/Types/str|سلسلة نصية]] تمثّل قيمة محدّدة وصالحة للاستخدام في الدالة البانية <code>[[Python/float|float]]</code> تكون صالحة للاستخدام في الدالة البانية <code>Fraction</code>. وفي كلتا الحالتين يمكن للسلسلة النصية أن تتضمّن مسافات بيضاء في بدايتها أو نهايتها. | ||
== أمثلة == | == أمثلة == | ||
<syntaxhighlight lang="python3"> | أمثلة نموذجية عن استخدام الوحدة Fraction لإجراء مختلف العمليات على الأعداد:<syntaxhighlight lang="python3"> | ||
>>> | >>> | ||
>>> from fractions import Fraction | >>> from fractions import Fraction | ||
>>> Fraction(16, -10) | >>> Fraction(16, -10) | ||
Fraction(-8, 5) | Fraction(-8, 5) | ||
>>> Fraction(123) | >>> Fraction(123) | ||
Fraction(123, 1) | Fraction(123, 1) | ||
>>> Fraction() | >>> Fraction() | ||
Fraction(0, 1) | Fraction(0, 1) | ||
>>> Fraction('3/7') | >>> Fraction('3/7') | ||
Fraction(3, 7) | Fraction(3, 7) | ||
>>> Fraction(' -3/7 ') | >>> Fraction(' -3/7 ') | ||
Fraction(-3, 7) | Fraction(-3, 7) | ||
>>> Fraction('1.414213 \t\n') | >>> Fraction('1.414213 \t\n') | ||
Fraction(1414213, 1000000) | Fraction(1414213, 1000000) | ||
>>> Fraction('-.125') | >>> Fraction('-.125') | ||
Fraction(-1, 8) | Fraction(-1, 8) | ||
>>> Fraction('7e-6') | >>> Fraction('7e-6') | ||
Fraction(7, 1000000) | Fraction(7, 1000000) | ||
>>> Fraction(2.25) | >>> Fraction(2.25) | ||
Fraction(9, 4) | Fraction(9, 4) | ||
>>> Fraction(1.1) | >>> Fraction(1.1) | ||
Fraction(2476979795053773, 2251799813685248) | Fraction(2476979795053773, 2251799813685248) | ||
>>> from decimal import Decimal | >>> from decimal import Decimal | ||
>>> Fraction(Decimal('1.1')) | >>> Fraction(Decimal('1.1')) | ||
Fraction(11, 10) | Fraction(11, 10) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
الصنف <code>Fraction</code> يرث الصنف المجرّد الأساسي (abstract base class) <code>numbers.Rational</code> ويستخدم جميع التوابع والعمليات التي يقدّمها الصنف الأب. يمكن تقطيع hash نُسَخ <code>Fraction</code> ويجب أن تعامل على أنّها غير قابلة للتغيير (immutable). | |||
'''ملاحظة:''' أصبح بالإمكان في الإصدار 3.2 من بايثون استخدام نسخ <code>float</code> و <code>decimal.Decimal</code> في الدالة البانية <code>Fraction</code>. | |||
== | == انظر أيضًا == | ||
* [[Python/str|السلاسل النصية str في بايثون]]. | |||
* [[Python/float|الأعداد العشرية float في بايثون]]. | |||
* [[Python/complex|الأعداد المركبة في بايثون]]. | |||
== مصادر == | == مصادر == | ||
* صفحة [https://docs.python.org/3/library/fractions.html#module-fractions Rational Numbers] في توثيق بايثون الرسمي. | * صفحة [https://docs.python.org/3/library/fractions.html#module-fractions Rational Numbers] في توثيق بايثون الرسمي. | ||
[[تصنيف:Python]] | |||
[[تصنيف:Python Types]] |
المراجعة الحالية بتاريخ 07:56، 22 مايو 2018
تتيح وحدة fractions
التعامل مع الأعداد الكسرية وإجراء العمليات الحسابية المختلفة عليها.
يمكن إنشاء نسخة من الكائن Fraction
باستخدام زوج من الأعداد الصحيحة أو من عدد كسري آخر أو من سلسلة نصية.
class fractions.Fraction(numerator=0, denominator=1)
class fractions.Fraction(other_fraction)
class fractions.Fraction(float)
class fractions.Fraction(decimal)
class fractions.Fraction(string)
في السطر الأول من المثال السابق جرى استخدام زوج من الأعداد الصحيحة لإنشاء نسخة جديدة من الصنف Fraction
. يجب أن يكون كلّ من البسط numerator
والمقام denominator
نسخًا من الصنف numbers.Rational
ونحصل بذلك على نسخة جديدة من الصنف Fraction
تحمل القيمة (البسط/المقام). إن كانت قيمة المقام تساوي 0
فستطلق اللغة خطأً من نوع ZeroDivisionError
.
في السطر الثاني يتطلب إنشاء نسخة الصنف Fraction
استخدام عدد كسري آخر والذي يشترط أن يكون نسخة من الصنف numbers.Rational
، وبذلك تعاد نسخة من الصنف Fraction تحمل نفس القيمة.
في السطرين الثالث والرابع يمكن استخدام الأعداد العشرية ذات الفاصلة العائمة float
أو نسخة من الكائن decimal.Decimal
، ونحصل بذلك على نسخة من الصنف Fraction
تحمل القيمة ذاتها.
لاحظ أنّه بسبب وجود مشاكل في الأعداد العشرية ذات الفاصلة العائمة المعتمدة على النظام الثنائي (راجع مشاكل العمليات الحسابية على الأعداد العشرية ذات الفاصلة العائمة)، فإنّ المعامل في العبارة Fraction(1.1)
لا يساوي بالضبط 11/10
؛ لذا فإنّ هذه العبارة لا تعيد Fraction(11, 10)
كما هو متوقع.
أما في السطر الأخير من المثال السابق فتستخدم عبارة إنشاء نسخة الكائن Fraction
نسخة من سلسلة نصية أو unicode. عادة ما تكون صيغة هذه النسخة كما يلي:
[sign] numerator ['/' denominator]
حيث تكون الإشارة الاختيارية '+'
أو '-'
والبسط والمقام (إن وجد) سلاسل نصية تتضمن أعدادًا عشرية، إضافة إلى ذلك فإن أيّ سلسلة نصية تمثّل قيمة محدّدة وصالحة للاستخدام في الدالة البانية float
تكون صالحة للاستخدام في الدالة البانية Fraction
. وفي كلتا الحالتين يمكن للسلسلة النصية أن تتضمّن مسافات بيضاء في بدايتها أو نهايتها.
أمثلة
أمثلة نموذجية عن استخدام الوحدة Fraction لإجراء مختلف العمليات على الأعداد:
>>>
>>> from fractions import Fraction
>>> Fraction(16, -10)
Fraction(-8, 5)
>>> Fraction(123)
Fraction(123, 1)
>>> Fraction()
Fraction(0, 1)
>>> Fraction('3/7')
Fraction(3, 7)
>>> Fraction(' -3/7 ')
Fraction(-3, 7)
>>> Fraction('1.414213 \t\n')
Fraction(1414213, 1000000)
>>> Fraction('-.125')
Fraction(-1, 8)
>>> Fraction('7e-6')
Fraction(7, 1000000)
>>> Fraction(2.25)
Fraction(9, 4)
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> from decimal import Decimal
>>> Fraction(Decimal('1.1'))
Fraction(11, 10)
الصنف Fraction
يرث الصنف المجرّد الأساسي (abstract base class) numbers.Rational
ويستخدم جميع التوابع والعمليات التي يقدّمها الصنف الأب. يمكن تقطيع hash نُسَخ Fraction
ويجب أن تعامل على أنّها غير قابلة للتغيير (immutable).
ملاحظة: أصبح بالإمكان في الإصدار 3.2 من بايثون استخدام نسخ float
و decimal.Decimal
في الدالة البانية Fraction
.
انظر أيضًا
مصادر
- صفحة Rational Numbers في توثيق بايثون الرسمي.