AzLearn

النصوص و f-strings

Strings & f-strings

مفهوم ~18 دقيقة

النصوص و f-strings — Strings & f-strings

النصوص (strings) من أكثر أنواع البيانات استخداماً في البرامج الحقيقية. كل ما يظهر للمستخدم — رسائل، تقارير، واجهات — هو نصوص. Python تُقدّم أدوات قوية وسهلة للتعامل معها.

طرق كتابة النصوص

علامات تنصيص مفردة أو مزدوجة:

# كلاهما صحيح — Both are valid
name1 = 'محمد'
name2 = "محمد"

متى تختار المفردة ومتى تختار المزدوجة؟ اختر ما يجعل الكود أنظف. إذا كان النص يحتوي على علامة تنصيص مفردة، استخدم المزدوجة:

message = "It's a beautiful day"   # تجنب التعارض — Avoid conflict
arabic = 'مرحباً بالعالم'

النصوص المتعددة الأسطر بـ """:

# نص متعدد الأسطر — Multi-line string
description = """
هذا برنامج تعليمي
يشرح أساسيات Python
باللغة العربية
"""

# أو للتعليقات الطويلة — Or for long comments
policy = """
سياسة الاستخدام:
- لا يُسمح باستخدام البرنامج تجارياً
- يجب الاحتفاظ بحقوق الملكية
"""

f-strings — الطريقة الحديثة للتنسيق

f-strings هي أنظف طريقة لدمج المتغيرات مع النصوص في Python (منذ الإصدار 3.6). ضع f قبل علامة التنصيص ثم ضع المتغيرات بين {}:

# f-string — الطريقة المُفضّلة — Preferred method
name = "فاطمة"
age = 25
city = "جدة"

message = f"مرحباً {name}، عمرك {age} سنة وتسكن في {city}"
print(message)
# مرحباً فاطمة، عمرك 25 سنة وتسكن في جدة

يمكن وضع تعبيرات كاملة داخل {} ليس فقط متغيرات:

price = 100
vat = 0.15
print(f"السعر شامل الضريبة: {price * (1 + vat):.2f} ريال")
# السعر شامل الضريبة: 115.00 ريال

لاحظ :.2f داخل {} — هذا يعني اعرض رقمين بعد الفاصلة العشرية. تعلّم بعض تنسيقات f-string المفيدة:

التنسيقالمعنىمثال
:.2fرقمان عشريانf"{3.14159:.2f}"3.14
:dعدد صحيحf"{42:d}"42
:,فاصل الآلافf"{1000000:,}"1,000,000
:.0fبدون كسر عشريf"{3.7:.0f}"4
main.go

format() — الطريقة الكلاسيكية

قبل f-strings كنا نستخدم format(). ستُقابلها في الكود القديم:

# format() — طريقة قديمة لكن مستخدمة — Old but used
name = "خالد"
score = 95
print("الطالب {} حصل على {} درجة".format(name, score))

# أو بالترتيب — Or by index
print("الطالب {0} حصل على {1} درجة".format(name, score))

f-strings أوضح وأسرع، لذا فضّلها في الكود الجديد.

العمليات الشائعة على النصوص

Python تُقدّم مجموعة غنية من العمليات المدمجة في كل نص:

تغيير الحالة:

text = "  Hello World  "
print(text.upper())      # "  HELLO WORLD  "
print(text.lower())      # "  hello world  "
print(text.strip())      # "Hello World" — إزالة المسافات
print(text.strip().lower())  # يمكن تسلسل العمليات

البحث والاستبدال:

sentence = "Python سهل التعلم وPython ممتع"
print(sentence.replace("Python", "البرمجة"))
# "البرمجة سهل التعلم والبرمجة ممتع"

print("Python" in sentence)   # True — هل يحتوي النص؟
print(sentence.count("Python"))  # 2 — كم مرة يظهر؟

التقسيم والدمج:

# split() — قسّم النص — Split text
csv_line = "سارة,22,الرياض,مبرمجة"
parts = csv_line.split(",")
print(parts)  # ['سارة', '22', 'الرياض', 'مبرمجة']

# join() — ادمج قائمة — Join a list
words = ["Python", "سهل", "التعلم"]
sentence = " ".join(words)
print(sentence)  # "Python سهل التعلم"
main.go

الفهرسة والقطع — Indexing & Slicing

النصوص في Python متسلسلة — كل حرف له موضع (index) يبدأ من 0:

س  ل  ا  م
0  1  2  3
word = "سلام"
print(word[0])   # "س" — أول حرف
print(word[3])   # "م" — رابع حرف
print(word[-1])  # "م" — آخر حرف (من اليمين)
print(word[-2])  # "ا" — ما قبل الأخير

الفهرسة السالبة تبدأ من اليمين: -1 هو الأخير، -2 ما قبله، وهكذا.

القطع (Slicing) — s[start:stop]:

text = "Python رائع"
print(text[0:6])   # "Python" — من 0 إلى 5 (6 غير مشمول)
print(text[7:])    # "رائع"   — من 7 حتى النهاية
print(text[:6])    # "Python" — من البداية حتى 5
print(text[::2])   # كل حرف ثانٍ — Every other character
print(text[::-1])  # عكس النص — Reverse the string
main.go

دالة len() — طول النص

name = "عبدالرحمن"
print(len(name))   # 9 — عدد الأحرف

# مفيد للتحقق من الإدخال — Useful for validation
password = "abc123"
if len(password) < 8:
    print("كلمة المرور قصيرة جداً")

النصوص غير قابلة للتغيير — Strings are Immutable

نص في Python لا يمكن تعديله بعد إنشائه. الدوال مثل upper() ترجع نصاً جديداً ولا تغير الأصلي:

name = "python"
name.upper()       # لا يغير name — Doesn't change name
print(name)        # "python" — لا يزال صغيراً

# الصحيح: خزّن النتيجة — Correct: store the result
name = name.upper()
print(name)        # "PYTHON"
تحدي — Challenge

خلاصة

النصوص في Python قوية ومرنة. f-strings هي الطريقة الحديثة والمُفضّلة للتنسيق — ضع f قبل التنصيص وضع المتغيرات بين {}. تعلّم الدوال الأساسية (upper, lower, strip, split, replace, join) والفهرسة والقطع — ستحتاجها في كل مشروع. في الدرس القادم ستتعلم كيف يقرر برنامجك ماذا يفعل بناءً على الشروط والحلقات.