File size: 2,112 Bytes
5fe4564
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5765b05
5fe4564
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5765b05
 
 
5fe4564
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""
Quiz handling for SkillSync
"""

class QuizHandler:
    """Handles quiz evaluation and scoring"""
    
    def __init__(self, passing_score=80):
        self.passing_score = passing_score
    
    def evaluate_answers(self, questions, answers):
        """Evaluate quiz answers and return results"""
        correct_count = 0
        results = []
        
        for i, (answer, question) in enumerate(zip(answers, questions)):
            is_correct = answer == question['correct']
            if is_correct:
                correct_count += 1
            results.append({
                "question_num": i + 1,
                "question": question['question'],
                "user_answer": question['options'][answer] if answer is not None else "Not answered",
                "correct_answer": question['options'][question['correct']],
                "is_correct": is_correct
            })
        
        score = int((correct_count / len(questions)) * 100) if questions else 0
        passed = score >= self.passing_score
        
        return {
            "score": score,
            "correct_count": correct_count,
            "total_questions": len(questions),
            "passed": passed,
            "results": results
        }
    
    def format_results(self, evaluation):
        """Format quiz results for display"""
        passed_icon = "πŸŽ‰" if evaluation['passed'] else "πŸ“š"
        passed_text = "**Passed!**" if evaluation['passed'] else "**Keep Learning!** You need 80% to pass."
        
        output = f"""
## Quiz Results

**Score:** {evaluation['score']}%
{passed_icon} {passed_text}

**Correct Answers:** {evaluation['correct_count']}/{evaluation['total_questions']}

---

### Answer Review:

"""
        for result in evaluation['results']:
            status = "βœ…" if result['is_correct'] else "❌"
            output += f"{status} **Q{result['question_num']}:** {result['question']}\n"
            output += f"- Your answer: *{result['user_answer']}*\n"
            output += f"- Correct answer: *{result['correct_answer']}*\n\n"
        
        return output