Привет, ребята, я пытаюсь написать код для проблемы, и у меня возникают проблемы с выводом, как я должен это делать.
Поэтому мне нужно написать код для мгновенного повторного голосования или системы альтернативного голосования. в основном происходит то, что есть вложенный список, где каждый список внутри представляет собой бюллетень с ранжированными голосами. Так, например, если список выглядит так: ['РЕСПУБЛИКАНСКИЙ', 'ДЕМОКРАТИЧЕСКИЙ', 'ЗЕЛЕНЫЙ'] это означает, что для этого голосования первым был выбран республиканский, затем демократический, а затем зеленый. Таким образом, по сути, во вложенном списке есть несколько бюллетеней, и функция должна будет создать подсчет для всех упомянутых партий, который покажет, сколько бюллетеней было выбрано конкретной партией первым. Например, если есть 6 бюллетеней, и для трех или более из них республиканцы являются первым выбором, функция должна быть завершена. Если ни одна партия не имеет большинства, то партия с наименьшим количеством голосов исключается, и вы пересчитываете бюллетени, в которых эта партия была первым выбором, но на этот раз вы учитываете второй выбор. Вы продолжаете делать это до тех пор, пока не получите большинство и не вернете словарь со счетом для всех сторон (количество будет равно 0, если стороны будут устранены, но должны быть возвращены).
Вот пример:
>>> count_irv([[’REP’], [’DEM’, ’REP’, ’LIB’], [’GRN’,’REP’], [’GRN’], [’REP’, ’DEM’], [’LIB’, ’DEM’, ’REP’], [’LIB’, ’CON’], [’GRN’, ’DEM’], [’REP’]])
{’LIB’: 0, ’CON’: 0, ’DEM’: 0, ’GRN’: 3, ’REP’: 5}
Это код, который у меня есть до сих пор:
def count_irv(ballots)
count = {}
for list in ballots:
for element in list:
if element in count:
count[element] += 1
else:
count[element] = 1
for key in count:
if count[key] >= len(ballots):
return count
else:
count[last_place(count)] = 0
return count
Где функция last_place
просто возвращает ключ в словаре с наименьшим значением.
Используя приведенный выше код, для предоставленного примера код возвращает:
{'REP': 6, 'DEM': 4, 'LIB': 3, 'GRN': 3, 'CON': 0}
По сути, мне нужна помощь, чтобы выяснить, как заставить мой код продолжать зацикливаться, пока не будет партия с большинством голосов.
Кроме того, я новичок здесь и пока наслаждаюсь своим опытом. Однако кто-то сообщил о моем последнем сообщении за то, что он неправильно разместил код, и я был забанен примерно на день, поэтому я был бы признателен, если бы мне нужно было что-то делать по-другому, пожалуйста, оставьте это в комментариях ниже, и я обязательно внесите соответствующие правки и учтите это в моем следующем посте. Спасибо!
meta
, а не в группуPython
и другие технические группы. - person Prune   schedule 13.11.2019