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

هل انت مستعد لتعلم لغة بايثون ؟

إذا كنت مبتدئاً في البرمجة, يجب أن تدرس الخوارزميات قبل أن تبدأ مباشرةً بدراسة لغة بايثون, لأنك بحاجة لمعرفة مبادئ البرمجة قبل أن تتعلم أي لغة برمجة.
لا تقلق إذا لم يسبق لك أن تعلمتها لأننا شرحنا الخوارزميات من الصفر.

تعلم الخوارزميات »


نصيحة

لا تحاول تعلم لغة Python ما لم تتعلم الخوارزميات قبلها لأنك قد تواجه صعوبة كبيرة في فهم الكود أحياناً حتى لو كان الكود مشروح بتفصيل و سهل الفهم.
و قم بدراسة جميع الدروس بنفس الترتيب الموضوعين فيه لأننا شرحنا جميع الأفكار بشكل مترابط.

ما هي لغة بايثون ؟

Python تكتب بايثون باللغة العربية و هي لغة برمجة عالية المستوى إبتكرها Guido Van Rossum أثناء عمله في مركز أبحاث Centrum Wiskunde & Informatica عام 1986.

عام 1991 تم نشر أول إصدار منها لتصبح في متناول الجميع.

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

بايثون تعمل على جميع و أهم أنظمة التشغيل مثل Windows, Mac OS, Linux, Unix إلخ.. و تعتبر من أشهر لغات البرمجة على الإطلاق.

شعار لغة بايثون:

مميزات لغة بايثون بالنسبة للمطورين

  1. لها شعبية هائلة و هناك الكثير من المراجع لمن يريد تعلمها.

  2. بسيطة و تعلمها سهل جداً مقارنةً مع غيرها من اللغات.

  3. إذا أنشأت برنامجاً باستخدام لغة بايثون فإن البرنامج يعمل على أي نظام في العالم و هذا من أهم ما يدفعك لتعلمها.

  4. في وقتنا الحالي, تعتبر من أكثر اللغات طلباً في سوق العمل, أي إذا كنت تريد دخول سوق العمل فلغة بايثون توفر لك الكثير من الفرص.

  5. إحدى أهم اللغات التي يستخدمها المهمتين بمجال أمن المعلومات و الهاكرز.

مميزات لغة بايثون عن باقي لغات البرمجة

  1. مادياً
    لن تدفع أي مبلغ لتعمل على لغة بايثون, فهي مصدر مفتوح و مجانية و ستبقى مجانية مدى الحياة.


  2. تقنياً
    تستطيع البرمجة بها حتى و لو كان حاسوبك ضعيفاً أو قديماً.


  3. سهولة القراءة و التعديل
    تعلمها سهل جداً و يمكن قراءة و تعديل الكود المكتوب فيها بسهولة.


  4. العمل على أكثر من منصة
    البرنامج الذي تبنيه بواسطة لغة بايثون يعمل على كما على أهم أنظمة التشغيل مثل Windows, Mac OS, Linux, Unix.


  5. كائينة التوجه
    تدعم مفهوم الكلاس, الكائن, التغليف, الوراثة إلخ..


  6. تعدد المهام
    بايثون توفر لك تقنية الـ Multithreading و التي تسمح لك بجعل برنامجك قادراً على تنفيذ عدة أوامر مع بعض و بنفس الوقت.


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


  8. واجهة المستخدم
    يمكن بناء تطبيقات فيها واجهة مستخدم فيها.


  9. التعامل مع لغات برمجة أخرى
    يمكنك التعامل مع لغات برمجة أخرى ( مثل C, C++, Java ) ضمن برنامجك المكتوب في الأساس بلغة بايثون.


  10. تعامل لغات البرمجة الأخرى مع لغة بايثون
    أغلب لغات البرمجة تدعم التعامل مع لغة بايثون, أي أنهم يتيحون لك إستخدام كود مكتوب بلغة بايثون في برامج مكتوبة في الأساس بلغات برمجة أخرى ( مثل C, C++, Java ).


  11. المناهج التعليمية
    العديد من المعاهد و الجامعات سواء كانت أجنبية أو عربية أصبحت تدرسها للطلاب.


لمن تم تجهيز هذا المرجع؟

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

في الدرس التالي سنرشدك لتحميل أدوات لغة بايثون التي سنستخدمها للشرح و التي بإمكانك إستعمالها لبناء تطبيقاتك الخاصة في المستقبل.

Pythonتهئية بيئة تطوير برامج بلغة بايثون

طريقة عمل البرنامج المكتوب بلغة بايثون

بشكل عام نقوم بإنشاء ملف إمتداده .py لنضع فيه الأوامر التي سنكتبها بلغة بايثون.
بعد الإنتهاء من كتابة الأوامر, نحتاج إستدعاء مشغّل لغة بايثون ( Python Interpreter ) حتى يتم تنفيذ الأوامر الموضوعة في الملف سطراً تلو الآخر كما في الصورة التالية.

الكود الذي تقوم أنت بكتابته يسمى Source Code.

