الدرس الرابع : المكتبات وبعض الدوال الضّمنية

RTH

Developer

بسم الله الرحمن الرحيم
اللهم علّمنا ما ينفعنا وانفعنا بما علّمتنا إنك أنت العزيز الحكيم

سنتحدث في هذا الدرس عن المكتبات وبعض الدوال الخاصة بالسلاسل والأعداد.
1-المكتبات
يمكننا تشبيه المكتبات في Python بأدوات في صندوق للنجارة. لنفترض أن هناك نجار يعمل في ورشة خشب، وهذه الورشة مُجهزة بصندوق كبير يحتوي على مجموعة متنوعة من الأدوات، مثل مطارق ومناشير ومسامير ومثاقب، وهذه الأدوات تساعد النجار على إنجاز مهامه بكفاءة.
photo_2024-02-25_21-40-53.jpg

يقوم النجار بعمل مشابهه لعملك كمبرمج , حيث أن صندوق النجار هو كاللغة التي تستخدمها لعمل برامجك والأدوات الموجودة بالصندوق هي المكتبات حيث أنها ستسهل عليك العمل.
يمكننا تعريف المكتبات على أنها مجموعة من الأدوات والوظائف التي تساعد المبرمجين على كتابة البرامج بشكل أكثر فعاليّة وسهولة , حيث تتيح لك هذه المكتبات استخدام وظائف معينة (Method) دون الحاجة إلى إعادة كتابتها مما يسرع من عملية التطوير ويزيد من قوة ومرونة اللغة.

لنفترض أنك تريد كتابة برنامج لتحليل بيانات مالية.لعمل ذلك يمكنك استخدام مكتبة مثل pandas للتعامل مع البيانات بشكل مرن وفعال , هذه المكتبة توفر أدوات قوية لقراءة وتحليل البيانات، مما يجعل من السهل عليك تنظيف البيانات، وتحليلها، وتقديم تقارير عنها.
لاستخدام هذه المكتبات سنضع import قبل اسم المكتبة المراد استخدامها ويجب كتابتها في بداية البرنامج الخاص بك , وسوف نرى استخدام بعض المكتبات في وقت لاحق ولكننا سنتطرق إليها في هذا الدرس عند استخدام الدوال في الأعداد.



2.الدوال في السلاسل
من مميزات لغة بايثون أنها تحتوي على مجموعة من الدوال المبنية ضمنيًا داخل اللغة؛ فليس من الضروري إعادة كتابتها مرة أخرى فإذا أردت استخدامها ما عليك سوا إعطاء اسم هذه الدالّة وبعض المعلومات إن احتاجت الدالّة ذلك وقد تحدثنا في الدرس السابق عن بعض الدوال المستخدمة في السلاسل وسنكمل الحديث عن عدد أكبر منها:
مثال
وصّف الدالّة
اسم الدالة
Python:
message = "i love python"
print(message.capitalize())
المخرجات :
Python:
I love python
تقوم بتكبير أول حرف من النص
()Capitalize
Python:
a , b ,c = "2" , "45" , "679"
print(a.zfill(3))
print(b.zfill(3))
print(c.zfill(3))
المخرجات :
Python:
002
045
679
يُنظم الخانات بعدد ثابت,ويأخد معلومات إضافية وهي عدد الخانات
(width)Zfill
Python:
d = "I love python and c++ "
print(d.split())
e = "I-love-python-and-c++ "
print(e.split("-"))
f = "I-love-python-and-c++ "
print(f.split("-",2))
المخرجات :
Python:
['I', 'love', 'python', 'and', 'c++']
['I', 'love', 'python', 'and', 'c++ ']
['I', 'love', 'python-and-c++ ']
تقوم بتحويل السلسلة إلى قائمة من العناصر حيث أن كل عنصر يعبر عن جزء من النص, إذا لم يتم تزويده بأي معلومات, ويقوم بالفصل حسب الفراغات الموجودة بالسلسلة أما إذا أردنا أن يتم الفصل حسب حرف أو رمز معين موجود بالنص نقوم بتزويده ببعض المعلومات وأيضاً يمكننا تحديد عدد مرات الفصل .
تقوم هذه الدالة بالوضع الطبيعي بالفصل من جهة اليسار.
(spliter,max_split)split
Python:
g = "I-love-python-and-c++ "
print(g.rsplit("-",2))

المخرجات:

Python:
['I-love-python', 'and', 'c++ ']
تقوم بنفس عمل الدالة split ولكن من جهة اليمين.
(spliter,max_split)rsplit
Python:
h="shell"
print(h.center(11))
h="shell"
print(h.center(11,"*"))

المخرجات :

Python:
   shell
***shell***
تقوم بتوسيط السلسلة حيث يتم تزويده بمعلومتين إضافيتين هما الطول الإجمالي للسلسلة بعد التوسيط (width )
كما يتم تزويده بالحرف المراد ملء الفراغات به, فإذا لم يتم تزويده بالحرف يقوم بترك الفراغات كما هي.
(width, fillchar)center
Python:
p="shell"
print(p.rjust(11))
print(p.rjust(11,"*"))
print(p.ljust(11))
print(p.ljust(11,"*"))

المخرجات :

Python:
      shell
******shell
shell
shell******
تقوم بإضافة فراغات على يمين السلسلة أو على يسارها , حيث أنها تأخذ نفس المعلومات التي تحتاجها الدالة center
(width, fillchar)rjust
( width, fillchar)ljust
Python:
i="I love python and c++ ,but python is the easiest"
print(i.count("python"))
j="I love python and c++ ,but Python is the easiest"
print(j.count("python",0,23))

المخرجات:

Python:
2
1
تقوم بالبحث عن جزئية معينة(substring) من السلسلة وتقوم بإرجاع عدد مرات تكرار هذه الجزئية, بالوضع الطبيعي تقوم بالبحث بكامل السلسلة أما إذا أردنا عدم البحث في كامل النص يجب علينا تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه
(substring,start,end)count
Python:
k="I lOve pYthoN anD c++ "
print(k.swapcase())

المخرجات:

Python:
i LoVE PyTHOn ANd C++
تقوم بتبديل الأحرف الكبيرة إلى أحرف صغيرة والعكس صحيح
()Swapcase
Python:
m="I love python"
print(m.startswith("I"))
print(m.startswith("i"))
print(m.startswith("p",7,15))
المخرجات :
Python:
True
False
True
تفيد في معرفة ما إذا كانت السلسلة تبدأ بحرف معين وتقوم بإرجاع قيم منطقية (true ,false), بالوضع الطبيعي تقوم بالمقارنة بين أول حرف في السلسلة مع الـ substring المعطى أما إذا أردنا مقارنة جزء معين من النص يجب علينا تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه
(substring,start,end)startwith
Python:
n="I love python"
print(n.endswith("n"))
print(n.endswith("N"))
print(n.endswith("e",0,6))
المخرجات:
Python:
True
False
True
تفيد في معرفة ما إذا كانت السلسلة تنتهي بحرف معين وتقوم بإرجاع قيم منطقية (true, false), بالوضع الطبيعي تقوم بالمقارنة بين آخر حرف في السلسلة مع الـ substring المعطى أما إذا أردنا مقارنة جزء معين من النص يجب علينا تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه
(substring,start,end)endwith
Python:
o="I love python"
print(o.index("v"))
المخرجات :
Python:
4
برنامج آخر حدث فيه خطأ :
Python:
o="I love python"
print(o.index("v",6,8))
المخرجات :
Python:
Traceback (most recent call last):
  File "c:\Users\Desktop\python\tasks\task01\task01.py", line 56, in <module>
    print(o.index("v",6,8))
          ^^^^^^^^^^^^^^^^
ValueError: substring not found
كل سلسلة تحوي عدد من الأحرف وكل حرف له مؤشر خاص به وتسمى مجموعة المؤشرات لكل الأحرف (indexes).
هذه الدالة تساعدنا في معرفة مؤشر أي حرف في السلسلة, على الأقل يجب إعطاء هذه الدالة الحرف الذي ترغب في إرجاع المؤشر الخاص به وهنا يمكنك إعطاء أي حرف داخل السلسلة. أما إذا كنت تريد أن تبحث في جزئية معينة يجب عليك تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه

ملاحظة : يجب الإنتباه إلى أنه عند إعطاء الدالة حرف غير موجود يسبب ذلك بحدوث خطأ وتوقف عمل البرنامج
(char,start,end)index
Python:
q="I love python"
print(q.find("v"))
print(q.find("v",6,8))
المخرجات:
Python:
4
-1
هذه الدالة تقوم بنفس عمل الدالة index ولكن عند إعطاءها حرف غير موجود لا تقوم بإيقاف البرنامج وإنما تقوم بإعطاء النتيجة -1 كدليل على حدوث خطأ.
(char,start,end)find
Python:
s = "I\tlove\tpython"
print(s)
print(s.expandtabs(3))
المخرجات :
Python:
I       love    python
I  love  python
مقدار الـ tab في الوضع الطبيعي 6 فراغات يمكننا من خلال هذه الدالة التحكم بمقدار الفراغات الخاصة بالـ tab لذلك يجب تزويدها بعدد الفراغات التي تريده.
(value)expandtabs
Python:
w="one two three two two"
print(w.replace("two","2"))
w="one two three two two"
print(w.replace("two","2",1))
المخرجات :
Python:
one 2 three 2 2
one 2 three two two
تقوم هذه الدالة باستبدال قيمة موجودة داخل السلسلة بقيمة جديدة عن طريق إعطاء الدالة هذه القيم
معلومة: إذا كانت القيمة المراد استبدالها مكررة أكثر من مرة داخل السلسلة ,بالوضع الطبيعي تقوم باستبدال القيمة القديمة في كل الأماكن في السلسلة بالقيمة الجديدة, لكن إذا أردت أن تستبدل عدد معين من مرات التكرار عليك اخبار الدالة بهذا العدد (count)
replace (old value,new value,count)
Python:
z="   "
print(z.isspace())
z="I love python"
print(z.isspace())
المخرجات:
Python:
True
False
تقوم هذه الدالة بالتأكد من السلسلة إذا كانت فارغة وتقوم بهذه الحالة بإرجاع القيمة المنطقية (true) وفي حال عكس ذلك تقوم بإرجاع القيمة (false)
()isspace
Python:
y="I Love Python"
print(y.istitle())
y="i Love python"
print(y.istitle())
المخرجات :
Python:
True
False
تقوم هذه الدالة بالتأكد من السلسلة إذا كانت في حالة عنوان (أي أن أول حرف من كل كلمة كبير وباقي الأحرف صغيرة) وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()istitle
Python:
y="I LOVE PYTHON"
print(y.isupper())
y="I Love Python"
print(y.isupper())
المخرجات:
Python:
True
False
تقوم هذه الدالة من التأكد إذا ما كانت جميع أحرف السلسلة كبيرة وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()isupper
Python:
y="i love python"
print(y.islower())
y="I Love Python"
print(y.islower())
المخرجات:
Python:
True
False
تقوم هذه الدالة من التأكد إذا ما كانت جميع أحرف السلسلة صغيرة وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()islower
Python:
t="name"
print(t.isidentifier())
t="6name"
print(t.isidentifier())
المخرجات :
Python:
True
False
تقوم هذه الدالة بالتأكد من اسم المتغير إذا كان صحيح حسب القواعد الخاصة بكتابة المتغيرات فإذا كان الأسم صحيح تعطي القيمة المنطقية true وعكس ذلك تعطي false
()isidentifier
Python:
u= "Python"
print(u.isalpha())
u="Python 002"
print(u.isalpha())
المخرجات :
Python:
True
False
تقوم هذه الدالة بالتأكد مما إذا كانت السلسلة تحتوي على أحرف (A-Z) فقط وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()isalpha
Python:
v= "Python"
print(v.isalnum())
v="Python002"
print(v.isalnum())
v="Python002 #"
print(v.isalnum())
المخرجات :
Python:
True
True
False
تقوم هذه الدالة بالتأكد مما إذا كانت السلسلة تحتوي على أحرف (A-Z)وأرقام فقط وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()isalnum

