Skip to content

Instantly share code, notes, and snippets.

@z2s8
Created February 24, 2016 23:47
Show Gist options
  • Save z2s8/6af0c391a16cc136ee2d to your computer and use it in GitHub Desktop.
Save z2s8/6af0c391a16cc136ee2d to your computer and use it in GitHub Desktop.
2013 majus emelt prog
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment