أساسيات بايثون للمبتدئين

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

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

كتابة كود بايثون

في هذا الدرس سوف نقوم بكتابة بعض أكواد بايثون على نظام التشغيل Windows. يمكننا إضافة دليل للاحتفاظ بجميع أكواد بايثون، كما في المثال التالي :

دليل للاحتفاظ بالنصوص البرمجية بيثون

يمكنك استخدام العديد من الأدوات لكتابة كود بايثون، بدءًا من تطبيق المفكرة البسيط إلى بيئة التطوير المتكاملة الكاملة مثل PyCharm من JetBrains. سوف نستخدم PyCharm نظرًا لأن تطلعاتنا عالية على الرغم من أننا مجرد مبتدئين!

بيئة تطوير متكاملة pycharm بواسطة jetbrains

ستحتاج إلى تثبيت Python على جهازك. و يمكنك تثبيته باستخدام إحدى حزم التثبيت المتوفرة على Python.org و هو امر بسيط لغاية.

عند التثبيت باستخدام برنامج التثبيت، اختر “Add Python To Path”! سيسمح لك هذا ببساطة بإدخال Python Shell من أي موقع دليل على جهازك.

حسنًا، حان الوقت لكتابة برنامج بايثون. في الواقع سيكون برنامج مرحبا بالعالم. أول شيء يجب فعله هو فتح الدليل الخاص بنا، والذي سيحتوي على كود Python كمشروع في PyCharm.

تحتوي ملفات بايثون على امتداد .py وإذا أردنا كتابة برنامج helloworld، فيمكننا إنشاء ملف تحت إسم helloworld.py.

مرحبا بالعالم في pycharm

داخل هذا الملف، يمكنك إضافة الكود التالي:

print('hello world')

تشغيل برنامج بايثون

يمكننا تشغيل البرنامج مباشرة في PyCharm. هناك عدة طرق للقيام بذلك، ولكن إحدى الطرق السهلة هي النقر بزر الماوس الأيمن على ملف Python الذي ترغب في تشغيله واختيار تشغيل “helloworld”.

pycharm-run-helloworld

إذا سار كل شيء على مايرام، فسيتم فتح وحدة تحكم بايثون المدمجة في المنطقة السفلية من نافذة PyCharm وستظهر لك مخرجات البرنامج النصي. وفي حالتنا، ستكون “hello world”.

pycharm-debug-output-window

نعم قد تكون هذه بداية رحلة جميلة إلى برامج ممتازة ستكتبها بلغة بايثون للقيام بمهام الأتمتة، أو إنشاء مواقع الويب، أو جمع البيانات من الإنترنت، أو أي مهمة أخرى قد تخطر على بالك. قد تكون مهتمًا أيضًا بـ جانغو للمبتدئين لتطوير الويب باستخدام بايثون.

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

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

التصريح عن متغير

قم بإنشاء ملف variables.py إلى مشروع PyCharm الخاص بنا لاختبار بعض مفاهيم المتغيرات.

متغير بايثون

يمكننا اختبار الكود السابق في بيئة REPL الخاصة ببايثون، والتي تأتي مع أي تثبيت لبايثون. للقيام بذلك، نتبع الخطوات التالية:

  1. افتح موجه الأوامر PowerShell.
  2. اكتب Python واضغط Enter للدخول إلى بيئة REPL.
  3. اكتب اسم متغير، وليكن my_variable، ثم استخدم العامل (=) لتعيين قيمة عددية 77 للمتغير.
  4. استخدم دالة print() المدمجة لطباعة قيمة المتغير my_variable والاطلاع على الناتج.
my_variable = 77
print(my_variable)

سيؤدي هذا إلى طباعة الرقم 77 في وحدة التحكم.


إعادة التصريح عن متغير

في بايثون، يمكنك تعيين قيمة جديدة لمتغير سابق ، واستبدال القيمة الأصلية بالقيمة الجديدة. و يمكن أن تكون القيمة الجديدة أيضًا من نوع جديد.

