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


import csv

def load_kings(f):
    a = []
    with open(f, encoding='utf-8') as g:
        h = csv.reader(g, delimiter=';')
        next(h)
        for i in h:
            if not i:
                continue
            a.append((i[0], int(i[1]), int(i[2])))
    return a


def _c(y):
    return (y - 1) // 100 + 1


def filter_by_century(a, b):
    c = []
    for i in a:
        d = _c(i[1])
        e = _c(i[2])
        if d <= b <= e:
            c.append(i[0])
    return sorted(c)


def longest_ruling(a, n):
    b = [(i[0], i[2] - i[1]) for i in a]
    b.sort(key=lambda x: (-x[1], x[0]))
    return [i[0] for i in b[:n]]


def report(a):
    b = len(a)
    c = [i[2] - i[1] for i in a]
    d = sum(c) // b
    e = longest_ruling(a, 1)[0]
    return f"Всего правителей: {b}\nСредняя длина правления: {d} лет\nСамый долгий правитель: {e}"