الدرس 13 من دورة Python للمبتدئين

تنسيق المخرجات: اجعل نتيجة البرنامج واضحة واحترافية

في الدرس السابق بنينا مشروع حاسبة السعر مع الضريبة. الآن سنحسن طريقة عرض النتيجة حتى تظهر كأنها تقرير صغير مفهوم للمستخدم، باستخدام f-string وتنسيق الأرقام إلى منزلتين عشريتين.

المستوى: مبتدئ جدًا النتيجة: تقرير منسق مدة التطبيق: 20 - 25 دقيقة
طريقة CIT للتعلم الهادئ: لا نريد أن يعرف المتدرب الحساب فقط. نريده أن يفكر في المستخدم أيضًا: هل النتيجة واضحة؟ هل الرقم مفهوم؟ هل التقرير مرتب؟
مهم قبل البداية: هذا الدرس لا يغير فكرة الحساب. السعر والضريبة والإجمالي ستبقى كما هي. الذي سيتغير هو طريقة عرض النتيجة فقط.

ما النتيجة التي يجب أن تخرج بها؟

بدل أن تظهر النتيجة بهذا الشكل:

الإجمالي: 115.0

سنجعلها تظهر بشكل أوضح:

الإجمالي: 115.00 ريال

وسنستخدم صيغة مثل:

print(f"الإجمالي: {total:.2f} ريال")
f-string لدمج النص مع المتغيرات.
{total} لوضع قيمة المتغير داخل النص.
:.2f لعرض الرقم بمنزلتين عشريتين.
خريطة درس تنسيق المخرجات في Python
قبل وبعد تنسيق المخرجات في Python
1

لماذا نحتاج تنسيق المخرجات؟

البرنامج لا يكفي أن يحسب بشكل صحيح. يجب أن يعرض النتيجة بطريقة يفهمها المستخدم.

هذه نتيجة صحيحة لكنها ليست مرتبة جدًا:

اسم المنتج: Keyboard
السعر قبل الضريبة: 100.0
الضريبة: 15.0
الإجمالي: 115.0

وهذه نتيجة أوضح:

===== فاتورة مبسطة =====
المنتج: Keyboard
السعر قبل الضريبة: 100.00 ريال
الضريبة: 15.00 ريال
الإجمالي: 115.00 ريال
========================
الفكرة: الحساب هو عقل البرنامج، لكن طريقة العرض هي وجه البرنامج أمام المستخدم.
تحقق قبل الانتقال ✅ هل فهمت أن التنسيق لا يغير الحساب، بل يجعل النتيجة أوضح؟
2

أنشئ ملف الدرس الثالث عشر

افتح مجلد الدورة داخل VS Code:

python_course

ثم أنشئ ملفًا جديدًا باسم:

lesson_13.py

افتح الملف داخل Editor.

توقف لحظة ✅ هل ظهر ملف lesson_13.py داخل Explorer؟ إذا نعم، انتقل للخطوة التالية.
3

ابدأ بكود المشروع السابق

اكتب نسخة المشروع الأساسية:

product_name = input("اكتب اسم المنتج: ")
price = float(input("اكتب السعر قبل الضريبة: "))

tax = price * 0.15
total = price + tax

print("اسم المنتج:", product_name)
print("السعر قبل الضريبة:", price)
print("الضريبة:", tax)
print("الإجمالي:", total)

هذا الكود يعمل، لكن المخرجات يمكن أن تكون أجمل.

تحقق قبل الانتقال ✅ هل فهمت أن الحسابات جاهزة، وأن هدفنا الآن تحسين print فقط؟
4

ما هي f-string؟

f-string طريقة سهلة في Python لكتابة نص يحتوي على قيم متغيرات.

بدل أن نكتب:

print("الإجمالي:", total)

نستطيع أن نكتب:

print(f"الإجمالي: {total} ريال")
شرح f-string في Python
ما معنى حرف f؟ حرف f قبل النص يخبر Python أن النص يحتوي متغيرات داخل أقواس معقوفة مثل {total}، ويجب وضع قيمتها داخل الجملة.
انتبه: إذا نسيت حرف f، فقد تظهر {total} كنص عادي بدل أن تظهر قيمة المتغير.
سؤال سريع 🧠 لماذا وضعنا f قبل علامة التنصيص؟ حتى يقرأ Python المتغيرات داخل الأقواس المعقوفة.
5

استخدم f-string في تقرير المشروع

بدّل أوامر print القديمة بهذه الأوامر:

print("===== فاتورة مبسطة =====")
print(f"المنتج: {product_name}")
print(f"السعر قبل الضريبة: {price} ريال")
print(f"الضريبة: {tax} ريال")
print(f"الإجمالي: {total} ريال")
print("========================")

الآن أصبحت كل جملة أوضح لأن النص والقيمة يظهران داخل سطر واحد.

ماذا فعلنا؟ وضعنا المتغيرات داخل الأقواس المعقوفة حتى يقرأ Python قيمتها ويضعها في الجملة.
تحقق قبل الانتقال ✅ هل أصبحت النتيجة أقرب إلى تقرير صغير؟
6

لماذا نحتاج منزلتين عشريتين؟

في الأسعار عادة نحب أن تظهر الأرقام بشكل ثابت:

100.00
15.00
115.00

وليس مرة هكذا:

100.0
15.0
115.0

لذلك نستخدم:

{total:.2f}
شرح تنسيق الرقم إلى منزلتين عشريتين في Python
ماذا تعني :.2f؟ تعني: اعرض الرقم بمنزلتين بعد النقطة العشرية. مثال: 115.0 تصبح 115.00.
تنبيه مهم: حرف f داخل :.2f مختلف عن حرف f الذي نضعه قبل النص. الأول لتنسيق الرقم، والثاني لتفعيل قراءة المتغيرات داخل النص.
سؤال سريع 🧠 ماذا تفعل :.2f؟ تجعل الرقم يظهر بمنزلتين عشريتين.
7

نسق أرقام المشروع

الآن نضيف :.2f إلى الأرقام:

print("===== فاتورة مبسطة =====")
print(f"المنتج: {product_name}")
print(f"السعر قبل الضريبة: {price:.2f} ريال")
print(f"الضريبة: {tax:.2f} ريال")
print(f"الإجمالي: {total:.2f} ريال")
print("========================")

لاحظ أننا لم نضع :.2f مع اسم المنتج، لأن اسم المنتج نص وليس رقمًا.

انتبه: لا تستخدم :.2f مع النصوص مثل product_name. استخدمها مع الأرقام فقط مثل price و tax و total.
تحقق قبل الانتقال ✅ هل فهمت أن :.2f تستخدم مع الأرقام فقط؟
8

اكتب الكود الكامل المنسق

الآن اكتب الكود الكامل داخل ملف lesson_13.py:

product_name = input("اكتب اسم المنتج: ")
price = float(input("اكتب السعر قبل الضريبة: "))

tax = price * 0.15
total = price + tax

print("===== فاتورة مبسطة =====")
print(f"المنتج: {product_name}")
print(f"السعر قبل الضريبة: {price:.2f} ريال")
print(f"الضريبة: {tax:.2f} ريال")
print(f"الإجمالي: {total:.2f} ريال")
print("========================")

احفظ الملف:

Ctrl + S

ثم شغله:

python lesson_13.py

وإذا لم يعمل أمر python:

py lesson_13.py
تحقق قبل الانتقال ✅ هل اشتغل البرنامج وسألك عن اسم المنتج والسعر؟
9

اختبر النتيجة

جرّب إدخال:

اكتب اسم المنتج: Keyboard
اكتب السعر قبل الضريبة: 100

النتيجة المتوقعة:

===== فاتورة مبسطة =====
المنتج: Keyboard
السعر قبل الضريبة: 100.00 ريال
الضريبة: 15.00 ريال
الإجمالي: 115.00 ريال
========================
هنا الفرق: الحساب هو نفس حساب الدرس السابق، لكن العرض أصبح أوضح وأكثر ترتيبًا.
توقف لحظة ✅ هل ظهرت الأرقام بمنزلتين عشريتين؟ إذا نعم، فقد نجح التنسيق.
10

تحدي صغير: غيّر عنوان التقرير

عدل هذا السطر:

print("===== فاتورة مبسطة =====")

واجعله مثلًا:

print("===== تقرير السعر النهائي =====")

ثم شغل البرنامج مرة أخرى.

هدف التحدي: أن تفهم أن التنسيق ليس مجرد كود ثابت. تستطيع تغيير النصوص وتحسين شكل التقرير بنفسك.
تحقق قبل الانتقال ✅ هل استطعت تغيير عنوان التقرير بدون أن يتعطل الحساب؟

اختبار نهاية الدرس

قبل الانتقال للدرس القادم، تأكد أنك فهمت هذه النقاط:

✅ فهمت أن تنسيق المخرجات لا يغير الحساب.
✅ عرفت أن f-string تدمج النص مع المتغيرات.
✅ فهمت لماذا نضع f قبل النص.
✅ فهمت أن {total} تعرض قيمة المتغير داخل الجملة.
✅ استخدمت :.2f لعرض رقم بمنزلتين عشريتين.
✅ عرفت أن :.2f تستخدم مع الأرقام لا النصوص.
✅ كتبت تقريرًا منسقًا للمستخدم.
✅ عدلت عنوان التقرير بنفسك.
إذا فهمت هذه النقاط: فأنت بدأت تنتقل من كتابة كود يعمل فقط إلى كتابة كود يعطي تجربة أوضح للمستخدم.

خلاصة الدرس

في هذا الدرس تعلمنا أن المخرجات جزء مهم من البرنامج. استخدمنا f-string لدمج النصوص مع المتغيرات، واستخدمنا :.2f لعرض الأرقام بمنزلتين عشريتين.

تذكر القاعدة:

f"النص {variable}"
f"الرقم {number:.2f}"

في الدرس القادم سنبدأ أول خطوة نحو اتخاذ القرار داخل البرنامج باستخدام الشروط.