في هذا المثال سنقوم بإستبدال العدد الصحيح الأولي بسلسلة.

>>> my_variable = "Put a string in the variable"
>>> print(my_variable)
Put a string in the variable

احترام أنواع البيانات

بايثون لا تحتاج إلى الإعلان عن النوع عند إنشاء متغير. ومع ذلك، فأنت بحاجة إلى احترام نوع البيانات الموجود في المتغير، حيث لا تحتوي لغة Python على Type Coercion (عملية تحويل قيمة من نوع إلى آخر). دعونا نرى ذلك في تطبيق عملي.

إضافة متغيرين من نفس النوع أمر جيد تمامًا.

>>> print(7 + 7)
14
>>> print('string one ' + 'string two')
string one string two

اما الأن سنقوم بإضافة سلسلة إلى عدد صحيح.

>>> print('Seven' + 7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str


و كما هو متوقع لا يمكن القيام بذلك. ستحصل على خطأ في النوع، كما نرى أعلاه. ولكن يمكننا تحويل الرقم 7 إلى سلسلة ولن يعترض مفسر بايثون على ذلك.

>>> print('Seven' + str(7))
Seven7

كيف تؤثر الدوال على المتغيرات؟


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

def my_function():
    local_variable = "Funk soul brother"
    print(local_variable)

يمكننا الآن استدعاء هذه الدالة ببساطة عن طريق كتابة my_function(). و سيكون الناتج طباعة سلسلة Funk Soul Brother على الشاشة.

و لكن ماذا يحدث إذا حاولنا الوصول إلى local_variable مباشرة من دون إستدعاء الدالة print(local_variable) ؟

Traceback (most recent call last):
File “C:/python/pythonforbeginners/variables.py”, line 6, in <module>
print(local_variable)
NameError: name ‘local_variable’ is not defined

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

متغير دالة

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

local_variable = "I'm actually global"


def my_function():
    local_variable = "Funk soul brother"
    print(local_variable)


my_function()
print(local_variable)

و طبعا سيكون الناتج :

Funk soul brother
I'm actually global

الكلمة الأساسية  global في بايثون

الكلمة الأساسية global في بايثون هي عبارة عن مفاتيح التحكم في النطاق، والتي تُستخدم لجعل المتغيرات العالمية في متناول الدالة.

بشكل افتراضي، تمتلك الدوال نسخة محلية من أي متغيرات تقوم بتعريفها داخلها. هذا يعني أنه لا يمكن الوصول إلى المتغيرات العالمية من داخل الدالة إلا إذا تم استخدام الكلمة الأساسية global.

local_variable = "I'm actually global"


def my_function():
    global local_variable
    local_variable = "Funk soul brother"
    print(local_variable)


print(local_variable)
my_function()
print(local_variable)

في رأيك ماذا سيكون الناتج؟

I'm actually global
Funk soul brother
Funk soul brother

من المهم ملاحظة أن استخدام الكلمة الأساسية global يمكن أن يؤدي إلى نتائج غير متوقعة، لذلك يجب استخدامها بحذر. على سبيل المثال، إذا قمنا بتعريف متغير local_variable داخل دالة، ثم استخدمنا الكلمة الأساسية global لجعل المتغير local_variable عالميًا، فقد يؤدي ذلك إلى تغيير قيمة المتغير local_variable في جميع أنحاء البرنامج.

فيما يلي بعض النصائح لاستخدام الكلمة الأساسية global بأمان:

  • استخدم الكلمة الأساسية global فقط عندما يكون ذلك ضروريًا.
  • استخدم الكلمة الأساسية global بعناية لتجنب تغيير قيمة المتغيرات العالمية بشكل غير مقصود.
  • إذا كنت غير متأكد مما إذا كان يجب عليك استخدام الكلمة الأساسية global، فمن الأفضل عدم استخدامها.

الكلمة الأساسية  del في بايثون


الكلمة الأساسية del في بايثون هي أيضا عبارة عن مفاتيح التحكم في النطاق، والتي تُستخدم لحذف المتغيرات أو الكائنات.

يمكن استخدام الكلمة الأساسية del لحذف المتغيرات المحلية أو العالمية.

local_variable = "I'm actually global"


def my_function():
    global local_variable
    local_variable = "Funk soul brother"
    print(local_variable)
    del local_variable


print(local_variable)
my_function()
print(local_variable)

بعد تنفيذ الكود السابق سيكون الناتج :

I'm actually global
Funk soul brother

Traceback (most recent call last):
  File "C:/python/pythonforbeginners/variables.py", line 13, in 
    print(local_variable)
NameError: name 'local_variable' is not defined

تعمل  print(local_variable) الاولى بشكل جيد، كما تعمل  my_function() بشكل جيد، ولكن بعد ذلك تفشل الدالة الثانية print(local_variable). لأنه، داخل الدالة، أضفنا السطر del local_variable. و يؤدي هذا إلى إزالة اlocal_variable مباشرة بعد إطبع local_variable.

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

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

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

لإنشاء دالة في بايثون، يمكنك استخدام الكلمة الأساسية def.

def pyfunc():
    print("This is a function")


pyfunc()

الدالة أعلاه لا تأخذ أي مدخلات، ولكن هناك بعض الأشياء المثيرة التي يجب أخذها في الاعتبار. إذا كنت تبرمج باستخدام لغة C أو C# أو PHP أو Java أو JavaScript، ستلاحظ أنه ليس لدينا أي أقواس متعرجة في في بايثون، حي يتم استبدال تلك الأقواس المتعرجة بالنقطتين : والمسافات البادئة للإشارة إلى نطاق الدالة. هذه هي الطريقة الصجيجة لإنشاء دالة في بايثون. يمكنك استخدام الكلمة الأساسية def والنقطتين والمسافة البادئة.

تمرير الوسائط إلى دالة

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

فيمايلي دالة ترحيب بسيطة تأخذ وسيطتين.

def greeter(name, message):
    print('Hi ' + name + ', ' + message)


greeter('John', 'How are you today?')

إرجاع قيمة الدالة

تشير “إرجاع قيمة” إلى العملية التي تقوم بها دالة لتوفير قيمة إلى البرنامج الذي استدعاها. يمكن أن تكون هذه القيمة أي نوع من أنواع البيانات، بما في ذلك الأعداد الصحيحة والأرقام العشرية والسلاسل والنصوص والكائنات.

في بايثون، يتم إرجاع قيمة الدالة باستخدام عبارة return. على سبيل المثال، الدالة التالية تُرجع الرقم 10:

def my_function():
  return 10

print(my_function())

سيؤدي هذا إلى طباعة الرقم 10.

يمكن أيضًا إرجاع قيمة متغيرة باستخدام عبارة return. على سبيل المثال، الدالة التالية تُرجع قيمة المتغير x:

x = 10

def my_function():
  return x

print(my_function())

سيؤدي هذا أيضًا إلى طباعة الرقم 10.

إذا لم يتم إرجاع أي قيمة من دالة، فسيتم إرجاع قيمة فارغة (None). على سبيل المثال، الدالة التالية لا تُرجع أي قيمة:

def my_function():
  pass

print(my_function())

عدد متغير من الوسائط

عدد متغير من الوسائط هي خاصية في لغات البرمجة تسمح للدالة بأخذ عدد غير محدد من الوسائط عند استدعاؤها.

في لغات البرمجة التي لا تدعم عدد متغير من الوسائط، يجب تحديد عدد الوسائط التي ستأخذها الدالة عند تعريفها. على سبيل المثال، الدالة التالية تأخذ رقمين كوسائط:

def my_function(x, y):
  print(x, y)

عند استدعاء هذه الدالة، يجب أن يتم توفير رقمين كوسائط. على سبيل المثال، يمكننا استدعاء الدالة على النحو التالي:

my_function(1, 2)

سيؤدي هذا إلى طباعة الأرقام 1 و 2.

في لغات البرمجة التي تدعم عدد متغير من الوسائط، يمكن للدالة أن تأخذ أي عدد من الوسائط عند استدعاؤها. على سبيل المثال، الدالة التالية تأخذ عددًا غير محدد من الوسائط:

def my_function(*args):
  for arg in args:
    print(arg)

عند استدعاء هذه الدالة، يمكننا توفير أي عدد من الوسائط. على سبيل المثال، يمكننا استدعاء الدالة على النحو التالي:

my_function(1, 2, 3, 4, 5)

سيؤدي هذا إلى طباعة الأرقام 1 و 2 و 3 و 4 و 5.

يُشار إلى الوسائط المتغيرة في عدد من اللغات البرمجية باسم *args أو ‎**kwargs.

فيما يلي بعض النصائح لاستخدام عدد متغير من الوسائط:

  • استخدم عدد متغير من الوسائط فقط عندما يكون ذلك ضروريًا.
  • إذا كنت تستخدم عدد متغير من الوسائط، فتأكد من معالجة جميع الوسائط التي تم تمريرها إلى الدالة.
  • إذا كنت تستخدم عدد متغير من الوسائط، ففكر في استخدام قائمة أو مصفوفة لمعالجة الوسائط.

فيما يلي بعض الأمثلة الأخرى لاستخدام عدد متغير من الوسائط:

  • إضافة عناصر إلى قائمة:
def my_function(*args):
  for arg in args:
    my_list.append(arg)

my_list = []
my_function(1, 2, 3, 4, 5)
print(my_list)

سيؤدي هذا إلى طباعة القائمة التالية:

[1, 2, 3, 4, 5]
  • حساب مجموع الأعداد:
def my_function(*args):
  sum = 0
  for arg in args:
    sum += arg
  return sum

print(my_function(1, 2, 3, 4, 5))

سيؤدي هذا إلى طباعة الرقم 15.

المنطق الشرطي باستخدام العبارات if و else و elif والمعامل الثلاثي

تحتاج البرامج إلى اتخاذ قرارات لتكون مفيدة. يجب على البرنامج في كثير من الأحيان مقارنة القيم وتنفيذ التعليمات البرمجية بناءً على النتائج المنطقية. و لهذا نستخدم المنطق الشرطي. في بايثون، يتم التعامل مع الشروط الشرطية بواسطة عوامل التشغيل if وelif وTernary.

الجملة الشرطية If

تُستخدم الجملة الشرطية if لإنشاء كتلة من التعليمات يتم تنفيذها فقط إذا تحققت الشرط المحدد.

الصيغة العامة للجملة الشرطية if هي:

if condition:
    # code to be executed if condition is True

حيث:

  • condition هي عبارة تعبيرية تحدد الشرط الذي يجب التحقق منه.
  • code هي كتلة التعليمات التي سيتم تنفيذها إذا تحقق الشرط.

على سبيل المثال، يمكننا استخدام الجملة الشرطية if لطباعة رسالة إذا كان الرقم أكبر من 10:

number = 15

if number > 10:
    print("The number is greater than 10")

سيؤدي هذا إلى طباعة الرسالة التالية:

The number is greater than 10

ذا كان الشرط غير صحيح، فلن يتم تنفيذ كتلة التعليمات. على سبيل المثال، يمكننا استخدام الجملة الشرطية if لطباعة رسالة إذا كان الرقم أقل من 10:

number = 5

if number > 10:
    print("The number is greater than 10")

سيؤدي هذا إلى عدم طباعة أي شيء، لأن الشرط غير صحيح.

الجملة الشرطية else

python-if-else-syntax


تستخدم الجملة الشرطية else لإنشاء كتلة من التعليمات يتم تنفيذها إذا لم يتحقق الشرط في الجملة الشرطية if.

الصيغة العامة للجملة الشرطية else هي:

if condition:
    # code to be executed if condition is True
else:
    # code to be executed if condition is False

على سبيل المثال، يمكننا استخدام الجملة الشرطية else لطباعة رسالة إذا كان الرقم أكبر من 10، أو طباعة رسالة مختلفة إذا لم يكن كذلك:

number = 10

if number > 10:
    print("The number is greater than 10")
else:
    print("The number is less than or equal to 10")

سيؤدي هذا إلى طباعة الرسالة التالية:

The number is less than or equal to 10

الجملة الشرطية elif

python-elif-syntax

الجملة الشرطية elif هي عبارة تحكم تستخدم في لغة البرمجة Python لإنشاء عدة شروط بديلة.

الصيغة العامة للجملة الشرطية elif هي:

if condition1:
    # code to be executed if condition1 is True
elif condition2:
    # code to be executed if condition1 is False and condition2 is True
elif condition3:
    # code to be executed if condition1 and condition2 are False and condition3 is True
...
else:
    # code to be executed if all conditions are False

حيث:

  • condition1، condition2، condition3، … هي عبارة تعبيرية تحدد الشرط الذي يجب التحقق منه.
  • code هي كتلة التعليمات التي سيتم تنفيذها إذا تحقق الشرط.

على سبيل المثال، يمكننا استخدام الجملة الشرطية elif لطباعة رسالة إذا كان الرقم أكبر من 10، أو إذا كان الرقم يساوي 10:

number = 10

if number > 10:
    print("The number is greater than 10")
elif number == 10:
    print("The number is equal to 10")

سيؤدي هذا إلى طباعة الرسالة التالية:

The number is equal to 10

في هذا المثال، تم تنفيذ كتلة التعليمات في الجملة الشرطية elif لأن الشرط الأول (number > 10) لم يتحقق.

يمكننا أيضًا استخدام الجملة الشرطية elif لإنشاء سلسلة من الشروط البديلة. على سبيل المثال، يمكننا استخدام الجملة الشرطية elif لطباعة رسالة إذا كان الرقم أكبر من 10، أو إذا كان الرقم يساوي 10، أو إذا كان الرقم أقل من 10:

number = 10

if number > 10:
    print("The number is greater than 10")
elif number == 10:
    print("The number is equal to 10")
elif number < 10:
    print("The number is less than 10")

سيؤدي هذا أيضًا إلى طباعة الرسالة التالية:

The number is equal to 10

في هذا المثال، تم تنفيذ كتلة التعليمات في الجملة الشرطية elif الثانية لأن الشرط الأول (number > 10) لم يتحقق، والشرط الثاني (number == 10) تحقق.

فيما يلي بعض الأمثلة الأخرى لاستخدام الجملة الشرطية elif:

  • يمكن استخدام الجملة الشرطية elif لتحديد ما إذا كان الرقم زوجي أو فردي:
number = int(input("Enter a number: "))

if number % 2 == 0:
    print("The number is even")
elif number % 2 == 1:
    print("The number is odd")

يمكن استخدام الجملة الشرطية elif لتحديد ما إذا كان المستخدم مسجل دخوله أم لا:

logged_in = False

if logged_in:
    print("The user is logged in")
elif logged_in is None:
    print("The user is not logged in yet")
else:
    print("The user is not logged in")

كما يمكن استخدام الجملة الشرطية elif لتحديد ما إذا كان المستخدم بالغًا أم لا:

age = int(input("Enter your age: "))

if age >= 18:
    print("You are an adult")
elif age >= 13:
    print("You are a teenager")
else:
    print("You are a child")

المعامل الثلاثي

المعامل الثلاثي (Ternary operator) هو عبارة تحكم تستخدم لتقييم شرطين متعارضين وتنفيذ أحدهما بناءً على النتيجة.

condition ? expression1 : expression2

حيث:

  • condition هي عبارة تعبيرية تحدد الشرط الذي يجب التحقق منه.
  • expression1 هي عبارة تعبيرية سيتم تنفيذها إذا كان الشرط صحيحًا.
  • expression2 هي عبارة تعبيرية سيتم تنفيذها إذا كان الشرط خاطئًا.

على سبيل المثال، يمكننا استخدام المعامل الثلاثي لتحديد ما إذا كان الرقم زوجيًا أم لا:

number = 10

is_even = number % 2 == 0

# Using the ternary operator
is_even_ternary = number % 2 == 0 ? "Even" : "Odd"

print(is_even_ternary)

سيؤدي هذا إلى طباعة الرسالة التالية:

Even

في هذا المثال، تم تنفيذ عبارة تعبيرية "Even" إذا كان الشرط number % 2 == 0 صحيحًا، وتم تنفيذ عبارة تعبيرية "Odd" إذا كان الشرط خاطئًا.

يمكننا أيضًا استخدام المعامل الثلاثي لتحديد ما إذا كان المستخدم مسجل دخوله أم لا:

logged_in = True

# Using the ternary operator
is_logged_in_ternary = logged_in ? "Logged in" : "Logged out"

print(is_logged_in_ternary)

سيؤدي هذا إلى طباعة الرسالة التالية:

Logged in

في هذا المثال، تم تنفيذ عبارة تعبيرية "Logged in" إذا كان الشرط logged_in صحيحًا، وتم تنفيذ عبارة تعبيرية "Logged out" إذا كان الشرط خاطئًا.

ملاحظة:

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

على سبيل المثال، يمكننا استخدام المعامل الثلاثي لطباعة رسالة إذا كان الرقم أكبر من 10:

number = 15

# Using the ternary operator
is_greater_than_ten_ternary = number > 10 ? "The number is greater than 10" : None

print(is_greater_than_ten_ternary)

سيؤدي هذا إلى طباعة الرسالة التالية:

The number is greater than 10

في هذا المثال، تم تنفيذ عبارة التعبير الأولى إذا كان الشرط number > 10 صحيحًا، وتم تنفيذ عبارة التعبير الثانية إذا كان الشرط خاطئًا.

معالجة المهام المتكررة باستخدام الحلقات

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

حلقة While

يتم استخدام حلقة while لتشغيل كتلة تعليمات برمجية عندما يكون شرط معين صحيحًا. تحب بايثون تبسيط الأمور وتقدم طريقتين لإنشاء الحلقات، while وfor.

مثال على حلقة while في بايثون :

counter = 0

while (counter < 5):
    print(counter)
    counter = counter + 1

و سيكون الناتج كالتالي :

0
1
2
3
4

حلقة For

غالبًا ما يتم استخدام حلقة for مع دالة النطاق range.

for counter in range(3, 7):
    print(counter)

و طبعا سيكون الناتج :

3
4
5
6

Break و Continue

Break و Continue: التحكم في تدفق الحلقات

في لغة البرمجة بايثون، تستخدم العبارتان break و continue للتحكم في كيفية تنفيذ الحلقات (while و for). إليك نظرة عامة على وظيفتهما:

Break:

  • تستخدم لكسر الحلقة و الخروج منها بشكل فوري.
  • تعمل عادةً داخل كتلة تعليمات الحلقة.
  • مفيدة عندما تريد الخروج من الحلقة بمجرد تحقيق شرط معين.

Continue:

  • تستخدم لتخطي الجزء المتبقي من الدورة الحالية في الحلقة واستئناف الحلقة بالدورة التالية.
  • تعمل عادةً داخل كتلة تعليمات الحلقة.
  • مفيدة عندما تريد تخطي عناصر معينة في الحلقة واستئنافها مع العناصر التالية.

أمثلة:

Break:

for i in range(10):
  if i == 5:
    break  # تخرج من الحلقة عند الوصول إلى الرقم 5
  print(i)

سيؤدي هذا إلى طباعة الأرقام من 0 إلى 4 فقط.

Continue:

for i in range(10):
  if i % 2 == 0:
    continue  # تخطي الأرقام الزوجية
  print(i)

سيؤدي هذا إلى طباعة الأرقام الفردية فقط (1، 3، 5، 7، 9).

استخدامات أخرى:

  • يمكن استخدام break أيضًا لكسر الحلقات المضمنة.
  • يمكن استخدام continue داخل شروط تعبيرية معقدة لتحسين قابلية القراءة.

تلميحات:

  • استخدم break و continue بحذر لتجنب إنشاء تعليمات معقدة يصعب قراءتها.
  • تأكد من وجود شرط واضح للخروج من الحلقة عند استخدام break.
  • استخدم continue فقط للتخطي المؤقت لعناصر معينة، وليس لتخطي أجزاء كبيرة من الحلقة.

كائنية التوجه

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

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

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

لتعريف صنف في بايثون، نستخدم الكلمة المفتاحية class. على سبيل المثال، يمكننا تعريف صنف يمثل شخصًا كالتالي:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"Hello, my name is {self.name}.")