لتشغيل هذا الكود يجب أن يتم إرساله إلى مفسّر لغة بايثون ( Python Interpreter ).
المفسّر بدوره يحتوي على مترجم كود البايثون ( Compiler ) و مشغل كود البايثون ( Virtual Machine ).

المترجم مهمته تحويل كود البايثون إلى كود يفهمه الكمبيوتر يسمى ( Byte Code ) و هنا يتم إنشاء نسخة جديدة من الملف بلغة الكمبيوتر إمتدادها .pyc.

بعدها يقوم المترجم بتحويل الـ ( Byte Code ) إلى برنامج يعمل على أي نظام تشغيل كان سواء Windows, Linux, MacOS.


مصطلحات تقنية

  • Source Code: تعني الكود أو الشفرة المصدرية, و يقال لها أيضاً سورس كود.

  • Byte Code: الكود الذي تفهمه الآلة و هنا تجد أن الكود كله يتألف من رقمين و هما: 0 و 1.

  • Compiler: يسمى مترجم الكود. فعلياً هو برنامج يحول الكود المكتوب بلغة بايثون إلى Byte Code.

  • Virtual Machine: هو البرنامج الذي يشغل الـ Byte Code كأي برنامج على نظام التشغيل.

  • OS: إختصار لـ Operating System و التي تعني أي نظام تشغيل مثل Windows, Linux, MacOS.

خطوات تحميل لغة بايثون

  1. أدخل إلى رابط موقع بايثون الرسمي لتحميل الأدوات الازمة أنقر هنا »


  2. قم بالنقر على زر تحميل آخر إصدار متوفر.

  1. أنقر على Save File لكي يبدأ التحميل.

  1. بعد أن يكتمل التحميل, قم بفتح الملف لتبدأ بتنصيب الأدوات.
    أنقر بزر الفأرة الأيمن على الملف, ثم أنقر على Run as administrator

  1. قم بوضع علامة صح على الخيار Install launcher for all users و علامة صح على الخيار Add Python 3.6 to Path
    ثم أنقر على الزر Install Now ليبدأ تنصيب الأدوات على الجهاز.

  1. بعد أن يكتمل تنصيب الأدوات بنجاح, إضغط على Closs.

للتأكد ما إذا تم تنصيب الأدوات بنجاح و أن الجهاز أصبح قادراً على فهم الكود الذي تكتبه بلغة بايثون.

طريقة التأكد من أنه قد تم تنصيب لغة بايثون بنجاح

لمعرفة ما إذا تم تنصيب مفسّر لغة بايثون و رقم إصداره, قم فتح موجه الأوامر و الذي يقال له (Command Line أو CMD أو TERMINAL) و تشغيل البرنامج الذي يشغل أوامر بايثون من داحله بكتابة الأمر python.


كيف أشغل موجه الأوامر في ويندوز؟

إذهب إلى القائمة الرئيسية و اكتب في مربع البحث ( Command Prompt ) ثم قم بفتحه. سيظهر لك كالتالي.

Command Prompt

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users\user harmash>

إذاً لمعرفة ما إذا تم تنصيب مفسّر لغة بايثون و رقم إصداره نكتب python ثم ننقر على زر الـ Enter.

Command Prompt - python.exe

> python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

إذاً رقم إصدار بايثون المنصب على الجهاز هو 3.6.4.

بعد الرمز >>> يمكنك مباشرةً كتابة أوامر بلغة بايثون و تنفيذها.


للخروج من مشغل بايثون أكتب الأمر exit() ثم أنقر على زر الـ Enter.

Command Prompt - python.exe

>>> exit()

C:\Users\user harmash>

للخروج من موجه الأوامر أكتب الأمر exit ثم أنقر على زر الـ Enter.

Command Prompt

C:\Users\user harmash> exit

خطوات تحميل و تنصيب برنامج PyCharm

  1. أدخل إلى رابط تحميل برنامج PyCharm من الموقع الرسمي أنقر هنا »

  2. قم بالنقر على زر تحميل آخر إصدار مجاني متوفر.

  1. أنقر على Save File لكي يبدأ التحميل.

  1. بعد أن يكتمل التحميل, قم بفتح الملف لتبدأ بتنصيب الأدوات.
    أنقر بزر الفأرة الأيمن على الملف, ثم أنقر على Run as administrator

  1. أنقر على الزر Next لتبدأ خطوات تنصيب البرنامج.

  1. أنقر على الزر Next ليبدأ تنصيب البرنامج في المسار المحدد.

  1. ضع علامة صح في نفس المربعات التي قمنا باختيارها إذا كنت لا تعرف معناهم ثم أنقر على الزر Next.
    في حال كنت تعرف معنى هذه الخيارات, يمكنك تحديد ما شئت منهم.

  1. أنقر على الزر Next.

  1. أنقر على الزر Next ليبدأ التنصيب الفعلي للبرنامج في المسار المحدد و بناءاً على الخيارات التي تم تحديدها.

  1. بعد أن تم تنصيب البرنامج بنجاح, أنقر على الزر Finish للخروج.

