الحاسب الآلي · الصف الثالث الإعدادي · الترم الأول
السلاسل النصية (Strings) والقوائم (Lists) في لغة Python
التعامل مع السلاسل النصية في Python: الفهرسة والتقطيع والدمج والدوال النصية، والقوائم: إنشاؤها والوصول لعناصرها وتعديلها وإضافة العناصر وحذفها والمرور عليها بحلقة for.
آخر تحديث: · كيف نراجع المحتوى
مقدمة
- الوحدة: الوحدة الأولى: الذكاء الاصطناعي ولغات البرمجة
- الدرس: الثالث
الاسم ورسالة المحادثة وعنوان البريد الإلكتروني كلها نصوص، وقائمة المشتريات ودرجات الفصل كلها مجموعات من البيانات. في Python نتعامل مع الأولى بالسلاسل النصية ومع الثانية بالقوائم، وهما من أكثر أنواع البيانات استخدامًا.
أهداف التعلم
- أن تنشئ سلسلة نصية وتصل إلى حروفها بالفهرس.
- أن تقطع جزءًا من سلسلة وتدمج السلاسل وتستخدم دوالًا نصية شائعة.
- أن تنشئ قائمة وتصل إلى عناصرها وتعدلها.
- أن تضيف عناصر إلى القائمة وتحذفها وتمر عليها بحلقة
for.
شرح الدرس
السلاسل النصية
السلسلة النصية (String) تتابع من الحروف والرموز يُكتب بين علامتي تنصيص مفردتين أو مزدوجتين:
name = "Mariam"
city = 'Cairo'
الفهرسة: لكل حرف رقم (فهرس) يبدأ من 0، ويمكن العد من النهاية بالفهارس السالبة:
word = "Python"
print(word[0]) # P
print(word[3]) # h
print(word[-1]) # n
print(len(word)) # 6
التقطيع (Slicing): word[start:end] يعيد الحروف من start حتى ما قبل end:
print(word[0:3]) # Pyt
print(word[2:]) # thon
الدمج والتكرار:
first = "Zaker"
last = "Masr"
print(first + " " + last) # Zaker Masr
print("Ha" * 3) # HaHaHa
دوال نصية شائعة:
| الدالة | وظيفتها | مثال | الناتج |
|---|---|---|---|
upper() | تحويل إلى حروف كبيرة | "egypt".upper() | EGYPT |
lower() | تحويل إلى حروف صغيرة | "NILE".lower() | nile |
replace(a, b) | استبدال نص بآخر | "cat".replace("c", "h") | hat |
strip() | حذف المسافات من الطرفين | " hi ".strip() | hi |
split() | تقسيم النص إلى قائمة كلمات | "a b c".split() | ['a', 'b', 'c'] |
السلاسل النصية غير قابلة للتعديل: لا يمكن كتابة word[0] = "J"، بل ننشئ سلسلة جديدة.
القوائم
القائمة (List) مجموعة مرتبة من العناصر تُكتب بين قوسين مربعين، ويمكن أن تحتوي أنواعًا مختلفة:
grades = [85, 92, 78, 90]
fruits = ["apple", "banana", "mango"]
الوصول والتعديل: القوائم قابلة للتعديل:
print(fruits[1]) # banana
fruits[1] = "orange"
print(fruits) # ['apple', 'orange', 'mango']
الإضافة والحذف:
fruits.append("grape") # إضافة في النهاية
fruits.insert(0, "kiwi") # إضافة في موضع محدد
fruits.remove("apple") # حذف عنصر بقيمته
last = fruits.pop() # حذف آخر عنصر وإرجاعه
print(len(fruits))
المرور على القائمة بحلقة for:
grades = [85, 92, 78, 90]
total = 0
for g in grades:
total = total + g
print("Average:", total / len(grades)) # Average: 86.25
دوال مفيدة: len() للطول، وmax() وmin() لأكبر وأصغر عنصر، وsum() للمجموع، وsort() للترتيب.
أمثلة وتطبيقات
مثال: برنامج يطلب اسم المستخدم ويطبع ترحيبًا بحروف كبيرة وعدد حروف الاسم:
name = input("Enter your name: ").strip()
print("Welcome, " + name.upper())
print("Your name has", len(name), "letters")
مثال: إيجاد أعلى درجة في قائمة وموضعها:
grades = [70, 95, 88, 95, 60]
top = max(grades)
print(top, grades.index(top)) # 95 1
ملاحظات مهمة
- الفهرس يبدأ من
0؛ آخر عنصر فهرسهlen(x) - 1. - الوصول إلى فهرس غير موجود يسبب الخطأ
IndexError. remove()تحذف أول ظهور للقيمة فقط.- الرقم داخل علامتي تنصيص نص:
"5" + "5"تعطي"55".
مثال متدرج: إذا كانت القائمة colors = ["أحمر", "أخضر", "أزرق"] فإن colors[1] تعطي "أخضر" لأن العد يبدأ من الصفر. وبعد تنفيذ colors.append("أبيض") يصبح طول القائمة أربعة عناصر. أما السلسلة النصية فلا نغيّر حرفًا داخلها مباشرة؛ بل ننشئ سلسلة جديدة من الأجزاء المطلوبة.
خطأ شائع: الخلط بين رقم العنصر وعدد العناصر. في قائمة طولها ثلاثة يكون آخر فهرس هو 2، ومحاولة قراءة colors[3] تؤدي إلى خطأ تجاوز حدود القائمة.
المفاهيم الأساسية
- السلسلة النصية تتابع حروف غير قابل للتعديل، والقائمة مجموعة مرتبة قابلة للتعديل.
- الفهرسة تبدأ من
0، والفهارس السالبة تعد من النهاية. - التقطيع
x[start:end]لا يشملend. appendوinsertللإضافة، وremoveوpopللحذف.
ملخص الدرس
السلاسل النصية في Python تخزن النصوص، ونصل إلى حروفها بالفهرس ونقطعها وندمجها ونعالجها بدوال مثل upper وreplace وsplit. والقوائم تخزن مجموعات مرتبة من القيم يمكن تعديلها وإضافة عناصر إليها وحذفها، ونمر عليها بحلقة for لمعالجة كل عنصر.
أسئلة للتدريب
- ما ناتج
"Computer"[3:6]؟ - اكتب برنامجًا يطبع الحرف الأول والأخير من كلمة يدخلها المستخدم.
- أنشئ قائمة بأسماء خمس محافظات، ثم أضف محافظة سادسة واحذف الثانية واطبع القائمة.
- اكتب برنامجًا يحسب عدد الدرجات الأكبر من أو تساوي في قائمة درجات.
- لماذا يسبب الأمر
name[0] = "A"خطأً إذا كانتnameسلسلة نصية؟