أهلاً
لمحة سريعة:
تدوينة اليوم سوف تتناول كيفية التعامل مع النصوص (Strings) و كيفية تعريف الوظائف (Functions) و أحد أساليب الاختبار (If / else ).
١. النصوص (Strings)
لدي عقدة برمجية تجاه النصوص، كنت أعاني – ومازلت- من برمجتها وقت استخدامي للجافا، كان الوضع يستغرق مني جهد عقلي عظيم لو وجهته تجاه أي جهاز الكتروني لتم شحنه في ٣ ثواني ( أليست الفكرة لطيفة؟ أن نشحن الأجهزة عبر تفكيرنا؟ ).
لكني انصدمت حقيقة في يسر و سهولة و”رقي” تعامل بايثون مع النصوص، بدءاً من عملية التعريف و انتهاءاً بالوظائف المدمجة والتي تسهل فعلياً معالجة النصوص.
١.١ تعريف النص
العملية لطيفة، أي شيء يقع بين علامتي التنصيص ” ” سيعتبر نصاً، بدون الحاجة الى تحديد نوعه كما أستطيع تغيير نوعه بتغيير قيمته – مثلما يتم في PHP-.
١.٢ معالجة النص
١.٢.١ طول النص
١.٢.٢ تكبير و تصغير الأحرف
عبر مناداة وظائف مضمنة (Built-in functions)
من أهم الخصائص للنصوص في بايثون أنها لا تتأثر -فعلياً- من مناداة الوظائف، أي أن قيمتها لا تتغير أبداً ، تظل ثابتة كما أنشأتها أول مرة.
١.٢.٣ تقسيم النص
بايثون لديه طريقتان في “فهرسة” الحروف داخل النص ، من الأمام و من الخلف ، من الأمام و هي الطريقة المتعارف عليها حيث يبدأ من ٠ تصاعدياً ، من الخلف يتم بإستخدام الأرقام السالبة و يبدأ من -١ ( لأنه لا يوجد سالب صفر ، تبدو المعلومة مهمة هذه في هذا السياق و هذا السياق فقط..)
في الصورة في الأسفل ٣ أمثلة للتقسيم ، الأول أردت فيه طباعة الحرف الاول ، و الثاني طبعت فيه الأخير بالعد من الأمام بينما المثال الثالث طبعت أيضا الحرف الأخير لكن من العد الخلفي.
كما أيضاً يمكن تحديد المجال ، ستتم الطباعة من الحد الأول حتى قبل الحد الأخير ، مثلا اذا كان المجال [x,y] ستبدأ الطباعة من الحرف الواقع في موقع x و حتى موقع y-1 .
١.٢.٤ جمع النصوص
عبر استخدام علامة الـ “+” يمكنك الصاق أي نصين ببعضها البعض.
١.٢.٥ البحث داخل النص
باستخدام مباشر لوظيفة find ، ستُرجع الوظيفة مكان أول ظهور للنص المراد البحث عنه، اذا كان النص غير متوفر داخل نصك فإنه سيرجع -١.
١.٢.٦ إستبدال النصوص
أيضاً باستخدم مباشر لوظيفة replace يمكن البحث و الاستبدال.
٢. الوظائف (Functions)
٢.١ تعريف الوظائف
تعريف الوظائف في بايثون سهل جداً ، و هو جزئي المفضل في بايثون لأن الوظيفة لا تحتاج إلى { .} لتحديدها ، و هو أحد أسباب غبائي الجافيّ لأني لا أمتلك اللياقة الكافية حتى ألاحق الأقواس } ، { في أرجاء النص البرمجي ، فكيف بايثون تعرف متى تبدأ هذه الوظيفة و متى تنتهي؟ عبر استخدام المحاذاة !
شكل تعريف الوظيفة يكون كالتالي
المحاذاة موضحة بالمربع البنفسجي في الصورة، بمجرد وضعك لهذا الفراغ (عبر الضغط المتكرر على زر المسافة أو استخدام tab ) و جعل كل الجمل الخاصة بهذه الوظيفة على نفس نمط المحاذاة يستطيع وقتها بايثون أن يفهم أن هذه الجمل تنتمي لهذه الوظيفة.
ملاحظة مهمة: وظيفة main هي المدخل الرئيسي لأي ملف برمجي ، و هي الوظيفة الوحيدة التي تحتاج الى سطور اضافية ليتم تنفيذها بشكل صحيح، فلن يتم تنفيذ النص ما لم تذكر ما يوجد في الصورة القادمة، فقط انسخها في آخر الملف و انسى أمرها.
٢.٢ استقبال مدخلات من المستخدم
عبر استخدام وظيفة input() ، لا نحتاج الى القصيدة التي نذكرها في الجافا ولا نحتاج الى استيراد أي حزمات (packages) ، الموضوع أبسط بكثير.
٣. الاختبار (If/ else )
لا أحتاج إلى ذكر أهمية عبارة if في البرمجة، لذا سأقفز مباشرة الى نصها:
ما نلاحظه أنه لا حاجة الى استخدام الأقواس عند ذكر الحالة و أيضا نستخدم المحاذاة هنا عوضاً عن الأقواس {، } .
المرفقات
هنا يوجد ملف برمجي يحتوي على الأوامر و التعريفات التي ذكرتها في هذه المدونة لكن بطريقة تفاعلية أكثر ، تستطيع تحميله عبر الضغط على الأيقونة في الأسفل.