print(5 + 3)8
يتألف النص البرمجي من قِطَع هي عبارة عن جُمَل متتابعة تعبِّر عن أوامِر يفسرها الحاسب وينفذها.
فمثلاً هذا الأمر، يحسب ناتج جمع العددين ويطبعه على الشاشة:
وتتتابع الأوامر سطرًا بعد سطر:
وتَتَّبِعُ لغات البرمجة بما فيها لغة بايثون قَواعِدَ نَحْوِيَّة صارمة حتى لا يشتبه عليه تفسيرها عند تحويلها لتعليمات مفصَّلة على لغة المنطق الرقمي للآلات المكون منها الحاسب لتنفذها.
فلا يجوز أن تقول مثلاً:
لأن هذا ليس من لغة بايثون. والغرض من تحديد اللغة تقليل الاحتمال، مما يجعل التفسير أسرع، ويجعل التعبير أدقَّ في إصابة المقصود؛ وهذا دأب الرياضيين.
يحتاج المبرمج للإشارة لبعض القيَم بأسماء تدل على معناها، وهذا مثال على أربعة أوامر نشرحها بمحاذاة النص بعد علامة (#) التي تجعل ما بعدها تعليقًا لا تضر قراءته إذْ لا يتم تفسيره:
فالمُتَغَيِّر (Variable) هو ما أُسنِدَ إليه قيمة (Value)، أو تعبير (Expression) يؤول إلى قيمة.
ولدينا في المثال السابق:
money وقد أسندنا إليه قيمة: 10000zakat وقد أسندنا إليه التعبير: money / 40 الذي يؤول إلى القيمة؛ وهي: 250ويجوز أن يكون المتغير من حرفٍ واحد، ووجب التنبيه إلى أن علامة = تسمى عامل التعيين (Assignment Operator)، وليست علامة المساواة كما نستعملها في الرياضيات. فمعنى ذلك أن التعيين اللاحق ناسخٌ لما قبله:
لاحظ أن القيمة الظاهر في الطباعة هي للتعيين التالي وليس الأول.
بينما يمتنع هذا في الرياضيات أصلاً.
وقد تستعمل الجُمَل لاسم المتغيِّر، لكن يجب فصلها بالشرطة السفلية (_) حتى لا يشتبه على المفسر أنها شيء منفصل:
604800
ويجوز أن يتعدد طرفا التعيين
ويجوز أن يتكرر عامل التعيين اختصارًا:
ومن العوامل (Operators):
+ (Addition)- (Subtraction)* (Multiplication)/ (Division)% (Modulus)** (Exponentiation)فتجري على الأعداد على النحو التالي:
وتكون عملية المساواة بعامله ==، بخلاف التعيين = وناتجها يكون إما نعم (True) أو لا (False). على النحو التالي:
وتستعمل في الجُمَل الشرطية، وسيأتي الحديث عنها إن شاء الله.
ولكل قيمة نوع (Type) يحدد ما يجري عليه من العوامل وما يمتنع.
من أهم المهارات التي تجب على المبرمج: معرفة نوع كل قيمة يتعامل معها.
وإذا قُلنا إن نوعَ المتغير الفلاني كذا فإن ذلك تجوُّز، لأننا في الواقع نقصد نوع قيمة المتغير.
ومن الأنواع في لغة بايثون التي من صنف العدد (Number):
int (تعني: Integer). ويستعمل في الفهرسة والعد والترتيب والزيادة والنقصان والفرق ونحو ذلك.float (تعني: Floating Point). ويستعمل في تمثيل الكميات كالمال، والمسافة، والوقت، ونحو ذلك.فإذا تأمَّلت النص التالي وجدت جميع هذه القيَم من نوع العدد الصحيح (int):
أما التالي فهو من نوع العدد ذي الفاصلة العائمة (float) إذ يوجد فيه الفاصلة العشرية:
ومن أكثر الأنواع استعمالاً في بايثون؛ النص (str)؛ وهو سلسلة من الأحرف . ويُعرَفُ بعلامتي التنصيص سواء المفردة (') أو المزدوجة (") على النحو التالي:
فيجوز دمج النصوص بعلامة الجمع كالتالي:
لاحظ أن كلمة name وكلمة city كلاهم خارج التنصيص؛ لذا فهما يشيران إلى المتغيرين الذين تم تعريفها سابقًا.
لكن يمتنع الجمع بين النص والعدد. فلو حاولت تشغيل التالي فستظهر لك رسالة خطأ:
ولحل المشكلة السابقة، يجب أولاً تحويل نوع العدد إلى نوع النص باستعمال الدالة str(x) على النحو التالي:
ولمعرفة نوع المتغير، نستعمل الدالة type(x) بتمرير القيمة أو المتغير عوضًا عنها.
تأمل ناتج عمليات طباعة النوع لكل من المتغيرات السابقة:
وكثيرًا ستضطر إلى معرفة نوع المتغير الذي تتعامل معه. وبعض محررات النص البرمجي تُظهر لك النوع بمجرد تحليق المؤشر على اسم المتغير.
وهذه الأنواع الأساسية في بايثون وهي ما سندرسه إن شاء الله:
يستمعل أمر الإدخال (input(message)) للحصول على قيمة من المستخدم. وتفسر هذه القيمة على أنها سلسلة من الأحرف؛ أي: أنها من نوع النص (str)، ولو كان المستخدم أدخل عددًا، فإنه سيفسر على أنه حروف العدد وليس قيمةً من نوع العدد.
تأمل المثال التالي:
يتم تنفيذ هذه التعليمات على النحو التالي:
msgage
Enter your age: (إذا كنت في محرر VS Code فسيظهر في الأعلى)Enter فسيتم تخزين القيمة المدخلة في المتغير age لكن كقيمة نصيةوالآن لدينا خياران في تحويل قيمة المتغير النصيَّة إلى قيمة عددية، وذلك أننا عرفنا نوعين من الأعداد: الصحيح (int) والعشري (float). وكلاهما يتم تحويلهما باستعمال الدالة int(x) أو float(x) على النحو التالي:
وعادةً ما نحتاج لمثل هذا التحويل عند قراءة بيانات من الخارج، فتنبه!
ولتثبيت الفكرة، نضرب مثالاً واضحًا بمتغيرين أحدهما عددي والآخر نصي:
فلو حاولت خطأً (وهذا يقع كثيرًا) الجمع بينهما فستظهر لك رسالة خطأ:
ولو كانا كلاهما من النوع النصي، فإن نتيجة الجمع ستكون بدمج النصين لا بجمع العددين. تأمل المثال التالي:
وهذا وإن لم يظهر برسالة خطأ فإنه ليس مقصودنا؛ لذلك فهو خطأ منطقي وإن كان من حيث البنية اللغوية صحيحًا.
فيجب استعمال التحويل اللازم في مثل هذه الحالات إن كان القصد أن يكون المتغير من النوع العددي.
تنتهي الجملة في بايثون عادة بنهاية السطر، إلا:
إن تم وضع علامة الشخطة المائلة للخلف \:
أو تم فتح قوس، فلا تنتهي إلا عند إغلاقه: