Python • المستوى الرابع • الدرس 2
العودة لفهرس المستوىالمشروع التطبيقي الشامل — أداة إدارة المهام وتحليل البيانات (Python CLI Project)
أهداف المشروع الشامل
- دمج مفاهيم Python المكتسبة: OOP، Dictionaries، Loops، و Functions.
- بناء أداة حقيقية قابلة للاستخدام ومعالجة الإحصائيات البرمجية بمرونة.
- تطبيق مبادئ
OOPعبر تصميم Class بأساليب CRUD كاملة. - استخدام
list comprehensionوsum()لتوليد إحصائيات ديناميكية.
1. بنية Class إدارة المهام
يُمكّنك السكربت من حفظ قائمة المهام، تغيير حالة الإنجاز ديناميكياً، واستخراج نواتج وتحليلات الأداء عبر الحلقات والدوال التجميعية بأسلوب نقي وسريع.
python
class TaskManager:
def __init__(self):
self.tasks = [] # قائمة لتخزين جميع المهام
def add_task(self, title, category):
# إنشاء قاموس يمثل المهمة الجديدة
task = {
"id": len(self.tasks) + 1,
"title": title,
"category": category,
"completed": False
}
self.tasks.append(task)
return f"تمت إضافة المهمة: '{title}'"
def complete_task(self, task_id):
# البحث عن المهمة بواسطة المعرّف
for t in self.tasks:
if t["id"] == task_id:
t["completed"] = True
return f"تم إنجاز المهمة رقم {task_id}"
return "المهمة غير موجودة!"2. أهم المفاهيم البرمجية المستخدمة
Class & Objects
class TaskManager:
def __init__(self):
self.tasks = []List Comprehension
[t for t in self.tasks if t['category'] == 'X']
sum() & Generator
sum(1 for t in self.tasks
if t['completed'])f-strings
f"الإجمالي: {total}\n"
f"نسبة: {progress:.1f}%"3. تدفق تنفيذ البرنامج
1.إنشاء كائن
manager من Class TaskManager.2.إضافة المهام عبر
add_task() — كل مهمة تحصل على ID تلقائي.3.تحديث حالة الإنجاز عبر
complete_task(id).4.استخراج الإحصائيات عبر
get_stats() — إجمالي، منجز، معلّق، ونسبة التقدم. التطبيق العملي المباشر
تحدي إتمام المسار النهائي
قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:
- أضف مهمة ثالثة جديدة باستخدام
add_task(). - أضف دالة
remove_task(task_id)لحذف مهمة بواسطة المعرّف. - أضف دالة
get_tasks_by_category(category)تُرجع مهام فئة معينة باستخدام list comprehension. - حسّن دالة
get_stats()لعرض نسبة التقدمprogress. - اطبع جميع الأقسام الخمسة باستخدام
print().
⏳ جارٍ تحميل المحرر التفاعلي...