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


الدرس: إنشاء الكائن الأول الخاص بك: سلاسل


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

هل قلتَ شئ؟


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

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

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

وظائف الفئة str



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

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


>>> chaine = "NE CRIE PAS SI FORT !"
>>> mettre_en_minuscule(chaine)
'ne crie pas si fort !'
 
لاحظ أنه في الإصدارات القديمة من Python ، كانت هناك وحدة متخصصة في التعامل مع السلاسل. لقد قمنا باستيراد هذه الوحدة ويمكننا استدعاء الدالة التي تمر بسلسلة أحرف صغيرة. لا تزال هذه الوحدة موجودة ولا تزال تستخدم لبعض العلاجات المحددة. لكننا سوف نكتشف هنا طريقة أخرى لعمل الأشياء. انظر بتمعن:


>>> chaine = "NE CRIE PAS SI FORT !"
>>> chaine.lower() # ضع السلسلة بأحرف صغيرة
'ne crie pas si fort !'
 
الوظيفة lower جديدة بالنسبة لك. عليك أن تدرك النقطة ." " والتي ترمز بالفعل ، في الفصل الخاص بالوحدات النمطية ، إلى علاقة عضوية (  a.b تعني b ما ورد في a ) . هنا لها نفس المعنى: الوظيفة lower هي دالة للمتغير chaine .

الوظيفة lower خاصة بسلاسل الأحرف. يمكن لجميع السلاسل استخدامها. إذا قمت بكتابة type(chaine) في المترجم ، تحصل على  . قلنا أن المتغير يأتي من نوع البيانات. سأعيد الصياغة الآن: الكائن يأتي من فئة . و الفئة هو شكل من أشكال نوع البيانات، إلا أنه يسمح لك لتحديد المتغيرات وظائف محددة لنوع. هذا هو السبب في أنه في جميع سلاسل الأحرف ، يمكننا استدعاء الوظيفة lower . هذا ببساطة لأنه  تم تحديد الوظيفة lower في الفصل str . الوظائف المعرفة في فئة تسمى الطرق أو الوظائف .

دعونا نلخص. لقد اكتشفنا :

  • الأشياء ، التي قدمت كمتغيرات، والتي يمكن أن تحتوي على متغيرات أو وظائف أخرى (والتي نسميها الطرق أو الوظائف ) . نحن نسمي طريقة الكائن بفضل objet.methode() .
  • و الطبقات ، والتي قدمت إلى أنواع البيانات. الفئة هي نموذج يتم استخدامه لبناء كائن ؛ في الفصل سنحدد الطرق الخاصة بالكائن.
هذه هي الآلية التي تسمح لك باستدعاء طريقة السلسلة lower :
  1. أنشأ مطورو Python الفئة str التي تُستخدم لإنشاء سلاسل. في هذه الفئة ، حددوا عدة طرق ، مثل lower، والتي يمكن استخدامها من قبل أي كائن مبني على هذه الفئة.
  2. عندما تكتب chaine = "NE CRIE PAS SI FORT !"، تدرك Python أنها بحاجة إلى إنشاء سلسلة. وبالتالي ، فإنها ستنشئ كائنًا وفقًا للفئة (النموذج) التي تم تحديدها في الخطوة السابقة.
  3. يمكنك بعد ذلك استدعاء جميع طرق الفئة str من الكائن chaine الذي أنشأته للتو.
اه هذا !  يجعل الكثير من الأشياء والمفردات والمفاهيم الجديدة مميزة بعض الشيء.

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

حسنًا ، نتحدث ونتحدث ، لكننا لا نبرمج كثيرًا!

تنسيق سلسلة


لا ، لن تتعلم كيفية جعل سلسلة غامقة ، وتسطيرها ، بخط Verdana 15 بكسل ... نحن فقط في وحدة التحكم حتى الآن. لقد قدمنا ​​للتو lower، هناك طرق أخرى. بادئ ذي بدء ، دعنا نرى سياق الاستخدام.

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


chaine = str() # أنشئ سلسلة فارغة
# كنا سنحصل على نفس النتيجة عن طريق الكتابة chaine = ""

while chaine.lower() != "q":
    print("اكتب "Q" للخروج...")
    chaine = input()

print("شكرا لك !")
 
تحتاج إلى فهم هذا البرنامج بسرعة. في الحلقة ، يُطلب من المستخدم كتابة الحرف "q" للخروج. ما دام المستخدم يدخل حرفًا آخر ، تستمر الحلقة في العمل. بمجرد أن يضغط المستخدم على المفتاح Qفي لوحة المفاتيح ، تتوقف الحلقة ويعرض البرنامج عبارة "شكرًا لك! " . يجب أن يذكرك هذا بشيء ... دعنا نذهب إلى المختبر في الجزء الأول لمن لديهم ذكريات قصيرة.