هذا التعريف ينشئ صنفًا يسمى Person. يحتوي هذا الصنف على خاصيتين، name و age، و تابع واحد say_hello().

خاصية __init__()

خاصية __init__() هي خاصية خاصة تُستدعي عند إنشاء كائن جديد من صنف. يمكن استخدامها لتهيئة بيانات الكائن. في المثال أعلاه، تقوم خاصية __init__() بتعيين قيمتين للخاصتين name و age.

تابع say_hello()

التابع say_hello() هو تابع عام يمكن استخدامه لطباعة تحية من الكائن.

إنشاء كائن

لإنشاء كائن جديد من صنف، نستخدم الكلمة المفتاحية (). على سبيل المثال، يمكننا إنشاء كائن من صنف Person كالتالي:

person = Person("Kader", 30)

هذا سينشئ كائنًا جديدًا من صنف Person ويسميه person. يحتوي هذا الكائن على الخاصيتين name و age، وكلاهما يحتوي على القيمة المحددة عند إنشاء الكائن.

استخدام الكائن

يمكننا استخدام الكائن بعدة طرق. على سبيل المثال، يمكننا الوصول إلى بيانات الكائن باستخدام علامات نقطية. على سبيل المثال، يمكننا الوصول إلى الخاصية name للكائن person كالتالي:

print(person.name)

سيؤدي هذا إلى طباعة القيمة Kader.

يمكننا أيضًا استخدام توابع الكائن. على سبيل المثال، يمكننا استخدام تابع say_hello() للكائن person كالتالي:

person.say_hello()

سيؤدي هذا إلى طباعة الرسالة التالية:

Hello, my name is Kader.

وراثة الأصناف

يمكن للأصناف أن ترث من أصناف أخرى. على سبيل المثال، يمكننا إنشاء صنف يمثل موظفًا عن طريق وراثة صنف Person كالتالي:

class Employee(Person):
    def __init__(self, name, age, salary):
        super().__init__(name, age)
        self.salary = salary

    def get_salary(self):
        return self.salary

هذا التعريف ينشئ صنفًا يسمى Employee. يرث هذا الصنف من صنف Person، مما يعني أنه يحتوي على نفس الخاصيتين name و age. بالإضافة إلى ذلك، يحتوي صنف Employee على خاصية واحدة جديدة، salary.

ملاحظات:

  • يمكن أن تحتوي الأصناف على أي عدد من الخصائص والأساليب.
  • يمكن للأصناف أن ترث من أصناف أخرى.
  • يمكن استخدام الأصناف لإنشاء كائنات جديدة تمثل كائنات حقيقية في العالم الحقيقي.

