Оранжевая шапочка с использованием Python
Мы представляем десятки бэтсменов в последовательности матчей в двухуровневом словаре следующим образом:
{'match1': {'player1':57, 'player2':38}, 'match2': {'player3':9, 'player1': 42}, 'match3': {'player2': 41, 'player4': 63, 'player3':91}
Каждый матч идентифицируется строкой, как и каждый игрок. Все оценки-это целые числа. Имена, связанные с матчами, не являются фиксированными (здесь это "матч1", "матч2", "матч3"), как и имена игроков. Игроку не обязательно иметь счет, записанный во всех матчах.
Определите функцию Python orangecap(d), которая считывает словарь d этой формы и идентифицирует игрока с наибольшим общим счетом. Ваша функция должна возвращать пару (playername,topscore), где playername-это строка, имя игрока с наибольшим количеством баллов, а topscore-целое число, общее количество баллов playername.
Входные данные будут таковы, что никогда не будет никаких связей для самого высокого общего балла.
Например:
>>> orangecap({'match1':{'player1': 57, 'player2':38}, 'match2': {'player3':9, 'player1': 42}, 'match3': {'player2':41, 'player4': 63, 'player3':91}})
('player3', 100)
>>> orangecap({'test1': {'Ashwin':84, 'Kohli': 120}, 'test2': {'ashwin':59, 'Pujara':42}})
("Коли", 120)
Что я уже пробовал:
л=[]
Р=[]
s1=[]
s2=[]
деф orangecap(д):
t=0
температура=-1
если len(d)==0:
вернуть {}
для z В d:
на х ре[з]:
п. присоединить(х)
a=d[z][x]
л.добавить(а)
для меня в п:
темп=темп+1
если len(s1)==0:
С1.добавить(я)
s2.добавить(l[0])
еще:
для j в диапазоне(len(s1)):
если i==s1[j]:
s2[j]=s2[j]+l[temp]
t=t+1
если t==0:
С1.добавить(я)
С2.добавление(д[стр. индекс(I)])
t=0
вернуться С1[С2.индекс(Макс(С2))] Макс(С2)
Я сделал всю программу, но все еще могу очистить только 9 тестовых случаев из 10.
Даже я пробовал его по-разному, но все равно он очищает только 9 частных тестовых наборов из 10
Richard MacCutchan
Вам нужно объяснить, что не работает и почему. Это также поможет, если вы правильно отформатируете свой код с помощью тегов <pre>. Вы можете отредактировать свой вопрос, чтобы сделать и то, и другое.