Skip to content

Instantly share code, notes, and snippets.

@z2s8
Created February 24, 2016 23:47
Show Gist options
  • Select an option

  • Save z2s8/6af0c391a16cc136ee2d to your computer and use it in GitHub Desktop.

Select an option

Save z2s8/6af0c391a16cc136ee2d to your computer and use it in GitHub Desktop.

Revisions

  1. z2s8 created this gist Feb 24, 2016.
    93 changes: 93 additions & 0 deletions valasztas.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,93 @@
    from collections import namedtuple
    from decimal import Decimal

    def reszfeladat(n): # sorszam kiirasa
    print('{}. feladat'.format(n))

    def kepviselo_ki(kepviselo): # kimenet formazas osszes tulajdonsagra
    part = kepviselo.part if kepviselo.part != '-' else 'fuggetlen'
    return '{} {} {} {}'.format(kepviselo.kerulet, kepviselo.v_nev,
    kepviselo.u_nev, part)

    reszfeladat(1)
    Kepviselo = namedtuple('Kepviselo', 'kerulet, voksok, v_nev, u_nev, part')
    kepviselok = [] # ^ kepviselo tipus
    with open('szavazatok.txt') as be:
    sorok = be.read().splitlines() # ujsor karakter nelkul
    for sor in sorok:
    mezok = sor.split(' ')
    kepviselok.append(Kepviselo(
    int(mezok[0]), int(mezok[1]), mezok[2], mezok[3], mezok[4]))

    reszfeladat(2)
    print('A helyhatosagi valasztason {} kepviselojelolt indult.'
    .format(len(kepviselok)))

    reszfeladat(3)
    v_nev = input('Kerem a kepviselojelolt vezeteknevet! ')
    u_nev = input('Kerem a kepviselojelolt utonevet! ')
    voksok = -1 # senki?
    for kepviselo in kepviselok:
    if kepviselo.v_nev == v_nev and kepviselo.u_nev == u_nev:
    voksok = kepviselo.voksok # megvan a kepviselo

    if voksok == -1: # senki.
    print('Ilyen nevu kepviselojelolt nem szerepel a nyilvantartasban!')
    else:
    print('A kepviselojelolt {} szavazatot kapott.'.format(voksok))

    reszfeladat(4)
    lakosok = 12345 # szavazasra jogosultak
    szavazok = 0 # akik szavaztak
    for kepviselo in kepviselok:
    szavazok += kepviselo.voksok

    reszvetel = round(szavazok * 100 / Decimal(lakosok), 2) # Decimal -> pontossag
    print('A valasztason {} allampolgar, a jogosultak {}%-a vett reszt.'
    .format(szavazok, reszvetel))

    reszfeladat(5)
    print('A partokra leadott szavazatok aranya:')
    partok = {}
    for kepviselo in kepviselok:
    partok[kepviselo.part] = partok.get(kepviselo.part, 0) + kepviselo.voksok
    # ^ alapertelmezett ertek

    for part, voksok in partok.items():
    partnev = 'Fuggetlen jeloltek'
    if part == 'ZEP':
    partnev = 'Zoldsegevok Partja'
    elif part == 'TISZ':
    partnev = 'Tejivok Szovetsege'
    elif part == 'HEP':
    partnev = 'Husevok Partja' # this is SPARTAAA
    elif part == 'GYEP':
    partnev = 'Gyumolcsevok Partja'

    partresz = round(voksok * 100 / Decimal(szavazok), 2)
    print('{} = {}%'.format(partnev, partresz))

    reszfeladat(6)
    legnepszerubbek = [kepviselok[0]] # eddig..
    for kepviselo in kepviselok:
    if kepviselo.voksok > legnepszerubbek[0].voksok:
    legnepszerubbek = [kepviselo]
    elif kepviselo.voksok == legnepszerubbek[0].voksok:
    legnepszerubbek.append(kepviselo)

    print('A legtobb szavazatot kapott jelolt(ek):')
    for kepviselo in legnepszerubbek: # '-' -> 'fuggetlen'
    part = kepviselo.part if kepviselo.part != '-' else 'fuggetlen'
    print('{} {} {}'.format(kepviselo.v_nev, kepviselo.u_nev, part))

    reszfeladat(7)
    gyoztesek = {}
    for kepviselo in kepviselok:
    eddigi_gyoztes = gyoztesek.get(kepviselo.kerulet, Kepviselo(0, 0, 0, 0, -1))
    # legnepszerutlenebb kepviselo ^
    if kepviselo.voksok > eddigi_gyoztes.voksok:
    gyoztesek[kepviselo.kerulet] = kepviselo

    with open('kepviselok.txt', 'w') as ki:
    for kepviselo in gyoztesek.values():
    print(kepviselo_ki(kepviselo), file=ki)