def high_n_scores (количество баллов, n = 5):
Каждый игрок играет в игру несколько раз, каждый раз получая кортеж (имя, счет) за то, сколько очков этот игрок набрал в игре.Учитывая все игры, сыгранные в виде списка таких кортежей, сложите n наивысших баллов для каждого отдельного игрока в качестве общего балла для этого игрока.Создайте и верните список, который содержит кортежи (имена, итоги) для игроков и их общие баллы, отсортированные по возрастанию по имени.Если какой-то игрок сыграл меньше, чем n раз, просто сложите оценки всех игр, в которые играл этот игрок.
Код приведен ниже, но я хотел бы знать, есть ли более эффективный способ сделать это, и этотакже, похоже, не работает с помощью тестера.
def highest_n_scores(scores, n):
bill = sorted([p for (t,p) in scores if t == 'bill'])
jack = sorted([p for (t,p) in scores if t == 'jack'])
sheldon = sorted([p for (t,p) in scores if t == 'sheldon'])
tina = sorted([p for (t,p) in scores if t == 'tina'])
amy = sorted([p for (t,p) in scores if t == 'amy'])
bob = sorted([p for (t,p) in scores if t == 'bob'])
scoreBill = sum(bill[-n:])
scoreJack = sum(jack[-n:])
scoreSheldon = sum(sheldon[-n:])
scoreTina = sum(tina[-n:])
scoreAmy = sum(amy[-n:])
scoreBob = sum(bob[-n:])
return sorted([('bill', scoreBill), ('jack', scoreJack), ('sheldon', scoreSheldon), ('tina', scoreTina), ('amy', scoreAmy), ('bob', scoreBob)])
Я получаю правильный результат, но тестер для всех значений, однако, тестер, который мне дали для тестирования кода, говорит, что мой ответ неверный.
список:
[('bill', 10), ('jack', 6), ('sheldon', 3), ('tina', 2), ('amy', 3), ('sheldon', 6), ('tina', 7), ('jack', 2), ('bob', 3), ('bob', 4), ('bill', 3), ('bill', 9), ('sheldon', 5), ('amy', 2), ('jack', 7), ('sheldon', 5), ('sheldon', 7), ('bill', 1), ('bill', 9), ('sheldon', 5), ('bill', 2), ('bill', 6), ('jack', 6), ('bob', 4), ('tina', 5), ('sheldon', 4), ('sheldon', 2), ('amy', 6), ('bob', 7), ('jack', 2), ('bob', 5), ('sheldon', 9), ('jack', 5), ('amy', 9), ('bob', 7), ('tina', 6), ('tina', 2), ('amy', 7), ('jack', 10), ('tina', 4), ('bob', 5), ('jack', 10), ('bob', 7), ('jack', 5), ('amy', 4), ('amy', 8), ('bob', 4), ('bill', 8), ('bob', 6), ('tina', 6), ('amy', 9), ('bill', 4), ('jack', 2), ('amy', 2), ('amy', 4), ('sheldon', 1), ('tina', 3), ('bill', 9), ('tina', 4), ('tina', 9)] when n = 3
возвращение списка:
[('amy', 26), ('bill', 28), ('bob', 21), ('jack', 27), ('sheldon', 22), ('tina', 22)]