تعلم البرمجة مع Python


الدرس: أدخل عالم المتغيرات الرائع


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

هذا المفهوم ضروري ولا يمكنك تجاهله مطلقًا. لكني أؤكد لكم أنه لا يوجد شيء معقد ، فقط مفيد وممتع.

ما هو المتغير؟ 



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

ما هو المتغير؟


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

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

كيف يعمل؟


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

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

في بايثون ، لإعطاء قيمة لمتغير ، اكتب فقط name_ _variable = value اسم (قيمة = المتغير) .

يجب أن يحترم المتغير بعض قواعد بناء الجملة الأساسية:

  1. لا يمكن أن يتكون اسم المتغير إلا من أحرف وأحرف كبيرة وصغيرة وأرقام ورمز تحته خط "_" (يسمى شرطة سفلية ) .
  2. لا يمكن أن يبدأ اسم المتغير برقم.
  3. لغة Python حساسة لحالة الأحرف ، مما يعني أن الأحرف الكبيرة والصغيرة ليست متطابقة (  AGEيختلف المتغير عن aGe وكذلك عن age ) .
إلى جانب هذه القواعد النحوية التي لا مفر منها ، هناك اصطلاحات يحددها المبرمجون أنفسهم. أحدها ، والذي أميل إلى استخدامه كثيرًا ، هو كتابة المتغير بأحرف صغيرة واستبدال أي مسافات بشرطة سفلية "_" . إذا كان علي إنشاء متغير يحتوي على عمري ، فسيتم تسميته my_age . هناك طريقة أخرى مستخدمة وهي جعل الحرف الأول من كل كلمة كبيرًا ، باستثناء الكلمة الأولى التي تشكل المتغير. ثم سيتم تسمية المتغير الذي يحتوي على عمري myAge .

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

لذلك ، إذا أردت ربط عمري بمتغير ، فسيكون بناء الجملة كما يلي:


my_age = 21
 
يعرض المترجم على الفور ثلاث علامات عسكرية بدون أي رسالة. هذا يعني أنه فهم بشكل صحيح وأنه لم يكن هناك خطأ.

لاحظ أن هذه الخطوة تسمى إسناد قيمة إلى متغير   (يتم اختصارها أحيانًا إلى "تخصيص متغير" ) . نقول في الواقع أننا خصصنا القيمة 21 للمتغير my_age .

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


>>> my_age
21
>>>
 
المسافات بين "=" من اسم المتغير وقيمته اختيارية. أضعهم لأسباب مقروئية.

حسنًا ، كل هذا جيد جدًا ، لكن ماذا سنفعل بهذا المتغير؟

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

على سبيل المثال ، دعنا نحاول زيادة المتغير my_age بمقدار 2  .


>>> my_age = my_age + 2
>>> my_age
23
>>>
 
مرة أخرى ، عند تعيين القيمة ، لا يتم عرض أي شيء ، وهو أمر طبيعي تمامًا.

لنحاول الآن إسناد قيمة لمتغير آخر بناءً على قيمة my_age .


>>> my_age_x2 = my_age * 2
>>> my_age_x2
46
>>>
 
مرة أخرى ، أدعوكم إلى اختبار هذا الاحتمال في الطول والعرض والقطر. المفهوم ليس معقدًا ولكنه قوي للغاية. علاوة على ذلك ، بالمقارنة مع بعض اللغات ، فإن تعيين قيمة لمتغير أمر بسيط للغاية. إذا لم يتم إنشاء المتغير ، فإن Python تعتني به تلقائيًا. إذا كان المتغير موجودًا بالفعل ، فسيتم حذف القيمة القديمة واستبدالها بالمتغير الجديد. ما الذي يمكن أن يكون أبسط؟

بعض كلمات Python محجوزة ، أي لا يمكنك إنشاء متغيرات بهذا الاسم.

فيما يلي قائمة بايثون 3:

and del from none true
as elif global nonlocal try
assert else if not while
break except import or with
class false in pass yield
continue finally is raise
def for lambda return
يتم استخدام هذه الكلمات الأساسية بواسطة Python ، ولا يمكنك إنشاء متغيرات بهذه الأسماء. سوف تكتشف في بقية هذه الدورة غالبية هذه الكلمات الرئيسية وكيفية استخدامها.

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



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

ماذا نعني ب "نوع البيانات"؟


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

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

أنواع البيانات المختلفة


سنرى هنا الأساسيات والأسهل في الاستخدام. سيتم تخصيص دروس كاملة لأنواع أكثر تعقيدًا.

الأعداد الكلية


نعم ، بايثون تميز الأعداد الصحيحة عن الاعداد الحقيقية ( أرقام الفاصلة العائمة)!

لماذا هذا ؟

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

يتم استدعاء النوع بالكامل  int في Python (والذي يتوافق مع "عدد صحيح") . شكل العدد الصحيح هو رقم بدون فاصلة.


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

الاعداد الحقيقية (الأرقام العائمة)