فتح برنامج الـ PyCharm و إختيار الألوان المناسبة

بعد تنصيب البرنامج, يمكنك فتح البرنامج بكل سهولة بطريقتين:

  • الطريقة الأولى, هي بالنقر مرتين على أيقونة البرنامج التي تم إضافتها على سطح المكتب ( أي على الـ Desktop ).

  • الطريقة الثانية, هي بالتوجه لقائمة نظام التشغيل الأساسية و كتابة PyCharm في مربع البحث.

عندما تفتح البرنامج للمرة الأولى يطلب منك تحديد ألوان البرنامج المفضلة لديك.
نحن ننصح باختيار الـ Darcula لأنه مريح أكثر للنظر.
بعد إختيار إحداهما قم بالنقر على الزر Skip Remaining and Set Defaults لكما في الصورة التالية.

الآن ستلاحظ أنه سيسألك إذا كنت ترغب بإنشاء مشروع جديد.
في حال أردت إنشاء مشروع جديد, قم بتحديد إسم المشروع ( أي إسم المجلد الأساسي الذي ستضع فيه الملفات ) مكان الإسم untitled الذي كان سيوضع كإسم إفتراضي للمشروع.

في الوقت الحالي لا تقم بإنشاء مشروع لأننا سنفعل هذا بعد قليل. إذاً إضغط على الزر Cancel.

