import csv
def load_kings(a):
b = []
with open(a, encoding='utf-8', newline='') as c:
d = csv.DictReader(c, delimiter=';')
for e in d:
b.append((
e['king'],
int(e['start_year']),
int(e['end_year'])
))
return b
def filter_by_century(a, century):
b = (century - 1) * 100
c = century * 100
d = [
e[0]
for e in a
if e[1] < c and e[2] >= b
]
return sorted(d)
def longest_ruling(a, n):
b = sorted(
a,
key=lambda c: (-(c[2] - c[1]), c[0])
)
return [c[0] for c in b[:n]]
def report(a):
b = len(a)
c = sum(d[2] - d[1] for d in a) // b
d = longest_ruling(a, 1)[0]
return (
f'Всего правителей: {b}\n'
f'Средняя длина правления: {c} лет\n'
f'Самый долгий правитель: {d}'
)