الاعداد الحقيقية هي تلك التي تحتوي على فاصلة  يتم استدعاؤها float في بايثون (والتي تعني "عائم" باللغة الإنجليزية). صيغة الاعداد الحقيقية هي تلك الخاصة بعدد بفاصلة (لا تنسَ استبدال الفاصلة بنقطة). إذا كان هذا الرقم لا يحتوي على نقطة ولكنك تريد أن يعتبره النظام كعدد حقيقي ، فيمكنك إضافة نقطة عائمة بقيمة 0 إليه (مثال 52.0  ) .


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

السلاسل


لحسن الحظ ، لا تقتصر أنواع البيانات المتوفرة في Python على الأرقام فقط - بل إنها بعيدة كل البعد عن ذلك. آخر نوع "بسيط" سنراه في هذا الفصل هو السلسلة. يستخدم هذا النوع من البيانات لتخزين سلسلة من الحروف ، فلماذا لا يتم استخدام جملة.

يمكنك كتابة سلسلة بطرق مختلفة:

  • في الاقتباسات ( "ceci est une chaîne de caractères") ؛
  • بين الفاصلات ( 'ceci est une chaîne de caractères') ؛
  • بين الاقتباسات الثلاثية ( """ceci est une chaîne de caractères""").
يمكننا ، مثل الأرقام (وجميع أنواع البيانات) تخزين سلسلة أحرف في متغير ( ma_chaine = "Bonjour, la foule !")

إذا كنت تستخدم محددات مفردة (علامة الاقتباس أو الفاصلة العليا) لإحاطة سلسلة أحرف ، فهناك مشكلة علامات الاقتباس أو الفواصل العليا التي قد تحتوي عليها السلسلة المذكورة. على سبيل المثال ، إذا قمت بالكتابة chaine = 'J'aime le Python!'، فستتلقى الرسالة التالية:


File "", line 1
chaine = 'J'aime le Python!'
^>
SyntaxError: invalid syntax
 
هذا لأن الفاصلة العليا لـ " J'aime " تعتبرها Python نهاية السلسلة ، ولا تعرف ماذا تفعل بأي شيء يتجاوزها.

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


chaine = 'J\'aime le Python!'
 
يجب أيضًا تخطي علامات الاقتباس في حالة استخدام علامات الاقتباس كمحددات.

chaine2 = "\"Le seul individu formé, c'est celui qui a appris comment apprendre (...)\" (Karl Rogers, 1976)"
 
يتم استخدام حرف الهروب "\" لإنشاء إشارات أخرى مفيدة للغاية. وبالتالي ، "\ n" يرمز إلى فاصل سطر ( "essai\nsur\nplusieurs\nlignes") . لكتابة شرطة مائلة للخلف حقيقية في سلسلة ، عليك أن تهرب منها (وبالتالي اكتب "\\").

يعرض المترجم فواصل الأسطر أثناء كتابتها ، أي "\ n" . سنرى في الجزء التالي كيفية عرض هذه السلاسل بالفعل ولماذا لا يعرضها المترجم كما ينبغي.

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


>>> chaine3 = """Ceci est un nouvel
... essai sur plusieurs
... lignes"""
>>>
 
لاحظ أنه تم استبدال الأقواس الثلاثة ذات الزوايا بثلاث نقاط: وهذا يعني أن المترجم يعتبر أنك لم تنتهِ من كتابة هذه التعليمات. في الواقع ، هذا لا ينتهي حتى يتم إغلاق السلسلة بثلاثة علامات اقتباس جديدة. سيتم استبدال فواصل الأسطر تلقائيًا في السلسلة بـ "\ n" .

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

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

مكافأة صغيرة


في الفصل السابق ، رأينا العوامل "الكلاسيكية" للتعامل مع الأرقام ولكن أيضًا ، كما سنرى لاحقًا ، أنواع أخرى من البيانات. تم إنشاء عوامل تشغيل أخرى لتبسيط معالجة المتغيرات.

ستقوم لاحقًا ، وبشكل منتظم ، بزيادة المتغيرات. الزيادة تشير إلى زيادة قيمة المتغير بعدد معين. لقد شرعت حتى الآن على النحو التالي في زيادة متغير بمقدار 1:


variable = variable + 1
 
بناء الجملة هذا واضح وبديهي ولكنه طويل بما فيه الكفاية ، والمبرمجون ، كما يعلم الجميع ، يولدون كسالى. لذلك وجدناها أقصر.

variable += 1
 
عامل التشغيل +=يكافئ إضافة القيمة التي تلي العامل إلى المتغير . العوامل - = و * = و / = موجودة أيضًا ، على الرغم من أنها أقل استخدامًا.

بعض النصائح والحيل لجعل حياتك أسهل


توفر Python طريقة بسيطة لمبادلة متغيرين (تبديل قيمتهما). في اللغات الأخرى ، من الضروري استخدام متغير ثالث يحتفظ بإحدى القيمتين ... هنا أبسط بكثير:


>>> a = 5
>>> b = 32
>>> a,b = b,a # permutation
>>> a
32
>>> b
5
>>>
 
