تنسيق النصوص المباشر (f-strings)
حتى الآن كنا ندمج النصوص باستخدام الجمع +، مثل:
name = "Alice"
friend = 'Bob'
meal = "lunch"
print(name + " went to " + meal + " with " + friend + '.')
لكن هذه الطريقة تصبح مرهقة كلما زادت الأجزاء. يمكن كتابة الشيء نفسه بصورة أوضح باستخدام f-string. استبدل السطر الأخير بـ:
print(f"{name} went to {meal} with {friend}.")
تأكد من كتابة الحرف f قبل علامة الاقتباس.
صيغة الـf-string تبدأ بالحرف f قبل السلسلة النصية. وداخل النص يمكنك وضع تعبيرات بايثون بين الأقواس المعقوفة {}؛ يقوم بايثون بتقييم كل تعبير ثم يحوّل نتيجته إلى نص ويضعها في مكانها.
لهذا يمكن أن تكون المتغيرات من أنواع مختلفة، ولا تحتاج إلى تحويل الأعداد يدويًا إلى نص قبل دمجها. هذه طريقة سهلة خصوصًا عند الجمع بين نصوص وأعداد.
جرّب البرنامج التالي:
name = 'Alice'
age = 20
print('Hello ' + name + '. You are ' + age + ' years old.')
في البرنامج الحالي توجد محاولة لدمج نص مع العدد الموجود في المتغير age باستخدام +، ولذلك يفشل البرنامج لأن بايثون لا يجمع سلسلة نصية وعددًا بهذه الطريقة.
أصلح كل عمليات الدمج في البرنامج باستخدام f-string واحدة، بحيث يُبنى النص المطلوب بوضوح ويعمل مهما كانت قيمة age.
This is just like the given f-string example.
Did you forget the
f?How many pairs of curly brackets do you need?
لا يلزم أن تحتوي الأقواس المعقوفة داخل f-string على اسم متغير فقط؛ يمكن أن تضع داخلها أي تعبير صالح في بايثون، وسيتم تقييمه أولًا ثم إدراج النتيجة في النص.
جرّب:
f"2 * 3 + 4 is equal to {2 * 3 + 4}"
لاحظ أن الجزء خارج الأقواس يبقى نصًا كما كتبته، بينما الجزء داخل {} يُحسب.
تذكّر أنك تستطيع استخدام علامات الاقتباس المزدوجة عندما يحتوي النص على فاصلة عليا، وأن صيغة f-string هي مجرد طريقة لكتابة السلسلة في الكود؛ بعد تقييمها لا يبقى الحرف f أو الأقواس المعقوفة في القيمة النهائية.
البرنامج التالي مكسور:
people = ["Alice", "Bob", "Charlie"]
print('There are' + people.length() + 'people waiting, the first one's name is' + people.1 + '.')
أصلحه بطريقة عامة بحيث يطبع:
There are 3 people waiting, the first one's name is Alice. يجب أن يعمل الحل أيضًا إذا تغيّر عدد الأشخاص أو تغيّر الاسم الأول في القائمة.
There are four problems with the expression inside
print.There is a problem with the syntax that finds the number of people.
Then one of the strings has a problem with the quotes.
Also there is a problem with the syntax that finds the first person's name.
And you can't add strings and numbers together!
Did you properly use curly brackets in your f-string?
ممتاز!
من الآن فصاعدًا، استخدم f-strings لبناء النصوص عندما تكون مناسبة بدل الاعتماد على + في كل مرة؛ فهي غالبًا أوضح وأسهل قراءة.