هنالك شيئ جديد يكمن في اختبار للحلقة:  chaine.lower() != "q" . نأخذ السلسلة التي أدخلها المستخدم ، ونمررها بأحرف صغيرة ونرى ما إذا كانت مختلفة عن "q" . هذا يعني أنه يمكن للمستخدم كتابة "q" بأحرف كبيرة أو صغيرة ، وفي كلتا الحالتين ستتوقف الحلقة.

لاحظ أن تقوم chaine.lower() بإرجاع السلسلة بأحرف صغيرة ولكنها لا تقوم بتعديل السلسلة. هذا مهم للغاية ، سنرى السبب في الفصل التالي.

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

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


>>> minuscules = "une chaine en minuscules"
>>> minuscules.upper() # تكبير احرف السلسلة
'UNE CHAINE EN MINUSCULES'
>>> minuscules.capitalize() # الحرف الأول كبير
'Une chaine en minuscules'
>>> espaces = "   une  chaine avec  des espaces   "
>>> espaces.strip() # نزيل المسافات في بداية السلسلة ونهايتها
'une  chaine avec  des espaces'
>>> titre = "introduction"
>>> titre.upper().center(20)
'    INTRODUCTION    '
>>>
 
التعليمات الأخيرة تستحق بعض الشرح.

نسمي أولاً طريقة upper للكائن titre . هذه الطريقة ، كما رأيت أعلاه ، ترجع سلسلة الأحرف الموجودة في الكائن بأحرف كبيرة.

ثم نسمي الطريقة center، وهي طريقة لم نرَها بعد وتسمح للسلسلة بأن تكون في الوسط. نقوم بتمريرها كمعامل بحجم السلسلة التي نريد الحصول عليها. ستضيف الطريقة بالتناوب مسافة في بداية ونهاية السلسلة ، حتى يتم الحصول على الطول المطلوب. في هذا المثال ، titre يحتوي على سلسلة 'introduction' أي سلسلة (أحرف صغيرة أو كبيرة) يبلغ طولها 12 حرفًا. نطلب center توسيط هذه السلسلة في مسافة 20 حرفًا.  Center لذلك ستضع الطريقة 4 مسافات قبل العنوان و 4 مسافات بعده ، لتكوين 20 حرفًا في المجموع.

حسنًا ، ولكن الآن ، ما الشيء الذي يعمل عليه center ؟ على titre ؟ لا. على السلسلة التي تم إرجاعها titre.upper() ، أي العنوان بأحرف كبيرة. هذا هو السبب في أننا يمكن أن "سلسلة" هاتين الطريقتين: ، upper مثل معظم طرق السلسلة ، تعمل على سلسلة وتعيد سلسلة ... والتي سيكون لها أيضًا الطرق الخاصة بسلسلة الأحرف. إذا كان ليس من الواضح جدا، والقيام ببعض الاختبارات، مع titre.upper() و titre.center(20)، ويمر من خلال المتغير الثاني إذا لزم الأمر، لمعرفة الآلية؛ انها ليست معقدة للغاية.

لقد وضعت هنا طرقًا قليلة فقط ، وهناك طرق أخرى كثيرة. يمكنك ان ترى القائمة في مساعدة، من خلال الكتابة في مترجم: help(str) .

تنسيق وعرض سلسلة


انتظر ، لقد تعلمنا كيفية القيام بذلك لمدة خمسة فصول جيدة! ألن نعيد تعلم كل شيء على أي حال؟

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

لن أعود إلى ما قلته ، لعرض سلسلة ، نذهب من خلال الوظيفة print .


chaine = "Bonjour tout le monde !"
print(chaine)
 
لا جديد هنا. من ناحية أخرى ، سنقوم بتغيير عاداتنا قليلاً فيما يتعلق بعرض العديد من المتغيرات.

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


>>> prenom = "Paul"
>>> nom = "Dupont"
>>> age = 21
>>> print("Je m'appelle {0} {1} et j'ai {2} ans.".format(prenom, nom, age))
Je m'appelle Paul Dupont et j'ai 21 ans.
 
لكن ! ما هذا ؟

سؤال مشروع. دعونا نرى.

الصيغة الأولى للطريقة format


استخدمنا طريقة الفصل str لتنسيق السلسلة الخاصة بنا. من اليسار إلى اليمين لدينا:

  • سلسلة أحرف لا تحتوي على شيء محدد ، باستثناء الأقواس التي تحيط بالأرقام ، أولاً 0، ثم 1، ثم 2؛
  • نسمي طريقة format هذه السلسلة ، ونمررها كمعلمات المتغيرات المراد عرضها بترتيب دقيق للغاية ؛
  • عندما تنفذ Python هذه الطريقة ، فإنها تستبدل في السلسلة {0}بالمتغير الأول الذي يتم تمريره إلى الطريقة format (أي الاسم الأول) ، {1}والمتغير الثاني ... وهكذا.
تذكر أنه في البرمجة ، نبدأ العد من 0.

جيد ، لكن كان بإمكاننا فعل الشيء نفسه بالضبط بتمرير عدة قيم إلى print، أليس كذلك؟

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


>>> nouvelle_chaine = "Je m'appelle {0} {1} et j'ai {2} ans.".format(prenom, nom, age)
>>>
 
للقيام بالشيء نفسه دون استخدام format، يجب أن يكون لدينا سلاسل متسلسلة ، أي ضعها حداً واحترام صيغة معينة. سنرى هذا بعد قليل ولكن هذا الحل يبقى أكثر أناقة.

في هذا المثال ، قمنا باستدعاء المتغيرات بالترتيب الذي وضعناها فيه format، لكن لا يتعين علينا ذلك. ضع في اعتبارك هذا المثال:


>>> prenom = "Paul"
>>> nom = "Dupont"
>>> age = 21
>>> print( \
...   "Je m'appelle {0} {1} ({3} {0} pour l'administration) et j'ai {2} " \
...   "ans.".format(prenom, nom, age, nom.upper()))
Je m'appelle Paul Dupont (DUPONT Paul pour l'administration) et j'ai 21 ans.
 
لقد قطعت تعليماتنا الطويلة إلى حد ما باستخدام علامة "\" قبل فاصل الأسطر ، للإشارة إلى بايثون أن التعليمات ممتدة أدناه.

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

في معظم الحالات ، لا نحدد رقم المتغير بين الأقواس.


>>> date = "Dimanche 24 juillet 2011"
>>> heure = "17:00"
>>> print("Cela s'est produit le {}, à {}.".format(date, heure))
Cela s'est produit le Dimanche 24 juillet 2011, à 17:00.
>>>
 
بالطبع ، هذا لا يعمل إلا إذا أعطيت المتغيرات بالترتيب الصحيح format .

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

الصيغة الثانية للطريقة format


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


# تنسيق العنوان
adresse = """
{no_rue}, {nom_rue}
 {code_postal} {nom_ville} ({pays})
""".format(no_rue=5, nom_rue="rue des Postes", code_postal=75003, nom_ville="Paris", pays="France")
print(adresse)
 
... سوف يعرض:

5, rue des Postes
  75003 Paris (France)
 
أعتقد أنه يمكنك أن ترى بالضبط ما هذه الصيغة الثانية من بناء الجملة format . بدلاً من كتابة الأرقام بأقواس معقوفة ، يمكنك تحديد أسماء متغيرة يجب أن تتطابق مع تلك المقدمة ككلمات رئيسية في الطريقة format . لن أتعمق أكثر في هذه النقطة ، أعتقد أنها واضحة تمامًا كما هي.

تسلسل الأوتار


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


>>> prenom = "Paul"
>>> message = "Bonjour"
>>> chaine_complete = message + prenom # نستخدم رمز "+" لسَلسَلة سلسلتين
... print(chaine_complete) # النتيجة :
BonjourPaul
>>> # ليست مثالية بعد ، ينفص فراغ  
... # لا بأس !
... chaine_complete = message + " " + prenom
>>> print(chaine_complete) # النتيجة:
Bonjour Paul
>>>
 
أعتقد أنه من الواضح جدًا. تُستخدم هنا علامة "+" المستخدمة لإضافة أرقام لسلسلة سلسلتين. الآن دعنا نحاول ربط السلاسل والأرقام:

>>> age = 21
>>> message = "J'ai " + age + " ans."
Traceback (most recent call last):
  File "", line 1, in 
TypeError: Can't convert 'int' object to str implicitly
>>>
 
بايثون قد غضب كلها حمراء! كانت بعض اللغات ستقبل هذا النحو دون أن تضغط على الجفن لكن بايثون لا تحبها على الإطلاق.

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


>>> age = 21
>>> message = "J'ai " + str(age) + " ans."
>>> print(message)
J'ai 21 ans.
>>>
 
ندعو str لتحويل كائن إلى سلسلة ، كما دعينا int لتحويل كائن إلى عدد صحيح. إنها نفس الآلية ، باستثناء أن تحويل عدد صحيح إلى سلسلة من غير المحتمل أن يؤدي إلى أي استثناءات.

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