خطوات إنشاء مشروع جديد في PyCharm

  1. إفتح البرنامج.

  2. إضغط على أيقونة Create New Project.
    إنتبه: إذا كان برنامج الـ PyCharm مفتوحاً و تريد إنشاء مشروع جديد فيه, توجه إلى القائمة العلوية و أنقر على File ثم أنقر على New Project.

  1. الآن تجد أنه يطلب منك تحديد إسم المشروع مكان الإسم untitled الذي كان سيوضع كإسم إفتراضي للمشروع.

  1. قم بوضع أي إسم للمشروع مثل myapp ثم أنقر Create.

  1. قم بإغلاق نافذة المساعدة.

  1. أنقر بزر الفأرة الأيمن على إسم المشروع ثم مرر الفأرة فوق الكلمة New ثم أنقر على Python File حتى تستطيع إنشاء ملف بايثون جديد في المشروع.

  1. قم بوضع إسم للملف مثل Test ثم أنقر على الزر OK حتى يتم إنشاء الملف في المشروع.

  1. الآن يمكنك كتابة أي كود بلغة بايثون بداخل الملف Test.py.

  1. أكتب الأمر print("Hello World!" في الملف.

  2. ثم أنقر Ctrl + S ليتم حفظ الملف.

  3. ثم أنقر Shift + F10 ليتم تشغيل الملف.

مبادئ كتابة الكود في بايثون

في البداية عليك معرفة أن كل ما ستتعلمه في هذا الدرس عبارة عن شرح نظري لأساليب كتابة الكود.
إذاَ في هذا الدرس ستتعلم كيف تكتب كود بايثون بشكل صحيح يفهمه الكمبيوتر و يفهمه أي شخص يحاول قراءة الكود الذي ستقوم أنت بكتابته مستقبلاً عند بناء تطبيقاتك الخاصة.


Case Sensitivity

Case Sensitivity تعني أن لغة البرمجة تميز بين الأحرف الكبيرة و الأحرف الصغيرة.

بايثون تعامل الأسماء التي نستخدمها بتأني سواء كنا نضع هذه الأسماء للمتغيرات, الدوال, الكلاسات, الكائنات إلخ.
مثال: note و Note ليسوا شيئاً واحداً.

بينما في لغات برمجة أخرى مثل HTML لا يهم إذا كانت الأحرف كبيرة أو صغيرة.
مثال: note و Note و NoTe و NOTE هم شيئاً واحداً.



إسم الكلاس

دائماً إبدأ إسم الكلاس بحرف كبير و في حال كان إسم الكلاس يتألف من أكثر من كلمة, إجعل أول حرف من كل كلمة كبيراً.

أمثلة

في حال كان إسم الكلاس يتألف من كلمة واحدة.

                    class First:
	

في حال كان إسم الكلاس يتألف من أكثر من كلمة.

                    class FirstPythonClass:
	


إسم المتغير

إستخدم الأحرف الصغيرة عند وضع أسماء للمتغيرات و في حال كان إسم المتغير يتألف من أكثر من كلمة قم بوضع _ بين كل كلمتين.

أمثلة

في حال كان إسم المتغير يتألف من كلمة واحدة.

                    average = 10
	

في حال كان إسم المتغير يتألف من أكثر من كلمة.

                    total_score = 20
	


إسم الدالة

إستخدم الأحرف الصغيرة عند وضع أسماء للدوال و في حال كان إسم الدالة يتألف من أكثر من كلمة قم بوضع _ بين كل كلمتين.

أمثلة

في حال كان إسم الدالة يتألف من كلمة واحدة.

                    def display():
	

في حال كان إسم الدالة يتألف من أكثر من كلمة.

                    def display_user_info():
	


التعليقات

نستخدم التعليقات لنضع ملاحظات حول الكود الذي كتبناه فقط لكي لا ننسى كيف برمجنا الكود في حال أردنا مراجعته أو التعديل عليه بعد وقت طويل.
التعليقات لا تؤثر إطلاقاً على الكود المكتوب الموضوع في البرنامج و يمكن وضع عدد غير محدود من التعليقات.

لتضع تعليق, ضع الرمز # ثم أكتب بعده ما شئت.

تذكر: أنت لست مجبراً على وضع تعليقات في برامجك. و لكننا ننصحك بوضع تعليقات دائماً حتى تساعدك في فهم الكود الذي كتبته.

مثال

                    #     هذا تعليق يتألف من سطر واحد و هو لا يؤثر أبداً على الكود الموضوع
	  #  هذا تعليق آخر.. كما تلاحظ, يمكنك وضع العدد الذي تريده من التعليقات
	

ملاحظة: يمكن وضع تعليقات بطرق أخرى في بايثون, لكن مطوري لغة بايثون في موقعهم الرسمي ينصحوا بإعتماد هذا الأسلوب فقط في وضع التعليقات.



كتابة أكثر من أمر واحد على نفس السطر

إفتراضياً, بايثون تعتبر أن كل أمر يكتب على سطر واحد.
إذا أردت كتابة أكثر من أمر على نفس السطر قم بوضع فاصلة منقوطة ; بين كل أمرين و هكذا سيفهم مترجم لغة بايثون أن السطر عليه أكثر من أمر.

مثال

هنا قمنا بوضع ثلاث أوامر على سطر واحد. فعلياً, كل أمر هنا عبارة عن تعريف متغير و إعطائه قيمة.

                    x = 1; y = 2; z = 3
	


كتابة أمر واحد على أكثر من سطر

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

المثال الأول

Test.py
                    # هنا قمنا بتعريف ثلاث متغيرات
	  item_1 = 10
	  item_2 = 20
	  item_3 = 30

	  # الثلاث أسطر التالية عبارة عن أمر واحد
	  # total و وضع الناتج في المتغير item_3 و item_2 و item_1 إذا هنا سيتم جمع قيم المتغيرات
	  total = item_1 + \
	  item_2 + \
	  item_3

	  # total هنا قمنا بعرض قيمة المتغير
	  print("total contains:", total)
	

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

total contains: 60

ملاحظة: الجمل التي تحتوي على الرموز [] أو () أو {} يمكن كتابتها مباشرةً على عدة أسطر. أي لا تحتاج \ في نهاية كل سطر.

المثال الثاني

هنا قمنا بتعريف مصفوفة من النصوص.

Test.py
                    # الأربعة أسطر التالية عبارة عن أمر واحد
	  seasons = ['Autumn',
	  'Winter',
	  'Spring',
	  'Summer']

	  # seasons هنا قمنا بعرض القيم المخزنة في المصفوفة
	  print("Seasons contains:", seasons)
	

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

Seasons contains: ['Autumn', 'Winter', 'Spring', 'Summer']

الأحرف المستخدمة في وضع الأسماء في بايثون

أي إسم نضعه لمتغير, دالة, كلاس, كائن إلخ.. يسمى identifier في البرمجة.
في بايثون كل عنصر نريد إنشاؤه علينا إعطاؤه إسم خاص, أي علينا تحديد الـ identifier له.
إذاً يتم التمييز بين العناصر في بايثون من خلال أسمائهم, أي من خلال الـ Identifiers.


قواعد إلزامية عند إعطاء الأسماء

  1. الـ Identifiers يجب أن يبدأوا بحرف كبير بين A-Z أو حرف صغير بين a-z أو الشحطة _.

  2. يمنع إستخدام أي كلمة من الكلمات المحجوزة ( Keywords ).

  3. لا تنسى أن بايثون تطبق مبدأ الـ Case Sensitive.


ركز على أول حرف فقط

أمثلة للأسماء التي يسمح باستخدامها: Harmash , name , _number

أمثلة للأسماء التي يمنع استخدامها: 1st , -cash , @user

الكلمات المحجوزة في بايثون

جميع الكلمات التالية محجوزة للغة بايثون, أي لا يمكن إستخدامها كـ Identifiers.

and
assert
break
class
continue
def
del
elif
else
except
exec
False
finally
for
from
global
if
import
in
is
lambda
None
nonlocal
not
or
pass
print
raise
return
True
try
while
with
yield

قواعد ترتيب الكود في بايثون

في البداية إذا كنت تستخدم برنامج PyCharm فإنه سيقوم بتنبيهك إذا خالفت أي قاعدة من قواعد كتابة الكود الإجبارية في بايثون.
قواعد كتابة الكود في بايثون هي التالية:

  • لا تقم بإضافة أي مسافة فارغة باستخدام الزر TAB لأن المسافة التي يعطيها هذا الزر غير مسموح إستخدامها في لغة بايثون.

  • إستخدم 4 مسافات فارغة Space عند وضع الكود بشكل متداخل.

  • ضع سطر فارغ على الأقل بين السطر الذي تم فيه تعريف الكلاس و الدوال المعرفة بداخله.

  • ضع سطر فارغ على الأقل بين كل دالتين.

  • ضع سطر فارغ بين كل إثنين بلوك تضيفهما بداخل الدوال.

  • ضع مسافة فارغة حول جمل التحكم و جمل الشرط.

  • عند وضع التعليقات يفضل إستخدام الرمز # في بداية كل سطر حتى و إن كان التعليق يتألف من عدة أسطر.

  • عدد الأحرف القصوى التي يمكن وضعها في كل سطر هو 79 حرف.


مصطلحات تقنية

  • بلوك: عبارة عن مجموعة أوامر متسلسلة منطقياً و موضوعة في مكان محدد و لا يوجد بينها أسطر فارغة.

  • Indentations: عبارة عن المسافات الفارغة التي يتم إضافتها لترتيب و تنسيق كل بلوك يتم إضافته.

حل مشكلة إستخدام زر الـ TAB في بايثون

برنامج الـ PyCharm يتيح لك إمكانية إستخدام زر الـ TAB لإضافة 4 مسافات فارغة دفعة واحدة و بدون مشاكل بشرط ضبط ذلك يدوياً.

لجعل زر الـ TAB يضيف 4 مسافات فارغة عند النقر عليه بدل إضافة مسافة كبيرة في برنامج PyCharm, قم باتباع الخطوات التالية:

  1. أنقر على S + Alt + Ctrl لتفتح صفحة الضبط.

  2. أنقر على Code Style ثم Python ثم تأكد من اختيار نفس الخصائص التي في الصورة.

تحويل كل TAB موجودة في ملف البايثون إلى 4 مسافات فارغة

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

برنامج الـ PyCharm يتيح لك إمكانية تحويل كل TAB موجودة في الكود إلى 4 مسافات فارغة دفعة واحدة و بدون مشاكل بشرط ضبط ذلك يدوياً.

لجعل كل TAB تتحول إلى 4 مسافات فارغة في برنامج PyCharm, قم باتباع الخطوات التالية:

أمثلة حول طريقة كتابة الكود في بايثون

الهدف من المثال التالي إظهار كيف يجب ترتيب كود البايثون و ليس معرفة طريقة عمله.

المثال الأول

Test.py
                    # قيمته 14 note هنا قمنا بتعريف متغير إسمه
	  note = 14

	  # أكبر أو تساوي 10 سيتم تنفيذ أمر الطباعة الموضوع بداخلها note هنا وضعنا شرط يعني أنه إذا كانت قيمة المتغير
	  if note >= 10:
	  print("Congratulations.. you passed the test!")

	  # أكبر أو تساوي 10 سيتم تنفيذ أمر الطباعة الموضوع بداخلها note هنا لنا أنه إذا لم تكن قيمة المتغير
	  else:
	  print("Sorry.. you failed the test!")
	

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

Congratulations.. you passed the test!

في حال كنت تنوي وضع كل الكود السابق بداخل كلاس, يجب أن تضيف 4 مسافات فارغة قبل كل سطر.
تذكر: الهدف من المثال التالي إظهار كيف يجب ترتيب كود البايثون و ليس معرفة طريقة عمله.

المثال الثاني

Test.py
                    # Test هنا قمنا بتعريف كلاس إسمه
	  class Test:

	  # قيمته 14 note هنا قمنا بتعريف متغير إسمه
	  note = 14

	  # أكبر أو تساوي 10 سيتم تنفيذ أمر الطباعة الموضوع بداخلها note هنا وضعنا شرط يعني أنه إذا كانت قيمة المتغير
	  if note >= 10:
	  print("Congratulations.. you passed the test!")

	  # أكبر أو تساوي 10 سيتم تنفيذ أمر الطباعة الموضوع بداخلها note هنا كأننا قلنا أنه إذا لم تكن قيمة المتغير
	  else:
	  print("Sorry.. you failed the test!")
	

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

Congratulations.. you passed the test!

أنواع المتغيرات في بايثون

مفهوم المتغيرات في بايثون

متغير: تعني variable في اللغة الإنجليزية.
الآن, نريدك أن تفهم المتغيرات على أنها فقط أماكن يتم حجزها في الذاكرة لتخزين البيانات أثناء تشغيل البرنامج.

في بايثون, المبرمج غير مسؤول عن تحديد أنواع المتغيرات التي يعرّفها في برنامجه.
فعلياً, عندما تقوم بتعريف متغير و تضع فيه أي قيمة, سيقوم مفسّر لغة بايثون بتحديد نوع هذا المتغير بناءاً على القيمة التي أسندتها إليه بشكل تلقائي وقت التشغيل.

في بايثون يجب إسناد قيمة إلى المتغير أثناء تعريفه.

المثال الأول

Test.py
var = 5       # و قيمته 5 var هنا قمنا بتعريف متغير إسمه
	  print(var)    # var هنا قمنا بطباعة قيمة المتغير
	

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

5

في بايثون يمكن تعريف عدة متغيرات متساوية في القيمة في وقت واحد.

المثال الثاني

Test.py
x = y = z = 10      # 10 هنا قمنا بتعريف ثلاث متغيرات قيمتها

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

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

x = 10
y = 10
z = 10

معرفة نوع المتغير في بايثون

لمعرفة نوع أي متغير يمكنك إستخدام الدالة type().
تذكر: نوع المتغير في بايثون غير ثابت لأنه يتغير بشكل تلقائي على حسب نوع القيمة التي يتم تخزينها فيه.

مثال

Test.py
var = 10           # var هنا وضعنا رقم في المتغير
	  print(type(var))   # لأنها عبارة عن رقم int لاحظ أن نوعها سيكون .var هنا طبعنا نوع قيمة المتغير

	  var = 'harmash'    # var هنا وضعنا نص في المتغير
	  print(type(var))   # لأنها عبارة عن نص str لاحظ أن نوعها سيكون .var هنا طبعنا نوع قيمة المتغير
	

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

<class 'int'>
<class 'str'>

أنواع المتغيرات في بايثون

تنقسم أنواع المتغيرات في بايثون إلى 7 أنواع أساسية و هي:

  • أرقام (Numbers).

  • نصوص (Strings).

  • منطقية (Booleans).

  • مصفوفات ليس لها حجم ثابت يقال لها Lists.

  • مصفوفات حجمها و قيمها ثابتة, و غير قابلة للتغيير يقال لها Tuples.

  • مصفوفات ليس لها حجم ثابت, و لا يمكن حذف قيمها, و يمكن إضافة قيم جديدة فيها يقال لها Sets.

  • جداول تخزن البيانات فيها بطريقة مفايتح (Keys) و قيم (Values) يقال لها Dictionaries.

الأرقام في بايثون

عند تعريف متغير و تخزين رقم فيه, فإن مفسّر لغة بايثون سيقوم بشكل تلقائي بتحديد نوع هذا المتغير بناءاً على نوع القيمة الرقمية التي تم إسنادها إليه.
فإذا وضعت فيه عدد صحيح, يصبح نوعه 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'>

ملاحظة

صحيح أن مفسّر بايثون يقوم بتحديد أنواع القيم بشكل تلقائي عنك لكن هذا لا يعني أنك غير قادر على تحويل أنواع الأرقام إلى النوع الذي يناسبك.
ستتعرف على دوال خاصة للتعامل مع الأرقام و ستتعلم طريقة تحويل أنواع الأرقام في درس خاص لاحقاً في هذه الدورة.

النصوص في بايثون

لتعريف نص في بايثون نستخدم الرمز ' أو الرمز " أو الرمز """.


هل يوجد فرق بين هذه الرموز؟

بالنسبة للرمز ' و الرمز " فإنه لا يوجد أي فرق بينهما. و يمكن إستخدام أي واحد منهما لتعريف نص يتألف من سطر واحد.
بالنسبة للرمز ''' و الرمز """ فإنه لا يوجد أي فرق بينهما. و يمكن إستخدام أي واحد منهما لتعريف نص كبير يتألف من عدة أسطر.


في المثال التالي قمنا بتعريف ثلاث متغيرات تحتوي على قيم نصية. لاحظ أننا قمنا بتعريف كل متغيير بواسطة رمز مختلف.

المثال الأول

Test.py
# هنا قمنا بتعريف ثلاث متغيرات تحتوي على قيم نصية
	  name = 'Mhamad'
	  job = "Programmer"
	  message = '''This string that will span across multiple lines. No need to use newline characters for the next lines.
	  The end of lines within this string is counted as a newline when printed.'''

	  # هنا قمنا بعرض قيم المتغيرات النصية بأسلوب مرتب
	  print('Name: ', name)
	  print('Job: ', job)
	  print('Message: ', message)
	

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

Name: Mhamad
Job: Programmer
Message: This string that will span across multiple lines. No need to use newline characters for the next lines.
The end of lines within this string is counted as a newline when printed.

في المثال التالي قمنا بتعريف نص يحتوي على نفس الرموز التي تستخدم لتعريف النصوص.

المثال الثاني

Test.py
# يحتوي على قيمة نصية text هنا قمنا بتعريف متغير إسمه
	  text = """In this line we print 'single quotations'
	  In this line we print "double quotations" """

	  # text هنا قمنا بعرض قيمة المتغير
	  print(text)
	

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

In this line we print 'single quotations'
In this line we print "double quotations"

ملاحظة

هناك أساليب و دوال خاصة للتعامل مع النصوص سنشرحها في درس خاص لاحقاً في هذه الدورة.

القيم المنطقية في بايثون

النوع bool يستخدم في العادة عند وضع شروط منطقية أو لمعرفة ما إذا تم تنفيذ أمر معين بنجاح أم لا.
عند إسناد القيمة True أو القيمة False إلى المتغير فإنه يصبح من النوع bool.


معلومة تقنية

في الواقع القيمة True تساوي 1 و القيمة False تساوي 0.
في بايثون يفضل إستخدام الصفر و الواحد بدلاً من إستخدام القيم المحجوزة True و False عند التشييك على قيمة المتغير أو على ما سترجعه الدالة.


في المثال التالي قمنا بتعريف متغير إسمه check و أعطيناه القيمة True ثم إستخدمناه في وضع شرط.

مثال

Test.py
# True و قيمته check هنا قمنا بتعريف إسمه
	  check = True

	  # True تساوي check سيتم تنفيذ أمر الطباعة الموضوع هنا إذا كانت قيمة المتغير
	  if check == True:
	  print('check = True')

	  # False أي إذا كانت تساوي True تساوي check سيتم تنفيذ أمر الطباعة الموضوع هنا إذا لم تكن قيمة المتغير
	  else:
	  print('check = False')
	

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

check = True

ملاحظة

بدل الأمر if check == True: كان يمكنك كتابة if check == 1: أو كتابة if check: فقط و الحصول على نفس النتيجة.

تخزين البيانات في List في بايثون

الـ List عبارة عن مصفوفة حجمها غير ثابت و يمكنها تخزين قيم من مختلف الأنواع في وقت واحد.
في بايثون نستخدم الرمز [ ] لتعريف مصفوفة أحادية ( أي ذات بعد واحد ) ليس لها حجم ثابت.


في المثال التالي قمنا بتعريف 4 مصفوفات.

المثال الأول

Test.py
A = []                                 # هنا قمنا بتعريف مصفوفة فارغة
	  B = [10, 20, 30, 40, 50]               # هنا قمنا بتعريف مصفوفة تحتوي على أعداد صحيحة فقط
	  C = ['Mhamad', 'Samer', 'Abdullah']    # هنا قمنا بتعريف مصفوفة تحتوي على نصوص فقط
	  D = [1, 'two', 'three', 4]             # هنا قمنا بتعريف مصفوفة تحتوي على أعداد صحيحة و نصوص
	

في المثال التالي قمنا بتعريف مصفوفة تتألف من 4 عناصر, ثم قمنا بإعطائها 4 قيم, ثم قمنا بإضافة عنصر جديد عليها, ثم عرضنا قيمها و عدد عناصرها.

المثال الثاني

Test.py
# هنا قمنا بتعريف مصفوفة من النصوص تتألف من 4 عناصر
	  languages = [str] * 4

	  # هنا قمنا بوضع قيمة في كل عنصر فيها
	  languages[0] = 'Arabic'
	  languages[1] = 'French'
	  languages[2] = 'English'
	  languages[3] = 'Spanish'

	  # هنا قمنا بإضافة عنصر جديد على المصفوفة
	  languages.append('German')

	  # هنا قمنا بعرض قيم المصفوفة و عدد عناصرها
	  print('Stored languages:', languages)
	  print('Number of stored languages is:', len(languages))
	

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

Stored languages: ['Arabic', 'French', 'English', 'Spanish', 'German']
Number of stored languages is: 5

ملاحظة

ستتعرف على دوال خاصة للتعامل مع الـ Lists و سبب إستخدامهم و ستتعلم طرق كثيرة للتعامل معهم في درس خاص لاحقاً في هذه الدورة.

تخزين البيانات في Tuple في بايثون

الـ Tuple عبارة عن مصفوفة حجمها ثابت و قيمها غير قابلة للتغيير و يمكنها تخزين قيم من مختلف الأنواع في وقت واحد.
في بايثون نستخدم الرمز ( ) لتعريف مصفوفة أحادية ( أي ذات بعد واحد ) حجمها و قيمها ثابتة.


في المثال التالي قمنا بتعريف 4 مصفوفات.

المثال الأول

Test.py
A = ()                                 # هنا قمنا بتعريف مصفوفة فارغة
	  B = (10, 20, 30, 40, 50)               # هنا قمنا بتعريف مصفوفة تحتوي على أعداد صحيحة فقط
	  C = ('Mhamad', 'Samer', 'Abdullah')    # هنا قمنا بتعريف مصفوفة تحتوي على نصوص فقط
	  D = (1, 'two', 'three', 4)             # هنا قمنا بتعريف مصفوفة تحتوي على أعداد صحيحة و نصوص
	

في المثال التالي قمنا بتعريف مصفوفة تتألف من 4 عناصر ثابتة, ثم عرضنا قيمها و عدد عناصرها.

المثال الثاني

Test.py
# هنا قمنا بتعريف مصفوفة ليس لها نوع محدد و تتألف من 4 عناصر
	  languages = ('Arabic', 'French', 'English', 'Spanish')

	  # هنا قمنا بعرض قيم المصفوفة و عدد عناصرها
	  print('Stored languages:', languages)
	  print('Number of stored languages is:', len(languages))
	

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

Stored languages: ('Arabic', 'English', 'French', 'Spanish')
Number of stored languages is: 4

ملاحظة

ستتعرف على دوال خاصة للتعامل مع الـ Tuples و سبب إستخدامهم و ستتعلم طرق كثيرة للتعامل معهم في درس خاص لاحقاً في هذه الدورة.

تخزين البيانات في Set في بايثون

الـ Set عبارة عن مصفوفة ليس لها حجم ثابت و قيمها غير قابلة للتغيير و يمكنها تخزين قيم من مختلف الأنواع في وقت واحد.
في بايثون نستخدم الرمز { } لتعريف مصفوفة أحادية ( أي ذات بعد واحد ) ليس لها حجم ثابت و قيمها غير قابلة للتغيير.

في مصفوفات الـ Set يتم تخزين البيانات بشكل عشوائي و ليس بالترتيب كما تم إدخالهم, و السبب في أنه في هذا النوع من المصفوفات لا يتم إعطاء رقم Index خاص لكل عنصر.
لهذا السبب أيضاً, لا يمكنك الوصول لعنصر محدد في Set بشكل مباشر لأنه في الأساس لا يملك رقم Index.


في المثال التالي قمنا بتعريف 4 مصفوفات.

المثال الأول

Test.py
A = {}                                 # هنا قمنا بتعريف مصفوفة فارغة
	  B = {10, 20, 30, 40, 50}               # هنا قمنا بتعريف مصفوفة تحتوي على أعداد صحيحة فقط
	  C = {'Mhamad', 'Samer', 'Abdullah'}    # هنا قمنا بتعريف مصفوفة تحتوي على نصوص فقط
	  D = {1, 'two', 'three', 4}             # هنا قمنا بتعريف مصفوفة تحتوي على أعداد صحيحة و نصوص
	

في المثال التالي قمنا بتعريف مصفوفة تتألف من 4 عناصر ثابتة, ثم عرضنا قيمها و عدد عناصرها.

المثال الثاني

Test.py
# هنا قمنا بتعريف مصفوفة ليس لها نوع محدد و تتألف من 4 عناصر
	  languages = {'Arabic', 'French', 'English', 'Spanish'}

	  # هنا قمنا بعرض قيم المصفوفة و عدد عناصرها
	  print('Stored languages:', languages)
	  print('Number of stored languages is:', len(languages))
	

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

Stored languages: ('Arabic', 'English', 'French', 'Spanish')
Number of stored languages is: 4

ملاحظة

ستتعرف على دوال خاصة للتعامل مع الـ Sets و سبب إستخدامهم و ستتعلم طرق كثيرة للتعامل معهم في درس خاص لاحقاً في هذه الدورة.

تخزين البيانات في Dictionary في بايثون

عند إستخدام الـ List أو Tuple فإنك تتعامل مع عناصرهم من خلال أرقام الـ Indices.
فكرة الـ Dictionary هي وضع مفتاح لكل قيمة. عندها تصل لقيمة كل عنصر موجود من خلال المفتاح الخاص فيه.

إذاً الـ Dictionary عبارة جدول تخزن فيه البيانات بطريقة مفاتيح (Keys) و قيم (Values).
بالنسبة لنوع البيانات التي تخزنها بداخل الـ Dictionary فعندك الحرية في تخزين مفاتيح و قيم من أي نوع تريد.

في بايثون نستخدم الرمز { } لتعريف Dictionary.


في المثال التالي قمنا بتعريف Dictionary يتألف من 5 عناصر, ثم عرضنا قيمة العنصر الثالث من خلال المفتاح الخاص فيه.

مثال

Test.py
# يتألف من 5 عناصر dictionary هنا قمنا بتعريف
	  dictionary = {
	  1: 'One',
	  2: 'Tow',
	  3: 'Three',
	  4: 'Four',
	  5: 'Five'
	  }

	  # هنا قمنا بعرض قيمة العنصر الذي يحمل المفتاح رقم 3
	  print(dictionary[3])
	

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

Three

ملاحظة

ستتعرف على دوال خاصة للتعامل مع الـ Dictionaries و سبب إستخدامهم و ستتعلم طرق كثيرة للتعامل معهم في درس خاص لاحقاً في هذه الدورة.

هل كل شيء في بايثون عبارة عن كائن؟

الجواب هو نعم. رغم أننا نقول متغير للكائن الذي يحتوي على قيمة رقمية أو نصية, إلا أنه في الواقع عبارة عن كائن و ليس متغير عادي كما يوجد في لغات البرمجة الأخرى.

في حال كنت تستخدم برنامج PyCharm, تلاحظ أنه عند كتابة إسم أي متغير و وضع نقطة مباشرةً بعده, فإنه يظهر لك أنه يمكن إستدعاء دوال أو خصائص موجودة فيه!
لاحظ الصورة التالية.

إذاً لو لم تكن هذه المتغيرات في الحقيقة عبارة عن كائنات لما ظهر لنا أي شيء عند وضع النقطة.