التواريخ و الأوقات في بايثون

يعد العمل مع التواريخ والأوقات مهمة برمجة قياسية. و اهذت تمنحك بايثون عدة وحدات للتعامل مع هذه السيناريوهات مثل date ،time ،datetime ،calendar

أساسيات التواريخ والأوقات

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

datetime في بايثون فئات لمعالجة التواريخ والأوقات.

from datetime import date
from datetime import datetime

يمكننا الأن استخدام التابع today() البسيط من فئة  date للحصول على تاريخ اليوم.

today = date.today()
print("Today's date is ", today)
>>> Today's date is  2019-12-17

فيما يلي كيفية طباعة المكونات الفردية للتاريخ.

print("Date Components: ", "Day:" + str(today.day), "Month:" + str(today.month), "Year:" + str(today.year))
<<<Date Components:  Day:17 Month:12 Year:2019

يحتوي كل يوم من أيام الأسبوع على رقم (0=الاثنين، 6=الأحد) يمكنك استخدامه في برنامجك.

print("Today's Weekday number is: ", today.weekday())
days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print("In other words, today is  " + days[today.weekday()])
>>>Today's Weekday number is:  1

العمل مع بيانات التقويم

تحتوي بايثون على وحدة  calendar أنيقة يمكنك من خلالها القيام ببعض الأشياء الرائعة.

