بايثون التعامل مع الأعداد

مفهوم الأعداد

في هذا الدرس ستتعرف على أنواع الأعداد و الدوال الجاهزة في بايثون للتعامل معها.


معلومة تقنية

المتغيرات العددية في بايثون تعتبر كلها Immutable, و هذا يعني أنك عندما تقوم بتعريف أي متغير و تعطيه قيمة عددية فإن هذه القيمة يحجز لها مكان في الذاكرة.
لكن إذا قمت بإعطاء قيمة جديدة لهذا المتغير فإنه سيتم حذف القيمة القديمة من الذاكرة و إنشاء مكان جديد في الذاكرة و وضع القيمة الجديدة فيه لأنه لا يمكن تعديل نفس القيمة في نفس المكان في الذاكرة.

أنواع الأعداد

عند تعريف متغير و تخزين عدد فيه, فإن مفسّر لغة بايثون سيقوم بشكل تلقائي بتحديد نوع هذا المتغير بناءاً على نوع القيمة العددية التي تم إسنادها إليه.
فإذا وضعت فيه عدد صحيح, يصبح نوعه int. و إذا وضعت فيه عدد عشري ( أي يحتوي على فاصلة ),, يصبح نوعه float و هكذا.


أنواع الأعداد في بايثون تنقسم إلى 3 أنواع كما في الجدول التالي.

النوع إستخدامه مثال
int يستخدم لتخزين أعداد صحيحة. x = 3
float يستخدم لتخزين أعداد تحتوي على فاصلة عشرية. x = 1.5
complex يستخدم لتخزين أعداد مركبة (Complex Number) و التي غالباً ما يحتاجها المهندسون عند إجراء عمليات حاسبية معقدة.
ملاحظة: هنا يجب وضع الحرف J أو j مباشرةً بعد العدد حتى يعرف مفسّر بايثون أنك تقصد عدد مركب و ليس عدد عادي.
x = 4J

في المثال التالي قمنا بتعريف ثلاث متغيرات و كل متغير وضعنا فيه قيمة عددية مختلفة في النوع و القيمة. بعدها قمنا بعرض نوع كل متغير منهم.

مثال

Test.py
x = 3            # قيمته عبارة عن عدد صحيح ,x هنا قمنا بتعريف متغير إسمه
y = 1.5          #  قيمته عبارة عن عدد عشري ,y هنا قمنا بتعريف متغير إسمه
z = 4J           #   قيمته عبارة عن عدد مركب ,z هنا قمنا بتعريف متغير إسمه

print(type(x))   # x هنا طبعنا نوع قيمة المتغير
print(type(y))   # y هنا طبعنا نوع قيمة المتغير
print(type(z))   # z هنا طبعنا نوع قيمة المتغير
		

سنحصل على النتيجة التالية عند التشغيل.

<class 'int'>
<class 'float'>
<class 'complex'>

عرض الأعداد الصحيحة بأشكال مختلفة

في بايثون يمكنك حفظ أعداد صحيحة بشكل Hexa-Decimal و بشكل Octal.
ملاحظة: لست مضطراً أن تفهم الكود التالي لأن عرض الأعداد بأشكال مختلفة تتعلمه في مادة تسمى عمارة الحاسب و في مادة الشبكات.

مثال

Test.py
a = 0xA03                         # Hexa-decimal قيمته عبارة عن عدد صحيح لكننا كتبناها كـ ,a هنا قمنا بتعريف متغير إسمه
b = 0o42                          # Octal قيمته عبارة عن عدد صحيح لكننا كتبناها كـ ,b هنا قمنا بتعريف متغير إسمه

print('a =', a)                   # a هنا قمنا بطباعة قيمة المتغير
print('b =', b)                   # b هنا قمنا بطباعة قيمة المتغير

print('type of a is:', type(a))   # a هنا قمنا بطباعة نوع قيمة المتغير
print('type of b is:', type(b))   # b هنا قمنا بطباعة نوع قيمة المتغير
		

سنحصل على النتيجة التالية عند التشغيل.

a = 2563
b = 34
type of a is: <class 'int'>
type of b is: <class 'int'>

نلاحظ أنه عند طباعة قيم المتغيرين a و b فإنها عرضت كأعداد صحيحة عادية و مفهومة.

و نلاحظ أيضاً أنه تم إعتبار قيم المتغيرين a و b هو أعداد صحيحة int.

دوال تحويل أنواع الأعداد الموجودة

الجدول التالي يحتوي على دوال جاهزة في بايثون تستخدم لتحويل أنواع الأعداد و لتحديد أنواع الأعداد التي نريد تخزينها بداخل المتغيرات.

الدالة مع تعريفها
int( x ) ترجع قيمة العدد الذي نمرره لها مكان المتغير x كعدد صحيح نوعه int.
تابع القراءة »
int( x, base ) ترجع قيمة النص الذي نمرره لها مكان المتغير x كعدد صحيح نوعه int.
مكان المتغير base نمرر عدد يمثل الطريقة التي نريد بها تحويل قيمة المتغير x.
تابع القراءة »
float( x ) ترجع قيمة المتغير الذي نمرره لها مكان المتغير x كعدد عشري (أي يحتوي على فاصلة) نوعه float.
تابع القراءة »
complex( real, imag ) ترجع قيمة المتغير real و المتغير imag كعدد مركب (Complex Number).
العدد المركب بطبيعته يحتوي على قيمتين:
- الأولى هي قيمة المتغير real كالقيمة الحقيقية (Real Part).
- الثانية هي قيمة المتغير imag كقيمة الخيالية (Imaginary Part).
ملاحظة: في حال قمت بتمرير قيمة واحدة لها, فإنك هنا فعلياً تدخل القيمة الحقيقية للعدد المركب, و القيمة الوهمية تعتبر 0.
تابع القراءة »

