Найти - Пользователи
Полная версия: Крик о помощи
Начало » Центр помощи » Крик о помощи
1
Pavel2903
Друзья, прошу вас о помощи, выпускной курс, учусь на лингвистике, английский и китайский язык, появился предмет программирование, используем гугл колаб, не понимаю ничего от слова совсем, для экзамена необходимо написать два кода, голосование по копленду и голосование по Шульцу, настолько просто насколько возможно, я в отчаянии, надеюсь на вашу помощь и понимание, хотя бы совет как это сделать, структура и что писать, буду безмерно благодарен каждому. Решение:
1) Функция для случайной генерации возможных предпочтений для заданного количества кандидатов и случайной генерации количества избирателей, предпочитающих каждую из цепочек предпочтений. Вход: количество кандидатов для голосования. Выход: словарь, где ключ – цепочка предпочтений, значение – количество проголосовавших за эту цепочку
2) Функция для чтения входных данных из файла (альтернативный способ получения входных данных). Вход: имя файла. Выход: словарь, где ключ – цепочка предпочтений, значение – количество проголосовавших за эту цепочку
3) Функция реализации подсчета голосов по одному из методов (см. далее в задачах). На входе функции – словарь, где ключ – цепочка предпочтений, значение – количество проголосовавших за эту цепочку. Выход: победитель; интерпретация решения.
4) Запись в файл результатов голосования.
py.user.next
Pavel2903
необходимо написать два кода, голосование по копленду и голосование по Шульцу
Найди эти методы (Шульце и Коупленда) и подробно опиши здесь.
xam1816
это не Шульце, вообще хз что, но думаю что-то в этом есть
 import random as rd
#
candidates = ['A', 'B', 'C'] # это кандидаты
#
def to_vote(candidates_lst, num_voters):
    """
    :param candidates_lst: list список кандидатов
    :param num_voters: int число избирателей
    :return: dict словарь где ключ - цепочка предпочтений, значение - кол-во проголосовавших за цепочку
    """
    out = {}
    for i in range(num_voters):
        rd.shuffle(candidates_lst)
        if tuple(candidates_lst) in out:
            out[tuple(candidates_lst)] += 1
        else:
            out[tuple(candidates_lst)] = 1
    return out
#
def calc_winner(voter_preferences_dct):
    """
    :param voter_preferences_dct: dict словарь с предпочтениями избирателей
    :return: dict отсортированный словарь где ключ - кандидат, значение - "антирейтинг"
    """
    calc_result = dict.fromkeys(list(voter_preferences_dct.keys())[0],0) # здесь подготавливается словарь с кандидатами
    for k, v in voter_preferences_dct.items():
        for i in range(len(k)):
            calc_result[k[i]] += (i*v) # антирейтинг = индекс в кортеже * кол-во избирателей,т.е чем ближе к 0 тем лучше
                                    #
    return dict(sorted(calc_result.items(), key= lambda i: i[1]))
#
pref = to_vote(candidates, 3)
for k, v in pref.items():
    print(k, '=>', v)
res = calc_winner(pref)
print("\nрезултаты выборов:")
print(res, f'победил кандидат "{list(res.keys())[0] if list(res.values())[0] < list(res.values())[1] else "...эээ, тогда тяням спичку"}"')
print("\nУРА!!!!выборы!выборы!Кандидаты пид...кхм.кхм..")
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB