Загрузка данных



def add_student(student_name, student_age):
    try:
        students.append({
            'name': student_name,
            'age': int(student_age),
            'marks': []
        })
        print(f'New student #{len(students) - 1} added')
    except ValueError:
        print(f'Student age {student_age} is incorrect')


def get_student_by_num(student_id):
    try:
        return students[int(student_id)]
    except ValueError:
        print(f'Student id {student_id} must be an integer')
        return {}
    except IndexError:
        print(f'Student #{student_id} not existing')
        return {}


def add_student_mark(student_id, student_mark):
    student = get_student_by_num(student_id)
    student['marks'].append(student_mark)


def get_student_average(student_id):
    student = get_student_by_num(student_id)
    marks = student['marks']
    for i in range(len(marks)):
        if marks[i] == '2':
            marks[i] = 10
        elif marks[i] == '3':
            marks[i] = 30
        elif marks[i] == '4':
            marks[i] = 60
        elif marks[i] == '5':
            marks[i] = 90
        elif marks[i] == '5+':
            marks[i] = 100
    return round(sum(marks) / len(marks), 1)












# Решение задания
def add_student(student_name, student_age):
    try:
        students.append({
            'name': student_name,
            'age': int(student_age),
            'marks': []
        })
        print(f'New student #{len(students) - 1} added')
    except ValueError:
        print(f'Student age {student_age} is incorrect')


def get_student_by_num(student_id):
    try:
        return students[int(student_id)]
    except ValueError:
        print(f'Student id {student_id} must be an integer')
        return {}
    except IndexError:
        print(f'Student #{student_id} not existing')
        return {}


def add_student_mark(student_id, student_mark):
    try:
        student = get_student_by_num(student_id)
        student['marks'].append(student_mark)
    except KeyError:
        print(f'Student #{student_id} data is invalid')


def get_student_average(student_id):
    try:
        student = get_student_by_num(student_id)
        marks = student['marks']
        if marks == []:
            return 0
        for i in range(len(marks)):
            if marks[i] == '2':
                marks[i] = 10
            elif marks[i] == '3':
                marks[i] = 30
            elif marks[i] == '4':
                marks[i] = 60
            elif marks[i] == '5':
                marks[i] = 90
            elif marks[i] == '5+':
                marks[i] = 100
        return round(sum(marks) / len(marks), 1)
    except KeyError:
        print(f'Student #{student_id} data is invalid')
        return 0
    except TypeError:
        print(f'Student #{student_id} has non-integer marks')
        return 0