بيانات التسلسل النصوص string

بيانات التسلسل النصوص string

بيانات التسلسل النصوص string

تستخدم انواع بيانات التسلسل لتخزين البيانات في حاويات لكل حاوية رقم فهرس يبدا من 0 وينتهي بعدد الحاويات.

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

  • النصوص str
  • القوائم list
  • المجموعة tuple
  • النطاق range

نوع بيانات التسلسل string

مصطلح string هو في الاساس يعني تسلسل اي ان النصوص بطبيعة الحال هي تسلسل وتخضع لكل عمليات التسلسل الخاصة بانواع التسلسل الاخري.

اذا كان النص تسلسل اذن لكل حرف رقم فهرس "ABC" في النص السابق فهرس 0 يساوي حرف A و فهرس 1 يساوي حرف B وفهرس 2 يساوي حرف C.

مثال علي تسلسل نصوص

name = "BRMGHA"
print( len( name ) )

علي السطر الاول صرحنا عن متغير name نصي بقيمة نصية كما فعلنا في قسم المتغيرات.

وعلي السطر الثاني قمنا بطباعة طول قيمة المتغير name من خلال دالة len والنتيجة 6 عناصر في التسلسل.

الطول هو مصطلح يعرف ب length في معظم لغات البرمجة او count ويستخدم لمعرفة طول التسلسل من خلال معرفة طول التسلسل يمكن اجراء عمليات محددة او تفادي الاخطاء.

مثال علي الطول len

print(len("abc"))
print(len("abcd"))
print(len("abcde"))
print(len("abcdef"))

مثال علي طباعة عنصر واحد من التسلسل

name = "BRMGHA"
print( name[0] )

عند التشغيل تحصل علي حرف B وهذا لاننا اخترنا من التسلسل العنصر الاول فقط [0] يمكن اختيار اي عنصر اخر من خلال تغير الـ 0 الي اي رقم اخر ولكن في مدي الفهرس.

لاحظ ان ناتج دالة len اكبر من اكبر رقم في فهرس التسلسل بـ 1 فاذا كان طول التسلسل 6 فهذا يعني ان اكبر رقم في الفهرس هو 5.

مثال علي خطا الخروج عن النطاق

name = "BRMGHA"
print( name[ len( name ) ] )

يمكن حل تلك المشكلة من خلال طرح رقم 1 من قيمة ناتج دالة len كالتالي

name = "BRMGHA"
print( name[ len(name) - 1 ] )

والناتج هو اخر عنصر في التسلسل وهو حرف A ويمكن الطرح او الجمع من الطول طالما لم تتجاوز النطاق ( Range ).

قص جزء من التسلسل

اقواس الفهرسة تاخذ ثلاث قيم وهما البداية والنهاية والخطوة [ start : stop : step ]

افتراضيا الخطوة 1 والنهاية اكبر من البداية بـ 1 كما بالامثلة السابقة لم نكتب سوي البداية فقط.

name = "BRMGHA"
start = 2
stop = 5
print( name[ start : stop ] )

في المثال السابق صرحنا عن متغيرين من النوع الرقمي int كبداية ونهاية وادخلناهم قيم للفهرسه والناتج هو MGH وهما العنصر الثالث والرابع والخامس.

ان كنت شديد الملاحظة فسوف تلاحظ انه لم يطبع الفهرس 5 رغم اننا حددنا النهاية فهرس 5 وهذا طبيعي لان الفهرس يطبع 2 و 3 و 4 ويتوقف.

اما اذا سالتني لماذا لم يطبع R في البدايه فسوف اقول لك قم باعادة القراءة من البداية.

name = "BRMGHA"
print( name[0 : ] )

 لاحظ في المثال السابق ادخلنا قيمة البداية وفتحنا قيمة فارغة للنهاية وهذا يعني حتي نهاية التسلسل.

ويمكن ايضا الوصول لنهاية التسلسل بواسطة دالة len كالتالي

name = "BRMGHA"
print( name[ 0 : len( name ) ] )

تحديد الخطوة

تستخدم الخطوة لتخطي عدد من العناصر في كل مرة مثال

AZ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
step = 2
print( AZ[0 : : step] )