تصفح وحدد القنوات



رأينا سريعًا في الجزء الأول طريقة لتصفح السلاسل. سنرى هنا ثانيًا يعمل بالفهرس.

تصفح حسب الفهرس


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

الوصول إلى الأحرف في سلسلة


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


>>> chaine = "Salut les ZER0S !"
>>> chaine[0] # الحرف الأول من السلسلة
'S'
>>> chaine[2] # الحرف الثالث من السلسلة
'l'
>>> chaine[-1] # آخر حرف من السلسلة
'!'
>>>
 
نحدد [] الفهرس بين قوسين مربعين  (موضع الحرف الذي نريد الوصول إليه) .

تذكر أننا نبدأ العد من 0. وبالتالي فإن الحرف الأول موجود في الفهرس 0 ، والحرف الثاني في الفهرس 1 ، والثالث في الفهرس 2 ... يمكننا الوصول إلى الأحرف بدءًا من النهاية باستخدام مؤشر سلبي. عند الكتابة chaine[-1]، يأخذك هذا إلى الحرف الأخير من السلسلة (حسنًا ، الحرف الأخير ، وهو ليس حرفًا هنا).

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


>>> chaine = "Salut"
>>> len(chaine)
5
>>>
 
لماذا لم يتم تعريف هذه الوظيفة كطريقة للفئة str ؟ لماذا لا نستطيع أن نفعل chaine.len()؟

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

طريقة المرور على السلسلة باستعمال while


أنت تعرف ما يكفي للمرور عبر سلسلة بفضل الحلقة while . لاحظ أنه في معظم الحالات ، تفضل تصفح التسلسل باستخدام for . ومع ذلك ، من الجيد معرفة كيفية القيام بذلك بطرق مختلفة ، وسوف يساعدك ذلك في بعض الأحيان.

هذا هو الكود الذي قد تصنعه:


chaine = "Salut"
i = 0 
while i < len(chaine):
    print(chaine[i]) # نطبع الحرف مع كل مرور بالحلقة
    i += 1
 
لا تنسى الزيادة i، وإلا سيكون لديك بعض المفاجآت.

إذا حاولت الوصول إلى فهرس غير موجود (على سبيل المثال 25 عندما يكون طول سلسلتك 20 حرفًا فقط) ، فإن Python ستطرح استثناءً للنوع IndexError .

أخيرًا ، شيء صغير أخير: لا يمكنك تغيير أحرف السلسلة باستخدام الفهرس.


>>> mot = "lac"
>>> mot[0] = "b" # 'b' بـ 'l' نريد تغيير الحرف  
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'str' object does not support item assignment
>>>
 
بايثون ليست سعيدة. لا يريدك استخدام المؤشرات لتغيير الأحرف في السلسلة. للقيام بذلك ، سيكون عليك استخدام التحديد.

اختيار جزء من السلسلة


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


>>> presentation = "salut"
>>> presentation[0:2] # نختار أول حرفين
'sa'
>>> presentation[2:len(presentation)] # نختار السلسلة باستثناء أول حرفين
'lut'
>>>
 
وبالتالي فإن الاختيار يتكون من استخراج جزء من السلسلة. تقوم هذه العملية بإرجاع الجزء المحدد من السلسلة ، بدون تعديل السلسلة الأصلية.

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


>>> presentation[:2] # من البداية إلى الحرف الثالث غير المدرج
'sa'
>>> presentation[2:] # من الحرف الثالث (مشمول) حتى النهاية
'lut'
>>>
 
الآن ، يمكننا أن نأخذ مثالنا السابق لبناء سلسلة جديدة ، مع استبدال حرف بآخر:

>>> mot = "lac"
>>> mot = "b" + mot[1:]
>>> print(mot)
bac
>>>
 
هنا !

لا يزال الأمر غير بديهي ، أليس كذلك؟

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

باختصار



  • المتغيرات المستخدمة حتى الآن هي في الواقع كائنات.
  • أنواع البيانات المستخدمة حتى الآن هي في الواقع فئات. تم تصميم كل كائن على غرار فئة.
  • تحدد كل فئة وظائف معينة ، تسمى الطرق ، والتي يمكن الوصول إليها من الكائن باستخدام objet.methode(arguments) .
  • ويمكن الوصول مباشرة الى حرف في سلسلة مع التعليمات البرمجية التالية:  chaine[position] .
  • من الممكن تماما لتحديد جزء من سلسلة مع التعليمات البرمجية التالية: chaine[index_strat:index_end] .