تحسين التقرير النهائي: اجعل مخرجات برنامج المشتريات أوضح
في الدرس السابق حفظنا المنتجات في ملف JSON. الآن سنحسن طريقة عرض التقرير النهائي ليصبح أوضح، مرتبًا، وأسهل قراءة للمستخدم.
ما النتيجة التي يجب أن تخرج بها؟
بدل تقرير بسيط، نريد تقريرًا مثل:
======================================== تقرير المشتريات تاريخ التقرير: 2026-07-19 08:30 ======================================== المنتجات: 1. Keyboard السعر: 100.00 ريال 2. Mouse السعر: 50.00 ريال ---------------------------------------- عدد المنتجات: 2 متوسط السعر: 75.00 ريال الإجمالي قبل الضريبة: 150.00 ريال الضريبة: 22.50 ريال الإجمالي النهائي: 172.50 ريال ========================================
لماذا نحسن التقرير؟
البرنامج قد يكون صحيحًا من ناحية الحسابات، لكن المستخدم يحتاج رؤية النتيجة بشكل مرتب.
التقرير المحسن يساعد المستخدم على معرفة:
ما المنتجات؟ كم عددها؟ كم إجمالي السعر؟ كم الضريبة؟ كم المبلغ النهائي؟
أنشئ ملف الدرس الحادي والثلاثين
افتح مجلد الدورة داخل VS Code:
python_course
ثم أنشئ ملفًا جديدًا باسم:
lesson_31.py
انسخ إليه كود الدرس السابق، ثم طبق تعديلات هذا الدرس.
أضف datetime و CURRENCY في أعلى الملف
في أعلى الملف، اجعل البداية هكذا:
import json from datetime import datetime DATA_FILE = "products.json" TAX_RATE = 0.15 CURRENCY = "ريال"
استخدمنا CURRENCY حتى لا نكرر كلمة ريال في أكثر من مكان.
اكتب دالة تنسيق المبلغ
بدل أن نكتب تنسيق السعر في كل مكان، نضعه في دالة واحدة:
def format_money(value):
return f"{value:.2f} {CURRENCY}"
الآن أي مبلغ نريد عرضه نمرره لهذه الدالة.
اكتب دالة طباعة خط فاصل
التقرير يحتاج فواصل حتى يكون مقروءًا:
def print_line():
print("=" * 40)
ويمكننا استخدام خط أخف داخل التقرير:
def print_small_line():
print("-" * 40)
اكتب دالة وقت التقرير
نريد عرض وقت إنشاء التقرير:
def get_report_time():
now = datetime.now()
return now.strftime("%Y-%m-%d %H:%M")
هذه الدالة ترجع التاريخ والوقت كنص مرتب.
اكتب دالة متوسط السعر
سنضيف معلومة مفيدة في الملخص: متوسط سعر المنتج.
def calculate_average_price(products, total):
if len(products) == 0:
return 0
return total / len(products)
إذا لم توجد منتجات نرجع 0 حتى لا يحدث خطأ قسمة على صفر.
افهم أجزاء التقرير النهائي
التقرير المحسن يتكون من ثلاثة أجزاء:
رتّب الكود النهائي على أجزاء
الجزء الأول: الاستيراد والإعدادات:
import json from datetime import datetime DATA_FILE = "products.json" TAX_RATE = 0.15 CURRENCY = "ريال"
الجزء الثاني: دوال تنسيق التقرير:
def format_money(value):
return f"{value:.2f} {CURRENCY}"
def print_line():
print("=" * 40)
def print_small_line():
print("-" * 40)
الجزء الثالث: وقت التقرير ومتوسط السعر:
def get_report_time():
now = datetime.now()
return now.strftime("%Y-%m-%d %H:%M")
def calculate_average_price(products, total):
if len(products) == 0:
return 0
return total / len(products)
الجزء الرابع: بداية دالة التقرير المحسن:
def print_report(products, total, tax, final_total):
if len(products) == 0:
print("لا توجد منتجات حتى الآن")
return
average_price = calculate_average_price(
products,
total
)
الجزء الخامس: رأس التقرير:
print_line()
print("تقرير المشتريات")
print(f"تاريخ التقرير: {get_report_time()}")
print_line()
الجزء السادس: طباعة المنتجات:
print()
print("المنتجات:")
for index in range(len(products)):
product = products[index]
product_number = index + 1
name = product["name"]
price = product["price"]
أكمل طباعة كل منتج:
print(f"{product_number}. {name}")
print(f" السعر: {format_money(price)}")
print()
الجزء السابع: ملخص التقرير:
print_small_line()
print(f"عدد المنتجات: {len(products)}")
print(f"متوسط السعر: {format_money(average_price)}")
print(
f"الإجمالي قبل الضريبة: "
f"{format_money(total)}"
)
أكمل الضريبة والإجمالي النهائي:
print(f"الضريبة: {format_money(tax)}")
print(
f"الإجمالي النهائي: "
f"{format_money(final_total)}"
)
print_line()
شغّل البرنامج واختبر التقرير
احفظ الملف:
Ctrl + S
ثم شغله:
python lesson_31.py
وإذا لم يعمل أمر python:
py lesson_31.py
أضف منتجين ثم اختر عرض التقرير:
اختر رقم الأمر: 1 اسم المنتج: Keyboard سعر المنتج: 100 اختر رقم الأمر: 1 اسم المنتج: Mouse سعر المنتج: 50 اختر رقم الأمر: 2
النتيجة المتوقعة
يجب أن ترى مخرجات قريبة من هذا الشكل:
أولًا: رأس التقرير وقائمة المنتجات:
======================================== تقرير المشتريات تاريخ التقرير: 2026-07-19 08:30 ======================================== المنتجات: 1. Keyboard السعر: 100.00 ريال 2. Mouse السعر: 50.00 ريال
ثانيًا: ملخص التقرير النهائي:
---------------------------------------- عدد المنتجات: 2 متوسط السعر: 75.00 ريال الإجمالي قبل الضريبة: 150.00 ريال الضريبة: 22.50 ريال الإجمالي النهائي: 172.50 ريال ========================================
تحدي صغير: غيّر العملة من مكان واحد
جرّب تغيير:
CURRENCY = "ريال"
إلى:
CURRENCY = "SAR"
ثم شغّل التقرير مرة أخرى. ستلاحظ أن كل الأسعار تغيرت لأننا استخدمنا format_money.
اختبار نهاية الدرس
قبل الانتقال للدرس القادم، تأكد أنك فهمت هذه النقاط:
خلاصة الدرس
تعلمنا كيف نحسن التقرير النهائي في برنامج المشتريات. أضفنا تاريخ التقرير، تنسيق المبالغ، الفواصل، متوسط السعر، وملخصًا نهائيًا واضحًا.
تذكر القاعدة:
اجعل التقرير واضحًا اجعل التنسيق في دوال مستقلة اعرض التفاصيل ثم الملخص لا تغيّر الحسابات بدون سبب
في الدرس القادم سنجمع المشروع النهائي كاملًا ونراجعه كبرنامج واحد منظم قابل للتشغيل.
💬 التعليقات
لا توجد تعليقات بعد.
🚫 يجب تسجيل الدخول لإضافة تعليق. دخول / تسجيل