قمنا بادخال قيمة البداية 0 والنهاية فارغة بمعني حتي نهاية التسلسل وحددنا قيمة الخطوة 2 والنتيجة تخطي حرف في كل مره.

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

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

AZ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
step = -1
print( AZ[ : : step] )

في الحالة السابقة البداية هي النهاية والعكس صحيح فلا يجوز كتابة البداية 0 عند عكس الترتيب.

AZ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
start = 0
stop = len(AZ)
step = -1

print( AZ[ start : stop : step ] )

هنا تحدث المشكلة ولا يتم طباعة شىء قم بتبديل قيمة متغير النهاية مع قيمة متغير البداية وشاهد النتيجة.

كيفية الحصول علي رقم الفهرس

يعرف الفهرس في البرمجة بـ index وهي صفة اخري للتسلسل ودالة في بايثون يمكن من خلالها الحصول علي رقم الفهرس لاي عنصر في التسلسل.

AZ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
print( AZ.index('G') )

في المثال السابق قمنا بطباعة رقم الفهرس للحرف G من خلال دالة index وهو 6.

يمكن استخدام دالة index للبحث عن كلمة ومعرفة بداية فهرسها في النص كالتالي

words = "<div>welcome in <span>brmgha</span></div>"
print( words.index( "<span>" ) )

يمكن بهذة الطريقة استخراج كلمات محددة من النص او التسلسل كالتالي

words = "<div>welcome in <span>brmgha</span></div>"
startWord = '<span>'
endWord = '</span>'
start = words.index( startWord ) + len( startWord )
stop = words.index( endWord )
print( words[ start : stop ] )

في المثال السابق صرحنا عن متغيرين كلمة البداية وكلمة النهاية.

ثم صرحنا عن متغير البداية وقمنا بالحصول علي رقم فهرس البداية لكلمة البداية <span> وجمعنا الرقم مع طول الكلمة من خلال دالة len ليبدا الفهرس من اخر الكلمة.

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

ثم استخدمنا متغير البداية والنهاية لطباعة الكلمة المراد استخراجها والنتيجة هي brmgha.

ارجع الي المحرر السابق وقم بتعديل كلمة البداية والنهاية span الي div وشاهد النتيجة.

والي هنا تكون قد تعرفت علي نوع بيانات تسلسل النصوص str و صفاته وطرق فهرسته وكما تعودنا لتثبيت المعلومات والحصول علي النقاط والمكافئات قم باتمام الاختبار التالي.

الاختبار

في اخر مثال بالاعلي قمنا باستخراج ما بين كلمتين بداية ونهاية وتعرفنا علي len, index.

داخل المحرر التالي تجد 6 متغيرات عالمية كالتالي:

متغيرات البيانات

  • words
  • startWord
  • endWord

متغيرات مطلوب تعبئتها

  • word
  • lenword
  • indexword

من داخل دالة main استخدم القيم المتاحة في متغيرات البيانات لاستخراج ما بين كلمة البداية وكلمة النهاية.

اجعل متغير word = قيمة ما بين كلمة البداية والنهاية.

ثم اجعل lenword = طول قيمة متغير word.

ثم اجعل indexword = فهرس قيمة متغير word داخل السلسلة النصية words.

مثال اذا كانت المدخلات كالتالي:

words = "sssxxooooxxx"
startWord = "xx"
endWord = "xxx"

word = "xx"
lenword = 0
indexword = 0

def main():
#Extract word from words
word = "oooo"
lenword = 4
indexword = 5

لاحظ ان المتغيرات المطلوب تعديلها هي متغيرات عالمية راجع درس متغيرات عالمية لمعرفة كيفية تعديلها من داخل الدوال.

لاحظ ايضا ان قيم متغيرات البيانات تتغير وغير ثابته لذلك عليك استخدام المتغيرات وليس قيمتها.

اذا واجهتك اي مشاكل راجع اخر مثال في الدرس.

حلول الاعضاء
فتح الحلول مقابل 5
مقفل
output
terminal

Next

التعليقات

no comments found.
  • من خلال الضغط علي زر {;} في شريط الادوات يمكنك اضافة اكواد بايثون الي التعليق للتجربة اون لاين.
  • برجاء مراعاة قواعد الكتابة، والادب.