3- الدوال في الأعداد
لاستخدام الدوال المنبية ضمنيًا في اللغة الخاصة بالأعداد يجب علينا استخدام مكتبة math على عكس الدوال في السلاسل فأنت لا تحتاج إلى استخدام المكتبات, وفي ما يلي بعض هذه الدوال.

مثال
وصف الدالة
اسم الدالة
Python:
import math
print(math.ceil(5.0))
print(math.ceil(5.3))
print(math.ceil(5.7))
المخرجات :
Python:
5
6
6
تقوم هذه الدالة بإرجاع العدد الصحيح الأكبر أو الذي يساوي العدد (x)
ceil( x)
Python:
import math
print(math.floor(5.0))
print(math.floor(5.3))
print(math.floor(5.7))
المخرجات :
Python:
5
5
5
تقوم هذه الدالة بإرجاع العدد الصحيح الأصغر أو الذي يساوي العدد (x)
floor( x)
Python:
pmport math
print(math.pow(5,3))
المخرجات :
Python:
125.0
تقوم هذه الدالة بإنشاء علاقة أُسيّة بين x و y حيث أن x تعبر عن الأساس والـ y تعبر عن الأُس.
pow(x, y)
Python:
import math
print(math.sqrt(64))
المخرجات :
Python:
8.0
تقوم هذه الدالة بإرجاع قيمة الجذر التربيعي (square root) للعدد x.
sqrt( x)
Python:
import math
print(math.exp(3))
المخرجات :
Python:
20.085536923187668
تقوم هذه الدالة بإنشاء علاقة أُسيّة بين الثابت العددي (هـ) الذي يساوي تقريبُا 2.7 والعدد x حيث أن هـ هي الأساس والـ x هي الأُس.
exp( x)
Python:
import math
print( math.log(5))
print( math.log(5, 2))
print( math.log(5, math.e))
المخرجات :
Python:
1.6094379124341003
2.321928094887362
1.6094379124341003
تقوم هذه الدالة بإرجاع قيمة الـ Logarithm للعدد x مع إمكانية تحديد الأساس لهذا العدد.
معلومة : يوجد أيضًا الدالتان log2( x) و log10( x) حيث أن الأساس بهما ثابت وما عليك سوا إعطاء قيمة العدد x مباشرة, قم بعمل بعض التدريبات عليهما
log(x, [base] )
Python:
import math
print(math.sin(math.pi/4))
print(math.cos(math.pi/4))
print(math.tan(math.pi/4))
المخرجات :
Python:
0.7071067811865476
0.7071067811865476
0.9999999999999999
تقوم هذه الدوال بإعطاء قيمة الجيب والجتا والظل للزاوية x حيث أن لغة بايثون تتعامل مع الزوايا بالراديان وليس بالدرجات.
sin( x)
(x)tan
(x) cos
Python:
import math
print(math.degrees(math.pi/4))
المخرجات :
Python:
45.0
تقوم هذه الدالة بتحويل الزاوية التي نمررها لها من الريديان إلى درجات.
degrees( x )
Python:
import math
print(math.radians(90))
المخرجات :
Python:
1.570796326794896
تقوم هذه الدالة بتحويل الزاوية التي نمررها لها من الدرجات إلى الريديان.
radians( x )
Python:
import math
print(math.gcd(45, 81))
المخرجات :
Python:
9
تقوم هذه الدالة بإرجاع عدد صحيح يمثل القاسم المشترك الأكبر (Greatest Common Divisor) بين العددين x و y.
gcd( x, y )

وهكذا نكون قد أنهينا درسنا بحمد الله وفضله
دمتم بحفظ الله ورعايته
 
بسم الله الرحمن الرحيم
اللهم علّمنا ما ينفعنا وانفعنا بما علّمتنا إنك أنت العزيز الحكيم

سنتحدث في هذا الدرس عن المكتبات وعن بعض الدوال الخاصة بالسلاسل والأعداد.
1-المكتبات
يمكننا تشبيه المكتبات في Python بأدوات في صندوق للنجارة. لنفترض أن هناك نجار يعمل في ورشة خشب، وهذه الورشة مُجهزة بصندوق كبير يحتوي على مجموعة متنوعة من الأدوات، مثل مطارق ومناشير ومسامير ومثاقب، وهذه الأدوات تساعد النجار على إنجاز مهامه بكفاءة.
يقوم النجار بعمل مشابهه لعملك كمبرمج , حيث أن صندوق النجار هو كاللغة التي تستخدمها لعمل برامجك والأدوات الموجودة بالصندوق هي المكتبات حيث أنها ستسهل عليك العمل.
يمكننا تعريف المكتبات على أنها مجموعة من الأدوات والوظائف التي تساعد المبرمجين على كتابة البرامج بشكل أكثر فعاليّة وسهولة , حيث تتيح لك هذه المكتبات استخدام وظائف معينة (Method) دون الحاجة إلى إعادة كتابتها مما يسرع من عملية التطوير ويزيد من قوة ومرونة اللغة.

لنفترض أنك تريد كتابة برنامج لتحليل بيانات مالية.لعمل ذلك يمكنك استخدام مكتبة مثل pandas للتعامل مع البيانات بشكل مرن وفعال , هذه المكتبة توفر أدوات قوية لقراءة وتحليل البيانات، مما يجعل من السهل عليك تنظيف البيانات، وتحليلها، وتقديم تقارير عنها.
لاستخدام هذه المكتبات سنضع import قبل اسم المكتبة المراد استخدامها ويجب كتابتها في بداية البرنامج الخاص بك , وسوف نرى استخدام بعض المكتبات في وقت لاحق ولكننا سنتطرق إليها في هذا الدرس عند استخدام الدوال في الأعداد.