كما ترون، بعد تنفيذ خط 3، والمتغيرات a و b لقد تبادلت قيمهم. سنجد هذا التوزيع للمهمة في وقت لاحق.

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


>>> x = y = 3
>>> x
3
>>> y
3
>>>
 
أخيرًا ، هذا ليس مناسبًا لك بعد ، لكن اعلم أنه يمكننا قص تعليمات Python ، لكتابتها على سطرين أو أكثر.

>>> 1 + 4 - 3 * 19 + 33 - 45 * 2 + (8 - 3) \
... -6 + 23.5
-86.5
>>>
 
كما ترى ، يسمح الرمز "\" ، قبل فاصل الأسطر ، بالإشارة إلى Python أن "هذه التعليمات تستمر في السطر التالي". يمكنك بالتالي تقسيم تعليماتك إلى عدة أسطر.

استخدام الوظائف لأول مرة



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

استخدم دالة


ما هي الوظائف؟

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

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

وتستخدم وظائف حسب بناء الجملة التالي:


nom_de_la_fonction(parametre_1,parametre_2,…,parametre_n)

  • تبدأ بكتابة اسم الوظيفة.
  • تقوم بإحاطة مُدخلات الوظيفة بأقواس. إذا كانت الوظيفة لا تتوقع أي مُدخلات ، فلا يزال يتعين عليك وضع الأقواس ، بدون أي شيء بينها.

الوظيفة " type"


في الجزء السابق ، عرّفتُك على أنواع البيانات البسيطة ، على الأقل جزء منها. تتمثل إحدى القوى العظمى لبايثون في أنها تفهم تلقائيًا نوع المتغير عندما يتم تعيينه. لكن من الملائم أن تكون قادرًا على معرفة نوع المتغير.

صيغة هذه الوظيفة بسيطة:


type(name_variable)
 
ترجع الدالة نوع المتغير الذي تم تمريره كمُدخل. نظرًا لأننا في الصدفة ، فسيتم عرض هذه القيمة. إذا قمت بإدخال الأسطر التالية في المترجم:

>>> a = 3
>>> type(a)
 
تحصل على:

<class 'int'>
 
لذلك تخبرك بايثون أن المتغير a ينتمي إلى فئة العدد الصحيح. لن يتم تعميق فكرة الفصل هذه في العديد من الفصول ، ولكن يجب أن تدرك أنه يمكن مقارنتها بنوع من البيانات.

يمكنك إجراء الاختبار دون المرور بالمتغيرات:


>>> type(3.4)
<class 'float'>
>>> type("un essai")
<class 'str'>
>>>
 
Str هو اختصار لكلمة "string" والتي تعني سلسلة (ضمنية ، من الأحرف) باللغة الإنجليزية.

الوظيفةprint


تُستخدم الوظيفة  printلعرض قيمة متغير واحد أو أكثر.

لكن ... نحن لا نفعل الشيء نفسه بالضبط فقط كتابة اسم المتغير في المترجم؟

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

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


>>> a = 3
>>> print(a)
>>> a = a + 3
>>> b = a - 2
>>> print("a =", a, "et b =", b)
 
أول استدعاءة ل print يعرض قيمة المتغير a، أي "3" .

الاستدعاء الثاني  print للعرض:


a = 6 et b = 4
 
ربما يكون فهم هذا الاستدعاء الثاني لـ print أصعب قليلاً. في الواقع ، نقوم بتمرير أربع مُدخلات إلى print، سلسلتان والمتغيرات a و b . عندما تفسر Python استدعاء الوظيفة هذا ، فإنها ستعرض المُدخلات بترتيب المرور ، مفصولة بمسافة.

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

جرب استخدام print أنواع البيانات الأخرى وإدخال السلاسل مع الأسطر الجديدة والأحرف التي تم تجاوزها ، لمعرفة الفرق.

قليلا "hello world! "؟


عند إجراء دورة تدريبية حول أي لغة ، من المعتاد تقديم "Hello World!" ، وهو ما يوضح بسرعة التركيب السطحي للغة.

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


>>> print("Hello World !")
 
لمزيد من المعلومات ، لا تتردد في الرجوع صفحة ويكيبيديا المخصصة لـ “Hello World! "  ؛ لديك حتى أكواد مكتوبة بلغات برمجة مختلفة ، وهذا يمكن أن يكون ممتعًا

الخلاصة


  • تتيح لك المتغيرات تخزين البيانات من برنامجك بمرور الوقت.
  • يمكنك استخدام هذه المتغيرات لأشياء مختلفة: عرضها ، وإجراء العمليات الحسابية بها ، وما إلى ذلك.
  • لتعيين قيمة لمتغير ، نستخدم الصيغة name_ variable = value .
  • هناك أنواع مختلفة من المتغيرات ، اعتمادًا على المعلومات التي تريد الاحتفاظ بها: int، float، سلسلة ، إلخ.
  • لعرض البيانات ، مثل قيمة المتغير على سبيل المثال ، نستخدم الوظيفة print .