Menu
CoddyTech

ממיר נתונים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Python של Coddy. שיעור 78 מתוך 78.

challenge icon

אתגר

קשה

יש ליצור פונקציה בשם transform_dataset שמעבדת רשימה של רשומות תלמידים לצורך ניתוח.

כל רשומה היא מילון המכיל:

  • student_id: מזהה ייחודי של התלמיד
  • grades: רשימה של ציונים מספריים
  • subjects: רשימה של המקצועות שהתלמיד לומד

הפונקציה שלך צריכה:

  1. לחשב את הציון הממוצע של כל תלמיד
  2. לכלול רק תלמידים שכל הציונים שלהם גבוהים מ־70 (תלמידים שעומדים בתנאים) — יש להשתמש בפונקציה all() של Python כדי לבדוק את התנאי הזה
  3. ליצור סיכום של המקצועות שלומדים התלמידים שעומדים בתנאים, ולספור כמה תלמידים שעומדים בתנאים לומדים כל מקצוע
  4. להחזיר מילון עם שני מפתחות:
    • qualified_students: מילון שממפה מזהי תלמידים לציון הממוצע שלהם (מעוגל ל־2 מקומות עשרוניים)
    • subject_summary: מילון שממפה מקצועות למספר התלמידים שעומדים בתנאים ולומדים את המקצוע

הערה: הפונקציה all() ב־Python מחזירה True רק אם כל האיברים באיטרבילי הם True. לדוגמה, all(grade > 70 for grade in grades) תחזיר True רק אם כל הציונים גבוהים מ־70.

קלט לדוגמה:

[
    {
        "student_id": "S123", 
        "grades": [88, 92, 85], 
        "subjects": ["Math", "Science", "History"]
    },
    {
        "student_id": "S124", 
        "grades": [65, 95, 80], 
        "subjects": ["Math", "Science", "English"]
    },
    {
        "student_id": "S125", 
        "grades": [91, 89, 92], 
        "subjects": ["Math", "Physics", "History"]
    }
]

פלט לדוגמה:

{
    'qualified_students': {'S123': 88.33, 'S125': 90.67}, 
    'subject_summary': {'Math': 2, 'Science': 1, 'History': 2, 'Physics': 1}
}

נסו בעצמכם

def transform_dataset(data):
    # הפתרון שלכם כאן
    
    # שלב 1: חשבו את ממוצע הציונים של כל תלמיד וסננו את התלמידים שעומדים בתנאים
    # (תלמידים שכל הציונים שלהם גבוהים מ-70)
    
    # שלב 2: צרו סיכום של המקצועות שלמדו התלמידים שעומדים בתנאים
    
    # שלב 3: החזירו את המילון הסופי עם qualified_students ו-subject_summary
    pass

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Python אונליין