يمكننا إنشاء تقويم كجدول نصي من خلال المثال التالي:

c = calendar.TextCalendar(calendar.SUNDAY)
str = c.formatmonth(2020, 1, 0, 0)
print(str)
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

اما المثال التالي يتيح لك إنشاء نسخة HTML من نفس التقويم.

htmlcalendar = calendar.HTMLCalendar(calendar.SUNDAY)
str = htmlcalendar.formatmonth(2020, 1)
print(str)
January 2020
SunMonTueWedThuFriSat
   1234
567891011
12131415161718
19202122232425
262728293031 

العمل مع الملفات في بايثون

يقولون أنه في نظام Linux، كل شيء عبارة عن ملف. ومع ذلك، تعتبر الملفات مهمة للغاية بغض النظر عن نظام التشغيل الذي تعمل عليه. تعمل لغة بايثون على تسهيل العمل مع نظام الملفات، سواء كان Linux أو Windows. دعونا نرى أمثلة لكيفية قراءة وكتابة الملفات في بايثون.

لفتح ملف للكتابة، يمكنك استخدام الكود التالي.

file = open("mytextfile.txt", "w+")

بعد أن أصبح ملفك مفتوحًا، يمكنك الكتابة عليه باستخدام .write() ستحتاج إلى إغلاق الملف باستخدام .Close() بمجرد اكتماله.

