Вот, что получилось у меня. Конечно можно сделать и лучше, но в таком варианте все "по полочкам"
Python:
l = []
names = []
while True: #Получаем список состоящий типа [имя, балл]
a = input()
l.append(a.split(", "))
if a == "конец":
break
l.pop(-1)
for i in l:
if i[0] not in names: #Получаем список из имен [имя, имя, имя]
names.append(i[0])
lis = []
for name in names:
lis.append({'name':name, 'points':[], 'average':0}) #Составляем словари c ключами имя, баллы и средний балл
for x, one in enumerate(lis): #Добавляем баллы каждому человеку
for y, el in enumerate(l):
if l[y][0] == lis[x]['name']:
lis[x]['points'].append(l[y][1])
for one in lis:
summ = 0
for dig in one['points']:
summ += int(dig)
one['average'] = summ / len(one['points']) #Считаем средний балл каждому
highest = {'name':None, 'points':None, 'average':0} #Находим лучшего
for one in lis:
if one['average'] > highest['average']:
highest = one
points_str = '' #Формируем строку из баллов лучшего
for x, one in enumerate(highest['points']):
if x == len(highest['points']) - 1:
points_str = points_str + one + '.'
else:
points_str = points_str + one + ', '
print(f"{highest['name']}, {highest['average']}: {points_str}") #Выводим
Со словарями здесь будет проще, так как мы каждому человеку можем присвоить его баллы и средний балл.
Сейчас постараюсь все "разжевать":
1) Сначала я составил словари c ключами "имя", "баллы" и "средний балл" для каждого из представленных в вводе людей
Вставляя примеры из условия, мы получим:
Python:
[{'name': 'Клифф', 'points': [], 'average': 0}, {'name': 'Лиза', 'points': [], 'average': 0}, {'name': 'Сэм', 'points': [], 'average': 0}]
2) Далее я раскидал каждому его баллы и получилось:
Python:
[{'name': 'Клифф', 'points': ['1', '1', '1', '2'], 'average': 0}, {'name': 'Лиза', 'points': ['3', '5', '3', '4'], 'average': 0}, {'name': 'Сэм', 'points': ['5', '5', '4', '5'], 'average': 0}]
3)Потом я посчитал каждому его средний балл:
Python:
[{'name': 'Клифф', 'points': ['1', '1', '1', '2'], 'average': 1.25}, {'name': 'Лиза', 'points': ['3', '5', '3', '4'], 'average': 3.75}, {'name': 'Сэм', 'points': ['5', '5', '4', '5'], 'average': 4.75}]
4) Потом я нахожу лучшего из этого списка, сравнивая средние баллы
5) Под конец я формирую строку, для того чтобы потом вывести баллы на экран
6) Ну и вывожу всю информацию, используя форматирование и строку, ранее мною созданную