الأسبوع الرابع: صائد الحروف
السلاسل النصية Strings: الفهرسة والقطع والدوال • ⏱ نحو 35 دقيقة
السلاسل النصية Strings
مجموعة من الأحرف والأرقام والرموز بين علامات اقتباس، تُخزَّن في متغيرات ونتعامل معها كقيمة نصية. السلاسل قابلة للتكرار Iterable، وغير قابلة للتغيير Immutable: العمليات عليها تُنتج نسخة جديدة.
علامات الاقتباس
فردية ' '
var_x = 'Free Kuwait'→ Free Kuwait
مزدوجة " "
var_x = "Free Kuwait"→ Free Kuwait
ثلاثية ''' '''
لكتابة سلاسل نصية متعددة الأسطر، مثل نص سورة الناس في مثال الكتاب.
الفهرسة والقطع في مختبر السلاسل
لكل حرف في السلسلة رقم: من البداية يبدأ العدّ من 0، ومن النهاية يبدأ من -1. والمسافة تُعدّ حرفًا أيضًا! جرّب بنفسك:
🔬 مختبر السلاسل: الفهرسة والقطع
اكتب أي نص، ثم اضغط على حرف لترى رقميه، وجرّب القطع.
✂️ القطع: str[ start : stop : step ]
جرّب: [::-1] لعكس النص، و[-4:] لآخر أربعة أحرف، و[::2] لحرف بعد حرف.
القطع Slicing: str[ start : stop : step ]
start
موقع البداية.
stop
نتوقف عند الموقع الذي **قبله** (لا يُؤخذ الحرف عند stop).
step
مقدار الخطوة واتجاهها: 1 من اليسار إلى اليمين، و-1 من اليمين إلى اليسار. إن لم تحدّدها فالاتجاه تلقائيًا من اليسار إلى اليمين بخطوة واحدة.
🧪 مثال (5) من الكتاب: تجزئة الاسم وعكس النص
شغّل الكود، ثم جرّب تغيير الأرقام داخل الأقواس المربعة.
اضغط «شغّل» لترى الناتج هنا.
🧪 مثال (6) من الكتاب: الرقم المدني
الأرقام 3 و4 هي الشهر، و5 و6 هي اليوم من تاريخ الميلاد.
اضغط «شغّل» لترى الناتج هنا.
عمليات على السلاسل
+ الجمع (الربط)
يربط سلسلتين أو أكثر في سلسلة جديدة.
'Liberation ' + 'Day: ' + '26' + ' ' + 'Feb'→ Liberation Day: 26 Feb
* التكرار
يكرّر السلسلة أي عدد من المرات.
'#' * 10→ ##########
len() الطول
يعطي عدد أحرف السلسلة، والمسافة حرف أيضًا.
len('Free Kuwait')→ 11
انتبه (مثال 8): الأعداد المُدخلة بـ input() لا تُحوَّل تلقائيًا، فتُعامَل كنصوص ويربطها + بدل جمعها. إدخال 10 ثم 12 يطبع 1012 وليس 22.
دوال السلاسل النصية
capitalize() — الحرف الأول كبير
'hello, cybersecurity!'.capitalize()→ Hello, cybersecurity!
upper() — كل الأحرف كبيرة
'Hello, Cybersecurity!'.upper()→ HELLO, CYBERSECURITY!
lower() — كل الأحرف صغيرة
'COMPUTER SCIENCE'.lower()→ computer science
find() — رقم أول ظهور (أو -1)
'Free Kuwait'.find('K')
'Free Kuwait'.find('k')→ 5 ثم -1
replace() — استبدال نص بنص
old_text.replace('device', 'computer')→ The computer is new. I like my computer.
center() — توسيط بطول محدد
'Security'.center(30, '#')→ ###########Security###########
count() — عدد مرات الظهور
في مثال الكتاب: كلمة «النَّاس» تظهر في سورة الناس 5 مرات.
f-string — متغيرات داخل النص بين { }
f'Name: {prophet_name} and Age: {prophet_age}'→ Name: Muhammed and Age: 63
تذكّر: السلاسل النصية لا تتغير؛ فالدالة capitalize() مثلًا تُنتج نسخة جديدة، ويبقى المتغير الأصلي كما هو.
أنهيت القراءة! حان وقت 🎮 اللعب