دوال التعامل مع الأعداد الموجودة

في الجدول التالي ذكرنا بعض الدوال الجاهزة في بايثون و التي تستخدم للتعامل مع الأعداد.

الدالة مع تعريفها
abs( x ) ترجع القيمة المطلقة للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
round( x [, n] ) ترجع أقرب عدد صحيح للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
max( x1, x2, ... ) ترجع العدد الأكبر بين مجموعة الأعداد التي نمررها لها عند استدعائها.
تابع القراءة »
min( x1, x2, ... ) ترجع العدد الأصغر بين مجموعة الأعداد التي نمررها لها عند استدعائها.
تابع القراءة »

معنى كلمة Module

في بايثون, كلمة Module تعني ملف بايثون عادي يمكنه أن يحتوي على متغيرات, دوال, كلاسات إلخ..
لنستدعي هذا الملف ( أي الـ Module ) في برنامجنا بكل بساطة نفعل له import و هكذا نصبح قادرين على الوصول إلى الأشياء الموجودة فيه و استخدامها في برنامجنا.

كلمة Module تكتب موديل في اللغة العربية و سنعتمدها في الشروحات.


ملاحظة

سنشرح طريقة إنشاء Module و التعامل معه بتفصيل في درس خاص لاحقاً في هذه الدورة.
كما أنك ستتعرف في هذه الدورة على العديد من الـ Modules الموجودين في بايثون و سنتعرف في هذا الدرس على اثنين منهم هما math و random.

دوال و ثوابت الموديل math

math هو موديل جاهز في بايثون يحتوي على دوال تستخدم في العمليات الحسابية و الهندسية, ذكرنا بعضها في هذا الجدول.

الدالة مع تعريفها
ceil( x ) ترجع العدد الصحيح الأكبر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
floor( x ) ترجع العدد الصحيح الأصغر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
pow(x, y) ترجع الناتج من مضاعفة قيمة العدد الذي نمرره لها مكان الباراميتر x مضاعف بقيمة الباراميتر y.
تابع القراءة »
sqrt( x ) ترجع قيمة الجزر التربيعي (square root) للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
exp( x ) ترجع قيمة الـ exponential للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
log( x [,base] ) ترجع قيمة الـ Logarithm للعدد الذي نمرره لها مكان الباراميتر x مع إمكانية تحديد نوع الوحدة لهذا العدد.
تابع القراءة »
log2( x ) ترجع قيمة الـ Logarithm Base 2 للعدد الذي نمرره لها مكان الباراميتر x.
يمكن إستدعاء هذه الدالة بدل إستدعاء الدالة log(x, 2).
تابع القراءة »
log10( x ) ترجع قيمة الـ Logarithm Base 10 للعدد الذي نمرره لها مكان الباراميتر x.
يمكن إستدعاء هذه الدالة بدل إستدعاء الدالة log(x, 10).
تابع القراءة »
sin( x ) ترجع قيمة الـ sine للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
cos( x ) ترجع قيمة الـ cosine للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
tan( x ) ترجع قيمة الـ tangent للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
asin( x ) ترجع قيمة الـ arc sine للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
acos( x ) ترجع قيمة الـ arc cosine للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
atan( x ) ترجع قيمة الـ arc tangent للعدد الذي نمرره لها مكان الباراميتر x.
تابع القراءة »
degrees( x ) تحول قيمة العدد الذي نمرره لها مكان الباراميتر x لـ Degrees.
تابع القراءة »
radians( x ) تحول قيمة العدد الذي نمرره لها مكان الباراميتر x لـ Radians.
تابع القراءة »
gcd( x, y ) ترجع عدد صحيح يمثل القاسم المشترك الأكبر (Greatest Common Divisor) بين العددين اللذين نمررهما لها مكان الباراميترين x و y.
تابع القراءة »


الموديل math يحتوي أيضاً على الثوابت التالية التي تتعلق بالرياضيات.

إسم الثابت تعريفه
E يحتوي على قيمة الـ Exponential.
PI يحتوي على قيمة الـ PI.

شاهد المثال »

دوال الموديل random

random هو موديل جاهز في بايثون يحتوي على دوال تستخدم في العمليات الحسابية و الهندسية, ذكرنا بعضها في هذا الجدول.

الدالة مع تعريفها
random() ترجع عدد عشري عشوائي بين 0.0 و 1.0.
تابع القراءة »
uniform( a, b ) ترجع عدد عشري عشوائي بين القيمة التي نمررها لها مكان الباراميتر a و القيمة التي نمررها لها مكان الباراميتر b.
تابع القراءة »
randrange ( [start,] stop [,step] ) ترجع عدد صحيح عشوائي بين 0 و القيمة التي نمررها لها مكان الباراميتر stop.
أو ترجع عدد صحيح عشوائي بين القيمة التي نمررها لها مكان الباراميتر start و القيمة التي نمررها لها مكان الباراميتر stop.
تابع القراءة »
choice( seq ) ترجع قيمة عشوائية من بين عناصر أي سلسلة (Sequence) نمررها لها.
السلسلة ممكن أن تكون مصفوفة من الأعداد, أو نص عادي (أي سلسلة من الأحرف).
فمثلاً, إذا مررنا لها مصفوفة من الأعداد, ترجع عدد عشوائي من ضمن هذه المصفوفة. و إذا مررنا لها نص, ترجع حرف عشوائي من ضمن هذا النص.
تابع القراءة »
shuffle( x ) نمرر لها مصفوفة مكان الباراميتر x فتبدل أماكن عناصرها بشكل عشوائي.
تابع القراءة »

الدورات

أدوات مساعدة

الأقسام

دورات
مقالات أسئلة مشاريع كتب