Witajcie! Dlaczego tak się dzieje, co mogę zrobić (opcja int(quotient) w 43 linii nie pomaga) i czy w ogóle coś trzeba robić, skoro program idzie dalej? Co ciekawe: test3 się nie wykonuje..
Oto kod main:
import P
#user gives info about electoral district
hm_seats=int(input("Ile mandatów jest możliwych do zdobycia w tym okręgu? "))
hm_parties=int(input("Ile partii wzięło udział w wyborach w tym okręgu? "))
party_list=[]
x=0
while x < hm_parties:
p=P.Party()
party_list.append(p)
x += 1
system = int(input("""
W jakim systemie zostaną przeliczone głosy?
d'Hondta - wybierz 1
Sainte-Lague - wybierz 2
Hare'a-Niemayera - wybierz 3
"""))
scope=[1, 2, 3]
while system not in scope:
system = int(input("""
Wybierz 1, 2 lub 3
d'Hondta - wybierz 1
Sainte-Lague - wybierz 2
Hare'a-Niemayera - wybierz 3
"""))
# calculations in d'Hondt system
## creatig quotients' lists for each party
if system == 1:
for p in party_list:
divisor = 1
x=0
while x < hm_seats:
quotient = p.votes/divisor
int(quotient)
p.quotients_list.append(quotient)
divisor += 1
x += 1
print("test")
print(party_list[0].quotients_list)
print(party_list[1].quotients_list)
## creating list of all qoutients
all_quotients = []
for p in party_list:
for quotient in p.quotients_list:
all_quotients.append(quotient)
print("test2")
print(all_quotients)
## looking for biggests quotients
winning_quotients = []
the_biggest = party_list[0].quotients_list[0]
for p in party_list:
for quotient in p.quotients_list:
if the_biggest < p.quotients_list[quotient]:
the_biggest = p.qoutients_list[quotient]
winning_quotients.append(the_biggest)
print("test3")
print(the_biggest)
To klasa Party:
class Party(object):
def __init__(self):
self.ask_party_name()
self.ask_party_votes()
self.seats = 0
self.quotients_list = []
def ask_party_name(self):
self.party_name=input("Podaj nazwę lub skrót partii: ")
def ask_party_votes(self):
self.votes=int(input("Podaj liczbę głosów, którą zdobyła partia " + self.party_name + ": "))
A oto output:
Ile mandatów jest możliwych do zdobycia w tym okręgu? 3
Ile partii wzięło udział w wyborach w tym okręgu? 2
Podaj nazwę lub skrót partii: A
Podaj liczbę głosów, którą zdobyła partia A: 90
Podaj nazwę lub skrót partii: B
Podaj liczbę głosów, którą zdobyła partia B: 120
W jakim systemie zostaną przeliczone głosy?
d'Hondta - wybierz 1
Sainte-Lague - wybierz 2
Hare'a-Niemayera - wybierz 3
1
Traceback (most recent call last):
File "C:/Users/Michał/PycharmProjects/KalkulatorWyborczy/Main.py", line 70, in <module>
if the_biggest < p.quotients_list[quotient]:
TypeError: list indices must be integers or slices, not float
test
[90.0, 45.0, 30.0]
[120.0, 60.0, 40.0]
test2
[90.0, 45.0, 30.0, 120.0, 60.0, 40.0]
Process finished with exit code 1