Member 13977236 Ответов: 1

Оранжевая шапочка с использованием 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>. Вы можете отредактировать свой вопрос, чтобы сделать и то, и другое.

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
Я сделал всю программу, но все еще могу очистить только 9 тестовых случаев из 10.

А как насчет того, чтобы посмотреть, как работает ваш код ?

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Обратная сторона этого решения:
- Это DIY, вы один отслеживаете проблему и находите ее корни, которые ведут к решению.
Положительная сторона этого решения:
- Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.

Вторичное воздействие
- Вы будете гордиться тем, что сами находите Жуков.
- Ваши навыки обучения улучшатся.

Вы должны довольно быстро найти, что не так.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb – интерактивный отладчик - Python модуль недели[^]
Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.