2.الدوال في السلاسل
من مميزات لغة بايثون أنها تحتوي على مجموعة من الدوال المبنية ضمنيًا داخل اللغة؛ فليس من الضروري إعادة كتابتها مرة أخرى فإذا أردت استخدامها ما عليك سوا إعطاء اسم هذه الدالّة وبعض المعلومات إن احتاجت الدالّة ذلك وقد تحدثنا في الدرس السابق عن بعض الدوال المستخدمة في السلاسل وسنكمل الحديث عن عدد أكبر منها:
مثال
وصّف الدالّة
اسم الدالة
Python:
message = "i love python"
print(message.capitalize())
المخرجات :
Python:
I love python
تقوم بتكبير أول حرف من النص
()Capitalize
Python:
a , b ,c = "2" , "45" , "679"
print(a.zfill(3))
print(b.zfill(3))
print(c.zfill(3))
المخرجات :
Python:
002
045
679
يُنظم الخانات بعدد ثابت,ويأخد معلومات إضافية وهي عدد الخانات
(width)Zfill
Python:
d = "I love python and c++ "
print(d.split())
e = "I-love-python-and-c++ "
print(e.split("-"))
f = "I-love-python-and-c++ "
print(f.split("-",2))
المخرجات :
Python:
['I', 'love', 'python', 'and', 'c++']
['I', 'love', 'python', 'and', 'c++ ']
['I', 'love', 'python-and-c++ ']
تقوم بتحويل السلسلة إلى قائمة من العناصر حيث أن كل عنصر يعبر عن جزء من النص, إذا لم يتم تزويده بأي معلومات, ويقوم بالفصل حسب الفراغات الموجودة بالسلسلة أما إذا أردنا أن يتم الفصل حسب حرف أو رمز معين موجود بالنص نقوم بتزويده ببعض المعلومات وأيضاً يمكننا تحديد عدد مرات الفصل .
تقوم هذه الدالة بالوضع الطبيعي بالفصل من جهة اليسار.
(spliter,max_split)split
Python:
g = "I-love-python-and-c++ "
print(g.rsplit("-",2))

المخرجات:

Python:
['I-love-python', 'and', 'c++ ']
تقوم بنفس عمل الدالة split ولكن من جهة اليمين.
(spliter,max_split)rsplit
Python:
h="shell"
print(h.center(11))
h="shell"
print(h.center(11,"*"))

المخرجات :

Python:
   shell
***shell***
تقوم بتوسيط السلسلة حيث يتم تزويده بمعلومتين إضافيتين هما الطول الإجمالي للسلسلة بعد التوسيط (width )
كما يتم تزويده بالحرف المراد ملء الفراغات به, فإذا لم يتم تزويده بالحرف يقوم بترك الفراغات كما هي.
(width, fillchar)center
Python:
p="shell"
print(p.rjust(11))
print(p.rjust(11,"*"))
print(p.ljust(11))
print(p.ljust(11,"*"))

المخرجات :

Python:
      shell
******shell
shell
shell******
تقوم بإضافة فراغات على يمين السلسلة أو على يسارها , حيث أنها تأخذ نفس المعلومات التي تحتاجها الدالة center
(width, fillchar)rjust
( width, fillchar)ljust
Python:
i="I love python and c++ ,but python is the easiest"
print(i.count("python"))
j="I love python and c++ ,but Python is the easiest"
print(j.count("python",0,23))

المخرجات:

Python:
2
1
تقوم بالبحث عن جزئية معينة(substring) من السلسلة وتقوم بإرجاع عدد مرات تكرار هذه الجزئية, بالوضع الطبيعي تقوم بالبحث بكامل السلسلة أما إذا أردنا عدم البحث في كامل النص يجب علينا تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه
(substring,start,end)count
Python:
k="I lOve pYthoN anD c++ "
print(k.swapcase())

المخرجات:

Python:
i LoVE PyTHOn ANd C++
تقوم بتبديل الأحرف الكبيرة إلى أحرف صغيرة والعكس صحيح
()Swapcase
Python:
m="I love python"
print(m.startswith("I"))
print(m.startswith("i"))
print(m.startswith("p",7,15))
المخرجات :
Python:
True
False
True
تفيد في معرفة ما إذا كانت السلسلة تبدأ بحرف معين وتقوم بإرجاع قيم منطقية (true ,false), بالوضع الطبيعي تقوم بالمقارنة بين أول حرف في السلسلة مع الـ substring المعطى أما إذا أردنا مقارنة جزء معين من النص يجب علينا تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه
(substring,start,end)startwith
Python:
n="I love python"
print(n.endswith("n"))
print(n.endswith("N"))
print(n.endswith("e",0,6))
المخرجات:
Python:
True
False
True
تفيد في معرفة ما إذا كانت السلسلة تنتهي بحرف معين وتقوم بإرجاع قيم منطقية (true, false), بالوضع الطبيعي تقوم بالمقارنة بين آخر حرف في السلسلة مع الـ substring المعطى أما إذا أردنا مقارنة جزء معين من النص يجب علينا تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه
(substring,start,end)endwith
Python:
o="I love python"
print(o.index("v"))
المخرجات :
Python:
4
برنامج آخر حدث فيه خطأ :
Python:
o="I love python"
print(o.index("v",6,8))
المخرجات :
Python:
Traceback (most recent call last):
  File "c:\Users\Desktop\python\tasks\task01\task01.py", line 56, in <module>
    print(o.index("v",6,8))
          ^^^^^^^^^^^^^^^^
ValueError: substring not found
كل سلسلة تحوي عدد من الأحرف وكل حرف له مؤشر خاص به وتسمى مجموعة المؤشرات لكل الأحرف (indexes).
هذه الدالة تساعدنا في معرفة مؤشر أي حرف في السلسلة, على الأقل يجب إعطاء هذه الدالة الحرف الذي ترغب في إرجاع المؤشر الخاص به وهنا يمكنك إعطاء أي حرف داخل السلسلة. أما إذا كنت تريد أن تبحث في جزئية معينة يجب عليك تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه

ملاحظة : يجب الإنتباه إلى أنه عند إعطاء الدالة حرف غير موجود يسبب ذلك بحدوث خطأ وتوقف عمل البرنامج
(char,start,end)index
Python:
q="I love python"
print(q.find("v"))
print(q.find("v",6,8))
المخرجات:
Python:
4
-1
هذه الدالة تقوم بنفس عمل الدالة index ولكن عند إعطاءها حرف غير موجود لا تقوم بإيقاف البرنامج وإنما تقوم بإعطاء النتيجة -1 كدليل على حدوث خطأ.
(char,start,end)find
Python:
s = "I\tlove\tpython"
print(s)
print(s.expandtabs(3))
المخرجات :
Python:
I       love    python
I  love  python
مقدار الـ tab في الوضع الطبيعي 6 فراغات يمكننا من خلال هذه الدالة التحكم بمقدار الفراغات الخاصة بالـ tab لذلك يجب تزويدها بعدد الفراغات التي تريده.
(value)expandtabs
Python:
w="one two three two two"
print(w.replace("two","2"))
w="one two three two two"
print(w.replace("two","2",1))
المخرجات :
Python:
one 2 three 2 2
one 2 three two two
تقوم هذه الدالة باستبدال قيمة موجودة داخل السلسلة بقيمة جديدة عن طريق إعطاء الدالة هذه القيم
معلومة: إذا كانت القيمة المراد استبدالها مكررة أكثر من مرة داخل السلسلة ,بالوضع الطبيعي تقوم باستبدال القيمة القديمة في كل الأماكن في السلسلة بالقيمة الجديدة, لكن إذا أردت أن تستبدل عدد معين من مرات التكرار عليك اخبار الدالة بهذا العدد (count)
replace (old value,new value,count)
Python:
z="   "
print(z.isspace())
z="I love python"
print(z.isspace())
المخرجات:
Python:
True
False
تقوم هذه الدالة بالتأكد من السلسلة إذا كانت فارغة وتقوم بهذه الحالة بإرجاع القيمة المنطقية (true) وفي حال عكس ذلك تقوم بإرجاع القيمة (false)
()isspace
Python:
y="I Love Python"
print(y.istitle())
y="i Love python"
print(y.istitle())
المخرجات :
Python:
True
False
تقوم هذه الدالة بالتأكد من السلسلة إذا كانت في حالة عنوان (أي أن أول حرف من كل كلمة كبير وباقي الأحرف صغيرة) وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()istitle
Python:
y="I LOVE PYTHON"
print(y.isupper())
y="I Love Python"
print(y.isupper())
المخرجات:
Python:
True
False
تقوم هذه الدالة من التأكد إذا ما كانت جميع أحرف السلسلة كبيرة وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()isupper
Python:
y="i love python"
print(y.islower())
y="I Love Python"
print(y.islower())
المخرجات:
Python:
True
False
تقوم هذه الدالة من التأكد إذا ما كانت جميع أحرف السلسلة صغيرة وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()islower
Python:
t="name"
print(t.isidentifier())
t="6name"
print(t.isidentifier())
المخرجات :
Python:
True
False
تقوم هذه الدالة بالتأكد من اسم المتغير إذا كان صحيح حسب القواعد الخاصة بكتابة المتغيرات فإذا كان الأسم صحيح تعطي القيمة المنطقية true وعكس ذلك تعطي false
()isidentifier
Python:
u= "Python"
print(u.isalpha())
u="Python 002"
print(u.isalpha())
المخرجات :
Python:
True
False
تقوم هذه الدالة بالتأكد مما إذا كانت السلسلة تحتوي على أحرف (A-Z) فقط وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()isalpha
Python:
v= "Python"
print(v.isalnum())
v="Python002"
print(v.isalnum())
v="Python002 #"
print(v.isalnum())
المخرجات :
Python:
True
True
False
تقوم هذه الدالة بالتأكد مما إذا كانت السلسلة تحتوي على أحرف (A-Z)وأرقام فقط وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()isalnum

3- الدوال في الأعداد
لاستخدام الدوال المنبية ضمنيًا في اللغة الخاصة بالأعداد يجب علينا استخدام مكتبة math على عكس الدوال في السلاسل فأنت لا تحتاج إلى استخدام المكتبات, وفي ما يلي بعض هذه الدوال.

مثالوصف الدالةاسم الدالة
Python:
import math
print(math.ceil(5.0))
print(math.ceil(5.3))
print(math.ceil(5.7))
المخرجات :
Python:
5
6
6
تقوم هذه الدالة بإرجاع العدد الصحيح الأكبر أو الذي يساوي العدد (x)
ceil( x)
Python:
import math
print(math.floor(5.0))
print(math.floor(5.3))
print(math.floor(5.7))
المخرجات :
Python:
5
5
5
تقوم هذه الدالة بإرجاع العدد الصحيح الأصغر أو الذي يساوي العدد (x)
floor( x)
Python:
pmport math
print(math.pow(5,3))
المخرجات :
Python:
125.0
تقوم هذه الدالة بإنشاء علاقة أُسيّة بين x و y حيث أن x تعبر عن الأساس والـ y تعبر عن الأُس.
pow(x, y)
Python:
import math
print(math.sqrt(64))
المخرجات :
Python:
8.0
تقوم هذه الدالة بإرجاع قيمة الجذر التربيعي (square root) للعدد x.
sqrt( x)
Python:
import math
print(math.exp(3))
المخرجات :
Python:
20.085536923187668
تقوم هذه الدالة بإنشاء علاقة أُسيّة بين الثابت العددي (هـ) الذي يساوي تقريبُا 2.7 والعدد x حيث أن هـ هي الأساس والـ x هي الأُس.
exp( x)
Python:
import math
print( math.log(5))
print( math.log(5, 2))
print( math.log(5, math.e))
المخرجات :
Python:
1.6094379124341003
2.321928094887362
1.6094379124341003
تقوم هذه الدالة بإرجاع قيمة الـ Logarithm للعدد x مع إمكانية تحديد الأساس لهذا العدد.
معلومة : يوجد أيضًا الدالتان log2( x) و log10( x) حيث أن الأساس بهما ثابت وما عليك سوا إعطاء قيمة العدد x مباشرة, قم بعمل بعض التدريبات عليهما
log(x, [base] )
Python:
import math
print(math.sin(math.pi/4))
print(math.cos(math.pi/4))
print(math.tan(math.pi/4))
المخرجات :
Python:
0.7071067811865476
0.7071067811865476
0.9999999999999999
تقوم هذه الدوال بإعطاء قيمة الجيب والجتا والظل للزاوية x حيث أن لغة بايثون تتعامل مع الزوايا بالراديان وليس بالدرجات.
sin( x)
(x)tan
(x) cos
Python:
import math
print(math.degrees(math.pi/4))
المخرجات :
Python:
45.0
تقوم هذه الدالة بتحويل الزاوية التي نمررها لها من الريديان إلى درجات.
degrees( x )
Python:
import math
print(math.radians(90))
المخرجات :
Python:
1.570796326794896
تقوم هذه الدالة بتحويل الزاوية التي نمررها لها من الدرجات إلى الريديان.
radians( x )
Python:
import math
print(math.gcd(45, 81))
المخرجات :
Python:
9
تقوم هذه الدالة بإرجاع عدد صحيح يمثل القاسم المشترك الأكبر (Greatest Common Divisor) بين العددين x و y.
gcd( x, y )
وهكذا نكون قد أنهينا درسنا بحمد الله وفضله
دمتم بحفظ الله ورعايته
الله يعطيك الف عافيه وبارك الله فيك على هذا الطرح الرائع
تمت تجربة الاكواد وفعلاً كله مفهوم وواضح
ننتظر جديدك دائماً ❤️
 
التنسيق رائع ... ابدعت والله ... كفووووو 💪
 
بسم الله الرحمن الرحيم
اللهم علّمنا ما ينفعنا وانفعنا بما علّمتنا إنك أنت العزيز الحكيم

سنتحدث في هذا الدرس عن المكتبات وبعض الدوال الخاصة بالسلاسل والأعداد.
1-المكتبات
يمكننا تشبيه المكتبات في Python بأدوات في صندوق للنجارة. لنفترض أن هناك نجار يعمل في ورشة خشب، وهذه الورشة مُجهزة بصندوق كبير يحتوي على مجموعة متنوعة من الأدوات، مثل مطارق ومناشير ومسامير ومثاقب، وهذه الأدوات تساعد النجار على إنجاز مهامه بكفاءة.
يقوم النجار بعمل مشابهه لعملك كمبرمج , حيث أن صندوق النجار هو كاللغة التي تستخدمها لعمل برامجك والأدوات الموجودة بالصندوق هي المكتبات حيث أنها ستسهل عليك العمل.
يمكننا تعريف المكتبات على أنها مجموعة من الأدوات والوظائف التي تساعد المبرمجين على كتابة البرامج بشكل أكثر فعاليّة وسهولة , حيث تتيح لك هذه المكتبات استخدام وظائف معينة (Method) دون الحاجة إلى إعادة كتابتها مما يسرع من عملية التطوير ويزيد من قوة ومرونة اللغة.

لنفترض أنك تريد كتابة برنامج لتحليل بيانات مالية.لعمل ذلك يمكنك استخدام مكتبة مثل pandas للتعامل مع البيانات بشكل مرن وفعال , هذه المكتبة توفر أدوات قوية لقراءة وتحليل البيانات، مما يجعل من السهل عليك تنظيف البيانات، وتحليلها، وتقديم تقارير عنها.
لاستخدام هذه المكتبات سنضع import قبل اسم المكتبة المراد استخدامها ويجب كتابتها في بداية البرنامج الخاص بك , وسوف نرى استخدام بعض المكتبات في وقت لاحق ولكننا سنتطرق إليها في هذا الدرس عند استخدام الدوال في الأعداد.



2.الدوال في السلاسل
من مميزات لغة بايثون أنها تحتوي على مجموعة من الدوال المبنية ضمنيًا داخل اللغة؛ فليس من الضروري إعادة كتابتها مرة أخرى فإذا أردت استخدامها ما عليك سوا إعطاء اسم هذه الدالّة وبعض المعلومات إن احتاجت الدالّة ذلك وقد تحدثنا في الدرس السابق عن بعض الدوال المستخدمة في السلاسل وسنكمل الحديث عن عدد أكبر منها:
مثال
وصّف الدالّة
اسم الدالة
Python:
message = "i love python"
print(message.capitalize())
المخرجات :
Python:
I love python
تقوم بتكبير أول حرف من النص
()Capitalize
Python:
a , b ,c = "2" , "45" , "679"
print(a.zfill(3))
print(b.zfill(3))
print(c.zfill(3))
المخرجات :
Python:
002
045
679
يُنظم الخانات بعدد ثابت,ويأخد معلومات إضافية وهي عدد الخانات
(width)Zfill
Python:
d = "I love python and c++ "
print(d.split())
e = "I-love-python-and-c++ "
print(e.split("-"))
f = "I-love-python-and-c++ "
print(f.split("-",2))
المخرجات :
Python:
['I', 'love', 'python', 'and', 'c++']
['I', 'love', 'python', 'and', 'c++ ']
['I', 'love', 'python-and-c++ ']
تقوم بتحويل السلسلة إلى قائمة من العناصر حيث أن كل عنصر يعبر عن جزء من النص, إذا لم يتم تزويده بأي معلومات, ويقوم بالفصل حسب الفراغات الموجودة بالسلسلة أما إذا أردنا أن يتم الفصل حسب حرف أو رمز معين موجود بالنص نقوم بتزويده ببعض المعلومات وأيضاً يمكننا تحديد عدد مرات الفصل .
تقوم هذه الدالة بالوضع الطبيعي بالفصل من جهة اليسار.
(spliter,max_split)split
Python:
g = "I-love-python-and-c++ "
print(g.rsplit("-",2))

المخرجات:

Python:
['I-love-python', 'and', 'c++ ']
تقوم بنفس عمل الدالة split ولكن من جهة اليمين.
(spliter,max_split)rsplit
Python:
h="shell"
print(h.center(11))
h="shell"
print(h.center(11,"*"))

المخرجات :

Python:
   shell
***shell***
تقوم بتوسيط السلسلة حيث يتم تزويده بمعلومتين إضافيتين هما الطول الإجمالي للسلسلة بعد التوسيط (width )
كما يتم تزويده بالحرف المراد ملء الفراغات به, فإذا لم يتم تزويده بالحرف يقوم بترك الفراغات كما هي.
(width, fillchar)center
Python:
p="shell"
print(p.rjust(11))
print(p.rjust(11,"*"))
print(p.ljust(11))
print(p.ljust(11,"*"))

المخرجات :

Python:
      shell
******shell
shell
shell******
تقوم بإضافة فراغات على يمين السلسلة أو على يسارها , حيث أنها تأخذ نفس المعلومات التي تحتاجها الدالة center
(width, fillchar)rjust
( width, fillchar)ljust
Python:
i="I love python and c++ ,but python is the easiest"
print(i.count("python"))
j="I love python and c++ ,but Python is the easiest"
print(j.count("python",0,23))

المخرجات:

Python:
2
1
تقوم بالبحث عن جزئية معينة(substring) من السلسلة وتقوم بإرجاع عدد مرات تكرار هذه الجزئية, بالوضع الطبيعي تقوم بالبحث بكامل السلسلة أما إذا أردنا عدم البحث في كامل النص يجب علينا تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه
(substring,start,end)count
Python:
k="I lOve pYthoN anD c++ "
print(k.swapcase())

المخرجات:

Python:
i LoVE PyTHOn ANd C++
تقوم بتبديل الأحرف الكبيرة إلى أحرف صغيرة والعكس صحيح
()Swapcase
Python:
m="I love python"
print(m.startswith("I"))
print(m.startswith("i"))
print(m.startswith("p",7,15))
المخرجات :
Python:
True
False
True
تفيد في معرفة ما إذا كانت السلسلة تبدأ بحرف معين وتقوم بإرجاع قيم منطقية (true ,false), بالوضع الطبيعي تقوم بالمقارنة بين أول حرف في السلسلة مع الـ substring المعطى أما إذا أردنا مقارنة جزء معين من النص يجب علينا تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه
(substring,start,end)startwith
Python:
n="I love python"
print(n.endswith("n"))
print(n.endswith("N"))
print(n.endswith("e",0,6))
المخرجات:
Python:
True
False
True
تفيد في معرفة ما إذا كانت السلسلة تنتهي بحرف معين وتقوم بإرجاع قيم منطقية (true, false), بالوضع الطبيعي تقوم بالمقارنة بين آخر حرف في السلسلة مع الـ substring المعطى أما إذا أردنا مقارنة جزء معين من النص يجب علينا تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه
(substring,start,end)endwith
Python:
o="I love python"
print(o.index("v"))
المخرجات :
Python:
4
برنامج آخر حدث فيه خطأ :
Python:
o="I love python"
print(o.index("v",6,8))
المخرجات :
Python:
Traceback (most recent call last):
  File "c:\Users\Desktop\python\tasks\task01\task01.py", line 56, in <module>
    print(o.index("v",6,8))
          ^^^^^^^^^^^^^^^^
ValueError: substring not found
كل سلسلة تحوي عدد من الأحرف وكل حرف له مؤشر خاص به وتسمى مجموعة المؤشرات لكل الأحرف (indexes).
هذه الدالة تساعدنا في معرفة مؤشر أي حرف في السلسلة, على الأقل يجب إعطاء هذه الدالة الحرف الذي ترغب في إرجاع المؤشر الخاص به وهنا يمكنك إعطاء أي حرف داخل السلسلة. أما إذا كنت تريد أن تبحث في جزئية معينة يجب عليك تزويد الدالة بمعلومتين وهما مؤشران لبداية ونهاية المكان الذي نريد أن يبحث فيه

