بسم الله الرحمن الرحيم
اللهم علّمنا ما ينفعنا وانفعنا بما علّمتنا إنك أنت العليم الحكيم
سنتحدث في هذا الدرس عن أنواع البيانات (String and Numbers) بشكل مُفصّل بإذن الله تعالى.اللهم علّمنا ما ينفعنا وانفعنا بما علّمتنا إنك أنت العليم الحكيم
- السلسلة (String) :
- نوع من أنواع البيانات وهي عبارة عن مجموعة من الأحرف المتتابعة ( جملة معينة أو نص ) تكون داخل علامات اقتباس منفردة ( ' ' ) أو مزدوجة( " " ) ويمكن أن تتضمن أيضًا أرقام و إشارات، كما في المثال :
Python:
"python is a beautiful language"
' python is a beautiful language'
- ولتخزين ال string واستخدامها في برنامجك يجب تعريف متغير وحفظ ال string فيه كما تعلمنا سابقاً وهذا مثال يوضح لنا تخزين string داخل متغير باسم word
Python:
word = "python is a beautiful language"
- المرونة في استخدام علامات اقتباس منفردة ( ' ' ) أو مزدوجة( " " ) تمكننا من كتابة علامات الاقتباس المنفردة داخل المزدوجة والعكس صحيح .
وهنا وجب التنويه إلى تجنب استخدام علامات اقتباس منفردة داخل نص يحتوى على علامات اقتباس منفردة والأمر أيضًا منطبق على علامات الأقتباس المزدوجة فهذا يسبب حدوث syntax error، لاحظ استخدامها بهذه الطريقة في المثال :
Python:
print('I told my friend , 'Python is my favorite language!''
Python:
File "c:\Users\Desktop\python\tasks\task01\task01.py", line 1
print('I told my friend , 'Python is my favorite language!'')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
في هذا المثال عند بدء مفسر بايثون بأمر الطباعة ،يقوم بطباعة النص بدءًا من علامة الاقتباس المنفردة الاولى وعند وصوله إلى علامة الاقتباس التالية اعتبر أن فتح هذه العلامة هي إغلاق للعلامة السابقة ولهذا لم يستطع تفسير بقية النص -python is my favorite language- على أنه أمر برمجي صحيح ولهذا نتج syntax error .
- من ميّزات اللغة إمكانية استخدام ما يعرف بالدّوال (Methods) وهي مجموعة من الأوامر يمكن لبايثون تطبيقها على أنواع البيانات المختلفة .
- طريقة استخدام الدوال (Methods) هي طريقة سهله جداً فقط تذهب إلى مكان استخدامك للمتغير الذي تخزن فيه النص وتضع بعد اسم المتغير نقطة ( dot ) وستظهر لك جميع الدّوال التي يمكنك استخدامها وتطبيقها على المتغير وجميع الدوال تتبعها أقواس لأنها قد تحتاج معلومات إضافية للقيام بعملها منها ما يحتاج إلى معلومات تُضمّنها داخل أقواس بنفس الدّالة (Method) والبعض الآخر لا يحتاج.
- تساعد الدّوال على القيام ببعض العمليات على النصوص كتحويل حالة النص من حالة إلى أخرى من غير حاجة المبرمج إلى تعديلها، ومن هذه الدّوال :
- title () : هذه الدالة تقوم بتحويل حالة كل كلمة داخل السلسلة إلى حالة عنوان ( أي تحويل أول حرف من الكلمة إلى حرف كبير وباقي أحرف الكلمة إلى أحرف صغيرة) ،وأيضًا لا تحتاج إلى معلومات إضافية تضمنها داخل الأقواس فتُترَك فارغة، كما في المثال التالي :
Python:
name = "pytHon courSE"
print(name.title())
Python:
Python Course
معلومة: يمكن الإستفادة من الدالة title في إمكانية تحويل قيم الإدخال التالية (shell, SHELL ,Shell) لنفس الإسم ويعرفها البرنامج جميعًا بإسم (Shell)
2. upper() & lower() : دالة ال upper() تقوم بتحويل كل أحرف النص إلى أحرف كبيرة ، ودالة الlower() تقوم بتحويل كل أحرف النص إلى أحرف صغيرة كما في المثال :
Python:
name ="Arabian Shell Network"
print(name.upper())
print(name.lower())
Python:
ARABIAN SHELL NETWORK
arabian shell network
معلومة: هذه الدوال مفيدة في تخزين البيانات، كأن تريد مثلاً فحص أسماء المستخدمين عند تسجيل دخولهم إلى موقع ويب فمن الممكن أن يكون الإسم المثبت في قاعدة البيانات جميع حروفه هي حروف كبيرة ولكن المستخدم قام بإدخال الإسم بأحرف صغيرة عندها لن يمكن التعرف على اسم المستخدم وقد يصعب على المبرمج إعادة تدقيق البيانات المدخلة، ولحل هذة المشكلة سنقوم باستخدام دالة upper لتحويل جميع أحرف الإسم المدخل إلى أحرف كبيرة .
- من الممكن دمج أكثر من متغير وطباعتها كلها كنص واحد, على سبيل المثال لو أردنا طباعة اسم العالِم Guido van Rossum يمكننا وضع اسم Guido van بمتغير، ووضع اسم Rossum بمتغير آخر، ومن ثم دمج كلاهما بمتغير واحد عن طريق استخدام التنسيق format الذي نشير إليه بالحرف f والذي بدوره يقوم بأخذ القيم الموجودة بكلا المتغيرات ودمجها سويًا داخل متغير كنص واحد، كما في المثال التالي :
Python:
first_name = "Guido van"
last_name = "Rossum"
full_name = f"{first_name} {last_name}"
print(full_name)
Python:
Guido van Rossum
بدايةً عرّفنا متغير بإسم first_name ووضعنا فيه الإسم الأول (Guido van) ومن ثم عرّفنا متغير آخر ووضعنا فيه الإسم الأخير (Rossum) ،وبعد ذلك عرّفنا متغير بإسم full_name ، لنقوم بدمج الإسم الأول مع الأخير يكون ذلك بكتابة الحرف f متبوعًا بعلامات اقتباس ومن ثم وضع كل متغير مراد دمجه داخل أقواس حيث يقوم بايثون بأخذ قيم هذه المتغيرات ودمجها سويًا داخل المتغير full_name , ويطلق على السلسلة (full_name) اسم f_string.
معلومة: من الممكن دمج أكثر من متغير بنفس جملة الطباعة كما في المثال :
المخرجات :
Python:
first_name = "Guido van"
last_name = "Rossum"
full_name = f"{first_name} {last_name}"
print(full_name)
Python:
Guido van Rossum
Python:
first_name = "Guido van"
last_name = "Rossum"
full_name = f"{first_name} {last_name}"
print(f"{full_name} is the one who developed the python language")
Python:
Guido van Rossum is the one who developed the python language
تدريب: قم بدمج ال first_name مع ال last_name ولكن بجعل ال full_name بحالة حروف كبيرة upper case
معلومة: من الممكن دمج أكثر من متغيّر باستخدام رمز (+) بين أسماء المتغيرات المراد دمج قيمها :
المخرجات :
Python:
first_name = "Guido van"
last_name = " Rossum"
print(first_name + last_name)
Python:
Guido van Rossum
- في لغة البرمجة Python، هناك بعض الحروف التي تعمل عمل خاص عند وضع ( \ )قبلها وتسمى (Character Escape sequences) ،وتستخدم في داخل النص المراد طباعته ، منها :
- n \: تستخدم لإضافة سطر جديد .
- t\ : تستخدم لإضافة مسافة (Tab) تتكون من 6 حروف .
- \\ : تستخدم لطباعة فاصلة مائلة (Backslash) في النص .
- ' \: تستخدم لطباعة علامة اقتباس منفردة (Single Quote) في النص .
- "\ : تستخدم لطباعة علامة اقتباس مزدوجة (Double Quote) في النص .
- b\ : تستخدم لحذف الحرف السابق لها .
- r\ : تستخدم في تبديل الحروف الموجودة بداية النص بالحروف الموجودة بعد r\ .
Python:
print('Welcome to\nShell')
print('....................')
print('Welcome to\bShell')
print('....................')
print('Welcome to\rShell')
Python:
Welcome to
Shell
....................
Welcome tShell
....................
Shellme to
معلومة: قد تحتاج إلى كتابة نص واحد على أكثر من سطر ولأن جملة الطباعة يجب أن تغلق على نفس السطر سيحدث خطأ بسبب عدم إغلاقها والانتقال إلى السطر الجديد .
لتجنب ذلك نقوم بوضع (\) بنهاية كل سطر وحتى السطر الأخير، كما في المثال :
المخرجات :
لتجنب ذلك نقوم بوضع (\) بنهاية كل سطر وحتى السطر الأخير، كما في المثال :
Python:
print('Welcome \
to \
Shell')
Python:
Welcome to Shell
تدريب: اكتب برنامج باستخدام Character Escape sequences يعرض الناتج على الشكل التالي :
Programing Languages:
"Python"
++C
' JavaScript'
Programing Languages:
"Python"
++C
' JavaScript'
- كما تحدثنا بأن لغات البرمجة صارمة إلا أنها تتجاهل التهجئة الجيدة أو السيئة فمثلًا لو قمنا بكتابة "python " على هذا الشكل وكتبنا أيضاً "python"، عند النظر إلى الكلمتين فلن نجد أي فرق بينهما ولكن مفسر بايثون يرى الكلمتين مختلفتين والسبب في ذلك أنه يعتبر الفراغ (space) حرف. في بعض الأحيان قد يتسبب هذا الفراغ بنشوء مشكلة خصوصًا عندما تريد المقارنة بين تطابق كلمة مع كلمة أخرى ، كأن تريد مثلًا فحص أسماء مستخدمين عند تسجيل دخولهم إلى موقع ويب فمن الممكن أن يكون الإسم المثبت في قاعدة البيانات من غير وجود أي فراغ ولكن عند كتابة اسمك للدخول إلى الموقع أحدثْتَ بعض الفراغات، بهذا لن يتعرف الموقع عليك بسبب عدم وجود تطابق بين الكلمتين، ولكن هناك بعض الدّوال في لغة بايثون قد قامت بحل هذه المشكلة عن طريق حذف أي فراغ موجود على جوانب النص وهي :
- rstrip : وهذه الطريقة تقوم بحذف الفراغات من جهة اليمين right .
- lstrip : وهذه الطريقة تقوم بحذف الفراغات من جهة اليسار left .
- strip : وهذه الطريقة تقوم بحذف الفراغات من جهة اليمين واليسار .
كما في المثال التالي :
Python:
favorite_language = ' python '
print(favorite_language.rstrip())
print(favorite_language.lstrip())
print(favorite_language.strip())
المخرجات:
Python:
python
python
python
ويتم استخدام هذه الدّوال كما تحدثنا سابقًا بوضع نقطة (dot) وكتابة هذه الدّالة متبوعة بأقواس فارغة ( لا تحتوي معلومات ) ففي السطر الثاني قام بحذف الفراغات الموجودة على يمين النص ولكن لم يتم حذف الفراغات الموجودة على يسار النص ، وفي السطر الثالث قام بحذف الفراغات الموجودة على يسار النص ولكن لم يتم حذف الفراغات الموجودة على يمين النص ، وفي السطر الرابع قام بحذف الفراغات الموجودة على يمين ويسار النص ،
هذا ويجب الإنتباه إلى أن هذه الدّوال تقوم بإزالة الفراغ بشكل مؤقت (عند الطباعة فقط) أما إذا كنت تريد حذف الفراغ بشكل كامل، هنا يجب التعديل على قيمة المتغير الأصلي وإعطاءه قيمة جديدة، كما في المثال :
Python:
favorite_language = ' python '
print(favorite_language.strip())
print(favorite_language)
favorite_language = favorite_language.strip()
print(favorite_language
- من المهام الشائعة في السلاسل إزالة البادئة (prefix) لرابط معين ، مثلًا لو كان لديك الرابط التالي: https://sh3ll.cloud , ونريد فقط التركيز على اسم الموقع sh3ll.cloud الذي يحتاج المستخدم ادخاله إلى شريط العناوين (address bar) دون كتابة البادئة https:// . هنا سنقوم باستخدام دالة (Method) جديدة تسمى removeprefix() ، لكن انتبه هذه الدالة تحتاج إلى معلومات تضمنها داخل الأقواس () وهذه المعلومات هي البادئة التي تريد ازالتها https:// كما في المثال التالي :
Python:
url = "https://sh3ll.cloud"
print(url.removeprefix("https://")
Python:
sh3ll.cloud
- هذا وتقوم الدالة removeprefix() بإزالة البادئة بشكل مؤقت (عند الطباعة فقط) كما في الدالة strip.
معلومة: استخدام ال triple quote( """ ) يعطي مرونة أكثر لجمل الطباعة حيث تستطيع من خلالها عمل التالي :
1. طباعة علامات الاقتباس المنفردة والمزدوجة سويًا داخل نص واحد دون حدوث خطأ .
2. طباعة نص على أكثر من سطر دون الحاجة إلى وضع (\) آخر السطر.
كما في المثال :
المخرجات:
1. طباعة علامات الاقتباس المنفردة والمزدوجة سويًا داخل نص واحد دون حدوث خطأ .
2. طباعة نص على أكثر من سطر دون الحاجة إلى وضع (\) آخر السطر.
كما في المثال :
Python:
print("""Welcome
"to"
'Shell'""")
Python:
Welcome
"to"
'Shell'
2. الأعداد (Numbers) :
- تستخدم الأعداد بشكل واسع في عالم البرمجة لعدة أغراض مثل الحفاظ على النتيجة في الألعاب، تمثيل البيانات في الرسومات التوضيحية، تخزين المعلومات في تطبيقات الويب، وما إلى ذلك.
- الأعداد بطبيعتها يمكن أن نقسمها إلى أعداد صحيحة (Integers) وهي الأعداد التي تخلو من أي فواصل عشريه مثل : 4 , 200 , -56 ، وإلى أعداد عشرية (Floats) وهي الأعداد التي تحوي فواصل عشرية مثل : 6.84 , 500.70 1.003 - .
- يمكننا تطبيق جميع العمليات الحسابية على هذه الأعداد في لغة بايثون والتي تشمل ( + الجمع ، - الطرح ، * الضرب ، / القسمة و % باقي القسمة ) علمًا أن اللغة تدعم استخدام أولويات العمليات الحسابية عند حساب ناتج أي تعبير رياضي .
- لاستخدام الأسس سنقوم بوضع إشارتي ضرب ** بين الأساس والأس .
- عند قسمة عدد صحيح على عدد صحيح فإن الناتج يعطي عدد عشري ، وأيضًا عند إجراء أي عملية حسابية لعدد صحيح مع عدد عشري فإن الناتج يكون عدد عشري .
معلومة: تسمى الأعداد العشرية بالأعداد العائمة لأن العلامة العشرية يمكن أن تظهر في أي منزلة في العدد .
وفي ما يلي مثال على العمليات الحسابية:
Python:
n = 2+4
print("2+4 =" , n)
n = 5-7
print("5-7 =" , n)
n = 4%3
print("4%3 =" , n)
n = 18/9
print("18/9 =" , n)
n = 5**3
print("5**3 =" , n)
n = 2.3+5
print("2.3+5 =" , n)
n = 8*4.2
print("8*4.2 =" , n)
n = 0.3 + 0.3
print("0.3+0.3 =" , n)
n = 6%4.8
print("6%4.8 =" , n)
Python:
2+4 = 6
5-7 = -2
4%3 = 1
18/9 = 2.0
5**3 = 125
2.3+5 = 7.3
8*4.2 = 33.6
0.3+0.3 = 0.6
6%4.8 = 1.2000000000000002
- عندما تريد كتابة رقم يحتوي عدد كبير من الخانات مثل 14579264358 ، هذا الرقم من الصعب على قارئ البرنامج قراءته لذا فإن لغة بايثون تسمح لك بالفصل بين الخانات باستخدام الشرطة السفلية (Underscore _ ) هذا وانها لن تظهر عند طباعة الرقم كما في المثال :
Python:
n = 145_792_643_58
print(n)
Python:
14579264358
معلومة: تتيح لغة بايثون إمكانية تعريف أكثر من متغير على نفس السطر في البرنامج وذلك لتقليل عدد الأسطر في برنامجك فمثلًا لو كنت تريد تعريف 3 متغيرات x , y , z وكل متغير يحمل رقم معين وليكن x=3 , y=78 , z= -5 يمكنك كتابتها على النحو التالي كما في المثال :
المخرجات :
Python:
x , y ,z = 3 ,78 ,-5
print("x =",x,", y=",y,", z=",z)
Python:
x = 3 , y= 78 , z= -5
تدريب: قم بعمل برنامج بحتوي على متغيرين x و y وقم بإعطاء قيمتين لهما ،ثم قم بحساب ناتج التعبير التالي : 5 * x + 6%y -9
- الثوابت (Constants) : هي قيم لا يمكن التعديل عليها ، عكس المتغير الذي يمكن التعديل على قيمته متى شئت , على سبيل المثال هناك بعض القيم الرياضية الثابته كقيمة π التي تساوي 3.14 .هذا وليس من الضرورة أن تكون الثوابت قيم معروفة كـ π، فمن الممكن أنه عند كتابتك لبرنامج معين أردت تثبيت قيمة محددة ولا تريد تغييرها حتى نهاية البرنامج كقيمة الحد الأدنى والأعلى للرواتب حسب كل شركة أو جهة معينة .
- لا تحتوي بايثون على أنواع بيانات ثابتة كباقي لغات البرمجة لكن مبرمجي بايثون يقومون بكتابة هذه القيم بمتغيرات ويكون اسم هذه المتغيرات كاملًا بالأحرف الكبيرة على أن المتغير يجب أن يعامل معاملة الثابت، كما في المثال :
Python:
MAX_CONNECTIONS = 5000
وبهذا نكون بحمد الله وفضله أتممنا موضوعنا
دمتم بحفظ الله ورعايته
دمتم بحفظ الله ورعايته