برمجة بايثون 2026 — جامعة هلسنكي › الجزء 4: الدوال والقوائم 4 / 15 السابق التالي

تنسيق أمر الطباعة

أهداف التعلّم

بعد هذا القسم

  • ستعرف كيف تستخدم الوسائط لتنسيق نتيجة الأمر print
  • ستكون قادرًا على استخدام السلاسل النصية ذات البادئة f لتنسيق المخرجات

حتى الآن تعلّمنا ثلاث طرق لصياغة الوسيط المُعطى إلى الأمر print.

الطريقة الأولى هي المشغّل + المخصّص للسلاسل النصية. وهو يتيح الدمج البسيط لأجزاء السلسلة النصية:

name = "Mark"
age = 37
print("Hi " + name + " your age is " + str(age) + " years" )

لن تعمل هذه الطريقة إذا لم يكن أيّ من الأجزاء سلسلة نصية. وفي المثال أعلاه، حُوِّل المتغيّر age إلى سلسلة نصية بواسطة الدالة str، لأنه عدد صحيح ولا يمكن دمجه كما هو.

والطريقة الثانية هي اعتبار كل جزء من الوسيط وسيطًا منفصلًا، وفصلها بفواصل:

print("Hi", name, "your age is", age, "years" )

تُنتج هذه الشيفرة النتيجة نفسها تمامًا التي تنتجها النسخة السابقة. فالأمر print يضيف عادةً محرف مسافة بين كل وسيطين. أما الميزة هنا فهي أن الأجزاء يمكن أن تكون من أنواع مختلفة، فلا حاجة إلى تحويل أي شيء إلى سلسلة نصية.

وإذا أردت إزالة المسافات المضافة تلقائيًا، فيمكنك إضافة وسيط مسمّى خاص هو sep:

print("Hi", name, "your age is", age, "years", sep="")

فيطبع هذا

HiMarkyour age is37years

الوسيط sep="" هو وسيط مسمّى (keyword argument)، واختصار اسمه من الفاصل (separator). وهو يحدّد أن فصل الوسائط الأخرى ينبغي أن يتم الآن بسلسلة نصية فارغة. ويمكنك جعل الفاصل أي سلسلة نصية ترضاها. فمثلًا، إذا أردت أن يكون كل وسيط في سطر منفصل، فيمكنك جعل الفاصل هو "\n"، وهو محرف السطر الجديد:

print("Hi", name, "your age is", age, "years", sep="\n")
Hi
Mark
your age is
37
years

افتراضيًا، ينتهي أمر الطباعة دائمًا بمحرف سطر جديد، لكن يمكنك تغيير ذلك أيضًا. فالوسيط المسمّى end يحدّد ما يُوضع في نهاية السطر. وضبط end على سلسلة نصية فارغة يعني أنه لا يوجد محرف سطر جديد في نهاية المخرجات:

print("Hi ", end="")
print("there!")
Hi there!

السلاسل النصية ذات البادئة f

الطريقة الثالثة لتجهيز السلاسل النصية هي السلاسل النصية ذات البادئة f. وسيبدو المثال السابق الذي يستخدم الاسم والعمر على النحو التالي عند صياغته بهذه الطريقة:

name = "Erkki"
age = 39
print(f"Hi {name} your age is {age} years")

حتى الآن استخدمنا سلاسل نصية ذات بادئة f بسيطة جدًا، لكنها متعددة الاستخدامات إلى حد كبير في تنسيق محتوى السلاسل النصية. ومن أبرز استخدامهاات تحديد عدد الخانات العشرية التي تُطبع مع عدد عشري. وافتراضيًا يكون هذا العدد كبيرًا إلى حد ما:

number = 1/3
print(f"The number is {number}")
The number is 0.333333333333333

يمكن تحديد الصيغة التي نريد أن يُعرض بها العدد داخل الأقواس المعقوفة لتعبير المتغيّر. فلنضف محرف النقطتين و_مُحدِّد تنسيق_ (format specifier) بعد اسم المتغيّر:

number = 1/3
print(f"The number is {number:.2f}")
The number is 0.33

يوضّح مُحدِّد التنسيق .2f أننا نريد عرض خانتين عشريتين. أما الحرف f في النهاية فيعني أننا نريد عرض المتغيّر في هيئة float، أي عدد عشري.

وهنا مثال آخر، نحدّد فيه مقدار المساحة المخصّصة للمتغيّر في المخرجات. في كلتا الحالتين تُدرَج قيمة المتغيّر name في السلسلة النصية الناتجة، مع تخصيص مساحة من 15 محرفًا لها. أولًا تُحاذى الأسماء إلى اليسار، ثم تُحاذى إلى اليمين:

names =  [ "Steve", "Jean", "Katherine", "Paul" ]
for name in names:
  print(f"{name:15} centre {name:>15}")
Steve           centre           Steve
Jean            centre            Jean
Katherine       centre       Katherine
Paul            centre            Paul

لا تقتصر استخدامات السلاسل النصية ذات البادئة f على أوامر print. ويمكن إسنادها إلى متغيّرات ودمجها مع سلاسل نصية أخرى:

name = "Larry"
age = 48
city = "Palo Alto"
greeting = f"Hi {name}, you are {age} years of age"
print(greeting + f", and you live in {city}")
Hi Larry, you are 48 years of age, and you live in Palo Alto

يمكنك التفكير في السلسلة النصية ذات البادئة f على أنها نوع من الدوال، تُنشئ سلسلة نصية عادية بناءً على «الوسائط» الموجودة داخل الأقواس المعقوفة.

تمرين برمجي: الأعداد الصحيحة إلى سلاسل نصية

اكتب دالة اسمها formatted، تأخذ قائمة من الأعداد العشرية كوسيط لها. وتُرجع الدالة قائمة جديدة تحتوي على كل عنصر من عناصر القائمة الأصلية في صيغة سلسلة نصية، مقرَّبًا إلى خانتين عشريتين. وينبغي أن يبقى ترتيب العناصر في القائمة دون تغيير.

تلميح: استخدم السلاسل النصية ذات البادئة f لتنسيق الأعداد العشرية إلى سلاسل نصية مناسبة.

مثال على السلوك المتوقع:

my_list = [1.234, 0.3333, 0.11111, 3.446]
new_list = formatted(my_list)
print(new_list)
['1.23', '0.33', '0.11', '3.45']