ملاحظة : يجب الإنتباه إلى أنه عند إعطاء الدالة حرف غير موجود يسبب ذلك بحدوث خطأ وتوقف عمل البرنامج
(char,start,end)index
Python:
q="I love python"
print(q.find("v"))
print(q.find("v",6,8))
المخرجات:
Python:
4
-1
هذه الدالة تقوم بنفس عمل الدالة index ولكن عند إعطاءها حرف غير موجود لا تقوم بإيقاف البرنامج وإنما تقوم بإعطاء النتيجة -1 كدليل على حدوث خطأ.
(char,start,end)find
Python:
s = "I\tlove\tpython"
print(s)
print(s.expandtabs(3))
المخرجات :
Python:
I       love    python
I  love  python
مقدار الـ tab في الوضع الطبيعي 6 فراغات يمكننا من خلال هذه الدالة التحكم بمقدار الفراغات الخاصة بالـ tab لذلك يجب تزويدها بعدد الفراغات التي تريده.
(value)expandtabs
Python:
w="one two three two two"
print(w.replace("two","2"))
w="one two three two two"
print(w.replace("two","2",1))
المخرجات :
Python:
one 2 three 2 2
one 2 three two two
تقوم هذه الدالة باستبدال قيمة موجودة داخل السلسلة بقيمة جديدة عن طريق إعطاء الدالة هذه القيم
معلومة: إذا كانت القيمة المراد استبدالها مكررة أكثر من مرة داخل السلسلة ,بالوضع الطبيعي تقوم باستبدال القيمة القديمة في كل الأماكن في السلسلة بالقيمة الجديدة, لكن إذا أردت أن تستبدل عدد معين من مرات التكرار عليك اخبار الدالة بهذا العدد (count)
replace (old value,new value,count)
Python:
z="   "
print(z.isspace())
z="I love python"
print(z.isspace())
المخرجات:
Python:
True
False
تقوم هذه الدالة بالتأكد من السلسلة إذا كانت فارغة وتقوم بهذه الحالة بإرجاع القيمة المنطقية (true) وفي حال عكس ذلك تقوم بإرجاع القيمة (false)
()isspace
Python:
y="I Love Python"
print(y.istitle())
y="i Love python"
print(y.istitle())
المخرجات :
Python:
True
False
تقوم هذه الدالة بالتأكد من السلسلة إذا كانت في حالة عنوان (أي أن أول حرف من كل كلمة كبير وباقي الأحرف صغيرة) وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()istitle
Python:
y="I LOVE PYTHON"
print(y.isupper())
y="I Love Python"
print(y.isupper())
المخرجات:
Python:
True
False
تقوم هذه الدالة من التأكد إذا ما كانت جميع أحرف السلسلة كبيرة وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()isupper
Python:
y="i love python"
print(y.islower())
y="I Love Python"
print(y.islower())
المخرجات:
Python:
True
False
تقوم هذه الدالة من التأكد إذا ما كانت جميع أحرف السلسلة صغيرة وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()islower
Python:
t="name"
print(t.isidentifier())
t="6name"
print(t.isidentifier())
المخرجات :
Python:
True
False
تقوم هذه الدالة بالتأكد من اسم المتغير إذا كان صحيح حسب القواعد الخاصة بكتابة المتغيرات فإذا كان الأسم صحيح تعطي القيمة المنطقية true وعكس ذلك تعطي false
()isidentifier
Python:
u= "Python"
print(u.isalpha())
u="Python 002"
print(u.isalpha())
المخرجات :
Python:
True
False
تقوم هذه الدالة بالتأكد مما إذا كانت السلسلة تحتوي على أحرف (A-Z) فقط وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()isalpha
Python:
v= "Python"
print(v.isalnum())
v="Python002"
print(v.isalnum())
v="Python002 #"
print(v.isalnum())
المخرجات :
Python:
True
True
False
تقوم هذه الدالة بالتأكد مما إذا كانت السلسلة تحتوي على أحرف (A-Z)وأرقام فقط وتقوم بهذه الحالة بإرجاع القيمة المنطقية true أما إذا كانت عكس ذلك تقوم بإرجاع القيمة المنطقية false
()isalnum

3- الدوال في الأعداد
لاستخدام الدوال المنبية ضمنيًا في اللغة الخاصة بالأعداد يجب علينا استخدام مكتبة math على عكس الدوال في السلاسل فأنت لا تحتاج إلى استخدام المكتبات, وفي ما يلي بعض هذه الدوال.

مثالوصف الدالةاسم الدالة
Python:
import math
print(math.ceil(5.0))
print(math.ceil(5.3))
print(math.ceil(5.7))
المخرجات :
Python:
5
6
6
تقوم هذه الدالة بإرجاع العدد الصحيح الأكبر أو الذي يساوي العدد (x)
ceil( x)
Python:
import math
print(math.floor(5.0))
print(math.floor(5.3))
print(math.floor(5.7))
المخرجات :
Python:
5
5
5
تقوم هذه الدالة بإرجاع العدد الصحيح الأصغر أو الذي يساوي العدد (x)
floor( x)
Python:
pmport math
print(math.pow(5,3))
المخرجات :
Python:
125.0
تقوم هذه الدالة بإنشاء علاقة أُسيّة بين x و y حيث أن x تعبر عن الأساس والـ y تعبر عن الأُس.
pow(x, y)
Python:
import math
print(math.sqrt(64))
المخرجات :
Python:
8.0
تقوم هذه الدالة بإرجاع قيمة الجذر التربيعي (square root) للعدد x.
sqrt( x)
Python:
import math
print(math.exp(3))
المخرجات :
Python:
20.085536923187668
تقوم هذه الدالة بإنشاء علاقة أُسيّة بين الثابت العددي (هـ) الذي يساوي تقريبُا 2.7 والعدد x حيث أن هـ هي الأساس والـ x هي الأُس.
exp( x)
Python:
import math
print( math.log(5))
print( math.log(5, 2))
print( math.log(5, math.e))
المخرجات :
Python:
1.6094379124341003
2.321928094887362
1.6094379124341003
تقوم هذه الدالة بإرجاع قيمة الـ Logarithm للعدد x مع إمكانية تحديد الأساس لهذا العدد.
معلومة : يوجد أيضًا الدالتان log2( x) و log10( x) حيث أن الأساس بهما ثابت وما عليك سوا إعطاء قيمة العدد x مباشرة, قم بعمل بعض التدريبات عليهما
log(x, [base] )
Python:
import math
print(math.sin(math.pi/4))
print(math.cos(math.pi/4))
print(math.tan(math.pi/4))
المخرجات :
Python:
0.7071067811865476
0.7071067811865476
0.9999999999999999
تقوم هذه الدوال بإعطاء قيمة الجيب والجتا والظل للزاوية x حيث أن لغة بايثون تتعامل مع الزوايا بالراديان وليس بالدرجات.
sin( x)
(x)tan
(x) cos
Python:
import math
print(math.degrees(math.pi/4))
المخرجات :
Python:
45.0
تقوم هذه الدالة بتحويل الزاوية التي نمررها لها من الريديان إلى درجات.
degrees( x )
Python:
import math
print(math.radians(90))
المخرجات :
Python:
1.570796326794896
تقوم هذه الدالة بتحويل الزاوية التي نمررها لها من الدرجات إلى الريديان.
radians( x )
Python:
import math
print(math.gcd(45, 81))
المخرجات :
Python:
9
تقوم هذه الدالة بإرجاع عدد صحيح يمثل القاسم المشترك الأكبر (Greatest Common Divisor) بين العددين x و y.
gcd( x, y )
وهكذا نكون قد أنهينا درسنا بحمد الله وفضله
دمتم بحفظ الله ورعايته
ما شاء الله !
يعطيكم ألف عافية 🤍
 
عودة
أعلى