for i in range(7):
    file.write("This is line %drn" % (i + 1))
file.close()
الكتابة على الملفات بإستخدام بايثون للمبتدئين

يمكنك التأكد من خلال فتح الدليل أي يتواجد ملف بايثون للتحقق من الملف الذي قمنا بكتابته.

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

لقراءة الملفات في بايثون نستحدم التابع.read() .

file = open("mytextfile.txt", "r")
if file.mode == 'r':  # تأكد من فتح الملف
    contents = file.read()
    print(contents)
pycharm-read-file-to-output

وحدة os

عند العمل مع الملفات، يمكننا استيراد وحدة os للحصول على مزيد من المعلومات حول نظام التشغيل والملفات التي نعمل عليها.

لمعرفة اسم نظام التشغيل يمكنك استخدام هذا الكود.

print(os.name)

يمكنك استخدام التوابع التالية : .exists() و .isfile() و .isdir() للتحقق من وجود الملفات أو المسارات.

print("Item exists: " + str(path.exists("mytextfile.txt")))
print("Item is a file: " + str(path.isfile("mytextfile.txt")))
print("Item is a directory: " + str(path.isdir("mytextfile.txt")))

لقد كانت هذه مقدمة رائعة للغة برمجة بايثون، لكنك ستحتاج إلى المزيد من الموارد لتتعلم أكبر قدر ممكن!

ولهذا سنقوم بكتابة دروس تفصيلية في المستقبل القريب.


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading