import matplotlib.pyplot as plt
plik = open('dane_wybory.txt')
dane = []
suma = []
for linia in plik: #odczyt danych z pliku i ich formatowanie
linia=linia.strip().split()
okreg=linia[0] #pobranie nazy okręgu
linia=[int(l) for l in linia[1:]] #zamiana tekstu na liczby bez okręgu
linia.insert(0, okreg) #dodanie na początku okręgu
dane.append(linia) #dodanie sformatowanych danych do zbioru
def zad1(tab):
x, y = [],[]
for i in range(0,len(tab)):
liczba_glosow = 0
for j in range(1,6):
liczba_glosow+=tab[i][j]
x.append(dane[i][0])
y.append(liczba_glosow)#suma głosów w okręgu
suma.append(liczba_glosow)
plt.bar(x, y)
plt.title('Rozkład głosów w kraju', fontsize=16, color='#323232')
plt.show()
def zad2(tab):
miasteczko = [['',0],['',0],['',0],['',0],['',0]]
for i in range(0, len(tab)):
for j in range(1,6):
wynik=tab[i][j]
if(wynik/suma[i]>miasteczko[j-1][1]):
miasteczko[j-1][0]=tab[i][0]
miasteczko[j-1][1]=wynik/suma[i]
for i in range(0,5):
print("K",i,":",miasteczko[i][0])
def ile_mandatow(glosy, liczba_mandatow):
mandaty=[0,0,0,0,0]
while liczba_mandatow>0:
max=glosy[0]/(2*mandaty[0]+1)
index=0
for i in range(1, len(glosy)):
if int(glosy[i])/(2*mandaty[i]+1)>max:
max=glosy[i]/(2*mandaty[i]+1)
index=i
mandaty[index]+=1
liczba_mandatow-=1
return(mandaty)
def zad3(tab):
mandaty_max=[0,0,0,0,0]
for wynik in tab:
mandaty=ile_mandatow(wynik[1:],20)
for i in range(0, len(mandaty)):
if mandaty[i]>mandaty_max[i]:
mandaty_max[i]=mandaty[i]
for i in range(0, len(mandaty_max)):
print("K",i+1,":",mandaty_max[i])
def zad4(tab):
print("Mandaty przyznane standardowo")
mandaty_przyznane=[0,0,0,0,0]
for wynik in tab:
mandaty=ile_mandatow(wynik[1:],20)
for i in range(0, len(mandaty)):
mandaty_przyznane[i]+=mandaty[i]
for i in range(0, len(mandaty_przyznane)):
print("K",i+1,":",mandaty_przyznane[i])
regiony=[] #przygotowanie danych dla regionów
region=tab[0][1:]
i=1
for miasto in tab[1:]:
miasto=miasto[1:]
if i%5==0:
regiony.append(region)
region=miasto
i+=1
continue
for j in range(0,5):
region[j]+=miasto[j]
i+=1
regiony.append(region)
print("Mandaty w regionach")
mandaty_przyznane=[0,0,0,0,0]
for wynik in regiony:
mandaty=ile_mandatow(wynik,100)
for i in range(0, len(mandaty)):
mandaty_przyznane[i]+=mandaty[i]
for i in range(0, len(mandaty_przyznane)):
print("K",i+1,":",mandaty_przyznane[i])
def zad5():
glosy=100000
liczba_mandatow=[20,40,100]
for mandaty in liczba_mandatow:
for i in range(int(glosy/2), 1, -1):
if ile_mandatow([i, glosy-i],mandaty)[0]<mandaty/2:
print("Minimalna liczba wyborców",i+1,"do uzyskania",int(mandaty/2),"mandatów.")
break
print("Zadanie 1")
zad1(dane)
print("Zadanie 2")
zad2(dane)
print("Zadanie 3")
zad3(dane)
print("Zadanie 4")
zad4(dane)
print("Zadanie 5")
zad5()