import sys

AVAILABLE_GRADES = ['1','2','3','4','5']

'''
1. Fájl beolvasása listába
'''
def read_file(filename):     
    students = None   
    try:
        students = open(filename, 'r')
        student_list = []
        students_rows = students.readlines() 
        students.close()
        for student_row in students_rows:
            student_list.append(student_row.strip().split(','))
        print("File beolvasása sikeres...")
        return student_list
    except Exception as e:
        print("Hiba történt: "+str(e))
        if students != None:
            students.close()
        sys.exit()
'''
2. Tanulók száma
'''
def count_students(student_list):      
    return len(student_list)

'''    
3. Mulasztott órák összesen
'''
def count_absences(student_list):      
    absences = 0
    for student in student_list:
        absences += int(student[1])
    return absences

'''
4. átlag számítás
'''
def calc_average(grade_list):         
    grade_sum = 0
    grade_count = 0
    
    for grade in grade_list:
        if grade in AVAILABLE_GRADES:
            grade_sum += int(grade)
            grade_count += 1
    
    # Egy másik megoldás 
    #     try:
    #         grade_sum += int(grade)
    #         grade_count += 1
    #     except Exception as e:
    #         pass

    results = (grade_sum/grade_count)
    return round(results,2)

'''
5. Tanuló és átlaga
'''
def calc_student_avgs(student_list):       
    averages = []
    for student in student_list:
        grades = []
        grades.append(student[2])
        grades.append(student[3])
        grades.append(student[4])
        averages.append([student[0],calc_average(grades)])
    return averages

'''
6. Tanulók átlagainak fájlba írása
'''
def write_avgs_to_file(filename,average_list):      
    fajl = None
    try:
        fajl = open(filename,"w")
        for student in average_list:
            fajl.write(student[0]+" "+str(student[1])+"\n") 
        print("File írása sikeres...")
    except Exception as e:
        print("Hiba történt: "+str(e))
    finally:
        if fajl is not None:
            fajl.close()
        
