بايثونالتعامل مع الأعداد
- مفهوم الأعداد
- أنواع الأعداد
- عرض الأعداد الصحيحة بأشكال مختلفة
- دوال تحويل أنواع الأعداد الموجودة
- دوال التعامل مع الأعداد الموجودة
- معنى كلمة
Module
- دوال و ثوابت الموديل
math
- دوال الموديل
random
مفهوم الأعداد
في هذا الدرس سنتعرف على أنواع الأعداد الموجودة في بايثون بالإضافة إلى الدوال التي يمكن استخدامها للتعامل معها سواء لتحويل أنواعها، إجراء عمليات حسابية عليها، توليد أرقام عشوائية و غيرها.
المتغيرات العددية في بايثون تعتبر Immutable مما يعني أنه عند تعريف متغير و تخزين قيمة عددية فيه فإنه سيتم حجز مكان لها في الذاكرة، و لكن إذا تم وضع قيمة جديدة في المتغير فإنه سيتم حجز مكان جديد لها في الذاكرة و وضع القيمة الجديدة فيه لأنه لا يمكن تعديل نفس القيمة في نفس المكان في الذاكرة.
بالنسبة لمساحة الذاكرة التي تم التخلي عنها فإنه سيتم حذفها بشكل تلقائي بعد مدة من قبل جامع القمامة ( Garbage Collector ).
أنواع الأعداد
عند تعريف متغير و تخزين عدد فيه، فإن مفسّر لغة بايثون يقوم بشكل تلقائي بتحليل نوع العدد الذي تم وضعه فيه حتى يحد نوع المتغير بشكل دقيق، مما يعني أنه إذا وضع فيه عدد صحيح فإن نوع المتغير سيكون int
و إذا وضع فيه عدد عشري ( أي يحتوي على فاصلة ) فإنه نوعه سيكون float
و هكذا.
أنواع الأعداد في بايثون تنقسم إلى 3 أنواع كما في الجدول التالي.
النوع | إستخدامه |
---|---|
int |
يستخدم لتخزين أعداد صحيحة. مثال x = 3 |
float |
يستخدم لتخزين أعداد تحتوي على فاصلة عشرية. مثال x = 1.5 |
complex |
يستخدم لتخزين أعداد مركبة ( Complex Number ) و التي غالباً ما يحتاجها المهندسون عند إجراء عمليات حسابية معقدة. و هنا يجب وضع الحرف J أو j بعد العدد حتى يعلم مفسّر بايثون أننا نقصد عدد مركب و ليس عدد عادي.مثال x = 4J |
في المثال التالي قمنا بتعريف ثلاث متغيرات و كل متغير وضعنا فيه قيمة رقمية مختلفة في النوع و القيمة.
بعدها قمنا بعرض نوع كل متغير منهم.
مثال
x = 3 # قيمته عبارة عن عدد صحيح ,x هنا قمنا بتعريف متغير إسمه y = 1.5 # قيمته عبارة عن عدد عشري ,y هنا قمنا بتعريف متغير إسمه z = 4J # قيمته عبارة عن عدد مركب ,z هنا قمنا بتعريف متغير إسمه print(type(x)) # x هنا طبعنا نوع قيمة المتغير print(type(y)) # y هنا طبعنا نوع قيمة المتغير print(type(z)) # z هنا طبعنا نوع قيمة المتغير
النتيجة
<class 'float'>
<class 'complex'>
عرض الأعداد الصحيحة بأشكال مختلفة
في بايثون يمكنك وضع 0x
لحفظ العدد بشكل Hexa-Decimal و يمكنك وضع 0o
لحفظ العدد بشكل Octal.
مثال
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 هنا قمنا بطباعة نوع قيمة المتغير
النتيجة
b = 34
type of a is: <class 'int'>
type of b is: <class 'int'>
نلاحظ أنه عند طباعة قيم المتغيرين a
و b
فإنها عرضت كأعداد صحيحة عادية و مفهومة و قد تم ترجمتها لأعداد صحيحة نوعها int
.
لست مضطراً أن تعريف كيف تم حساب قيمة الأعداد لأن هذا الأمر ليس من أساسيات البرمجة بل يتم دراسته في مواد أخرى مرتبطة بالحاسوب مثل مادة عمارة الحاسب و في مادة الشبكات.
دوال تحويل أنواع الأعداد الموجودة
الجدول التالي يحتوي على دوال جاهزة في بايثون تستخدم لتحويل أنواع الأعداد و لتحديد أنواع الأعداد التي نريد تخزينها بداخل المتغيرات.
الدالة مع تعريفها | |
---|---|
1 | int(x)
ترجع قيمة العدد الذي نمرره لها مكان المتغير x كعدد صحيح نوعه int .تابع القراءة |
2 | int(x, base)
ترجع قيمة النص الذي نمرره لها مكان المتغير x كعدد صحيح نوعه int .مكان المتغير base نمرر عدد يمثل الطريقة التي نريد بها تحويل قيمة المتغير x .تابع القراءة |
3 | float(x)
ترجع قيمة المتغير الذي نمرره لها مكان المتغير x كعدد عشري (أي يحتوي على فاصلة) نوعه float .تابع القراءة |
4 | complex(real, imag)
ترجع قيمة المتغير real و المتغير imag كعدد مركب (Complex Number).العدد المركب بطبيعته يحتوي على قيمتين: - الأولى هي قيمة المتغير real كالقيمة الحقيقية (Real Part).- الثانية هي قيمة المتغير imag كقيمة الخيالية (Imaginary Part).ملاحظة: في حال قمت بتمرير قيمة واحدة لها، فإنك هنا فعلياً تدخل القيمة الحقيقية للعدد المركب، و القيمة الوهمية تعتبر 0. تابع القراءة |
دوال التعامل مع الأعداد الموجودة
في الجدول التالي ذكرنا بعض الدوال الجاهزة في بايثون و التي تستخدم للتعامل مع الأعداد.
الدالة مع تعريفها | |
---|---|
1 | abs(x)
ترجع القيمة المطلقة ( Absolute Value ) للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
2 | round(x [, n])
ترجع أقرب عدد صحيح للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
3 | max(x1, x2, ...)
ترجع العدد الأكبر من بين مجموعة الأعداد التي يتم تمريرها لها عند استدعائها.تابع القراءة |
4 | min(x1, x2, ...)
ترجع العدد الأصغر من بين مجموعة الأعداد التي يتم تمريرها لها عند استدعائها.تابع القراءة |
معنى كلمة Module
في بايثون، الموديول ( Module ) هو ملف بايثون عادي يمكنه أن يحتوي على متغيرات، دوال، كلاسات إلخ..
لتضمين شيء من الموديول في البرنامج نفعل له import
و هكذا نصبح قادرين على استخدامه بشكل مباشر.
ستتعلم طريقة إنشاء Module و التعامل معه بالتفصيل في درس لاحقاً في هذه الدورة.
كما أنك ستتعرف في هذه الدورة على العديد من الـ Modules الموجودة في بايثون و سنتعرف في هذا الدرس على اثنين منهم هما math
و random
.
دوال و ثوابت الموديل math
math
هو موديل جاهز في بايثون يحتوي على دوال تستخدم في العمليات الحسابية و الهندسية، ذكرنا أهمها في الجدول التالي.
الدالة مع تعريفها | |
---|---|
1 | ceil(x)
ترجع العدد الصحيح الأكبر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
2 | floor(x)
ترجع العدد الصحيح الأصغر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
3 | pow(x, y)
ترجع ناتج مضاعفة العدد الذي نمرره لها مكان الباراميتر x بالعدد الذي نمرره لها مكان الباراميتر y .تابع القراءة |
4 | sqrt(x)
ترجع قيمة الجذر التربيعي ( Square Root ) للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
5 | exp(x)
ترجع قيمة المتسارع ( Exponential ) للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
6 | log(x [,base])
ترجع قيمة اللوغارتم ( Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x مع إمكانية تحديد نوع الوحدة لهذا العدد.تابع القراءة |
7 | log2(x)
ترجع قيمة اللوغارتم الثنائي ( Binary Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x .يمكن إستدعاء هذه الدالة بدل إستدعاء الدالة log(x, 2) .تابع القراءة |
8 | log10(x)
ترجع قيمة اللوغارتم العشري ( Decimal Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x .يمكن إستدعاء هذه الدالة بدل إستدعاء الدالة log(x, 10) .تابع القراءة |
9 | sin(x)
ترجع قيمة جيب الزاوية أو الجيب ( Sine ) للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
10 | cos(x)
ترجع قيمة الجيب العكسي أو جيب الزاوية القوسي ( Cosine ) للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
11 | tan(x)
ترجع قيمة الظل أو ظل الزاوية أو المماس ( Tangent ) للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
12 | asin(x)
ترجع قيمة الجيب العكسي أو جيب الزاوية القوسي ( Arc Sine ) للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
13 | acos(x)
ترجع قيمة جيب التمام العكسي أو جيب تمام الزاوية القوسي ( Arc Cosine ) للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
14 | atan(x)
ترجع قيمة الظل العكسي أو ظل الزاوية القوسي ( Arc Tangent ) للعدد الذي نمرره لها مكان الباراميتر x .تابع القراءة |
15 | degrees(x)
ترجع قيمة الزاوية ( Degree ) التي نمررها لها كعدد بالراديان ( Radian ) مكان الباراميتر x .تابع القراءة |
16 | radians(x)
ترجع قيمة الراديان ( Radian ) التي نمررها لها كعدد بالزاوية ( Degree ) مكان الباراميتر x .تابع القراءة |
17 | gcd(x, y)
ترجع عدد صحيح يمثل القاسم المشترك الأكبر ( Greatest Common Divisor ) بين العددين اللذين نمررهما لها مكان الباراميترين x و y .تابع القراءة |
الموديل math
يحتوي أيضاً على الثوابت التالية التي تتعلق بالرياضيات.
الثابت | تعريفه |
---|---|
E |
يحتوي على قيمة المتسارع ( Exponential ). |
PI |
يحتوي على قيمة النسبة الثابتة ( PI ). |
دوال الموديل random
random
هو موديل جاهز في بايثون يحتوي على دوال تستخدم في العمليات الحسابية و الهندسية، ذكرنا أهمها في الجدول التالي.
الدالة مع تعريفها | |
---|---|
1 | random()
ترجع عدد عشري عشوائي بين 0.0 و 1.0.تابع القراءة |
2 | uniform(a, b)
ترجع عدد عشري عشوائي بين القيمة التي نمررها لها مكان الباراميتر a و القيمة التي نمررها لها مكان الباراميتر b .تابع القراءة |
3 | randrange([start,] stop [,step])
ترجع عدد صحيح عشوائي بين 0 و القيمة التي نمررها لها مكان الباراميتر stop .أو ترجع عدد صحيح عشوائي بين القيمة التي نمررها لها مكان الباراميتر start و القيمة التي نمررها لها مكان الباراميتر stop .تابع القراءة |
4 | choice(seq)
ترجع قيمة عشوائية من بين عناصر أي سلسلة ( Sequence ) نمررها لها.السلسلة ممكن أن تكون مصفوفة من الأعداد أو نص عادي (أي سلسلة من الأحرف). فمثلاً، إذا مررنا لها مصفوفة من الأعداد فإنها ترجع عدد عشوائي من ضمن هذه المصفوفة و إذا مررنا لها نص فإنها ترجع حرف عشوائي من ضمن هذا النص. تابع القراءة |
5 | shuffle(x)
نمرر لها مصفوفة مكان الباراميتر x فتبدل أماكن عناصرها بشكل عشوائي.تابع القراءة |