الفرق بين المراجعتين لصفحة: «Python/fraction»

من موسوعة حسوب
لا ملخص تعديل
طلا ملخص تعديل
سطر 1: سطر 1:
{{DISPLAYTITLE:الأعداد الكسرية في بايثون}}
<noinclude>{{DISPLAYTITLE:الأعداد الكسرية في بايثون}}</noinclude>
 
تتيح وحدة fractions التعامل مع الأعداد الكسرية وإجراء العمليات الحسابية المختلفة عليها.
تتيح وحدة fractions التعامل مع الأعداد الكسرية وإجراء العمليات الحسابية المختلفة عليها.


يمكن إنشاء نسخة من الكائن Fraction باستخدام زوج من [[Python/Types/int|الأعداد الصحيحة]] أو من عدد كسري آخر أو من [[Python/Types/str|سلسلة نصية]].<syntaxhighlight lang="python3">
يمكن إنشاء نسخة من الكائن Fraction باستخدام زوج من [[Python/Types/int|الأعداد الصحيحة]] أو من عدد كسري آخر أو من [[Python/Types/str|سلسلة نصية]].<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>في السطر الأول من المثال السابق جرى استخدام زوج من [[Python/Types/int|الأعداد الصحيحة]] لإنشاء نسخة جديدة من الصنف Fraction. يجب أن يكون كلّ من البسط numerator والمقام denominator نسخًا من الصنف <code>numbers.Rational</code> ونحصل بذلك على نسخة جديدة من الصنف <code>Fraction</code> تحمل القيمة (البسط\المقام). إن كانت قيمة المقام تساوي <code>0</code> تطلق اللغة خطأً من نوع <code>ZeroDivisionError</code>. 
</syntaxhighlight>في السطر الأول من المثال السابق جرى استخدام زوج من [[Python/Types/int|الأعداد الصحيحة]] لإنشاء نسخة جديدة من الصنف Fraction. يجب أن يكون كلّ من البسط numerator والمقام denominator نسخًا من الصنف <code>numbers.Rational</code> ونحصل بذلك على نسخة جديدة من الصنف <code>Fraction</code> تحمل القيمة (البسط\المقام). إن كانت قيمة المقام تساوي <code>0</code> تطلق اللغة خطأً من نوع <code>ZeroDivisionError</code>. 
سطر 30: سطر 25:
<syntaxhighlight lang="python3">
<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> يرث الصنف المجرّد الأساسي <code>numbers.Rational</code> ويستخدم جميع التوابع والعمليات التي يقدّمها الصنف الأب. يمكن تقطيع hash نُسَخ <code>Fraction</code> ويجب أن تعامل على أنّها غير قابلة للتغيير immutable. 
الصنف <code>Fraction</code> يرث الصنف المجرّد الأساسي <code>numbers.Rational</code> ويستخدم جميع التوابع والعمليات التي يقدّمها الصنف الأب. يمكن تقطيع hash نُسَخ <code>Fraction</code> ويجب أن تعامل على أنّها غير قابلة للتغيير immutable. 


== تعديل في الإصدار 3.2 ==
== التغييرات في الإصدار 3.2 ==
أصبح بالإمكان استخدام نسخ float و decimal.Decimal في مشيد Fraction.
أصبح بالإمكان استخدام نسخ float و decimal.Decimal في مشيد Fraction.



مراجعة 04:02، 24 فبراير 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. وفي كلتا الحالتين يمكن للسلسلة النصية أن تتضمّن مسافات بيضاء في بدايتها أو نهايتها.

أمثلة

>>>
>>> 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 يرث الصنف المجرّد الأساسي numbers.Rational ويستخدم جميع التوابع والعمليات التي يقدّمها الصنف الأب. يمكن تقطيع hash نُسَخ Fraction ويجب أن تعامل على أنّها غير قابلة للتغيير immutable. 

التغييرات في الإصدار 3.2

أصبح بالإمكان استخدام نسخ float و decimal.Decimal في مشيد Fraction.

مصادر