Witajcie! Chciałbym, aby program przechowywał na liście party_list obiekty klasy Party() z wartościami atrybutów nadanymi przez użytkownika. Następnie, aby policzył sumę wartości z atrybutów votes. Okazuje się jednak, że program jakby mnożył wartość atrybutu ostatniowprowadzonego obiektu przez liczbę obiektów na liście. No coś dziwnego. Czy powiecie, czemu tak się dzieje? Co mogę zrobić, aby osiągnąć ten cel, czyli zesumować poprawnie?
Oto kod main:
import P
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? "))
system = int(input("""
W jakim systemie zostaną przeliczone głosy?
d'Hondta - wybierz 1
Sainte-Lague - wybierz 2
Hare'a-Niemayera - wybierz 3
"""))
party_list=[]
x=0
while x < hm_parties:
p=P.Party()
party_list.append(p)
x += 1
if system == 1:
total = 0
for x in party_list:
total = total + p.votes
print(total)
elif system == 2:
print("S-L")
else:
print("H-N")
A tu moduł własny:
class Party(object):
def __init__(self):
self.ask_party_name()
self.ask_party_votes()
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 + ": "))
I 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? 3
W jakim systemie zostaną przeliczone głosy?
d'Hondta - wybierz 1
Sainte-Lague - wybierz 2
Hare'a-Niemayera - wybierz 3
1
Podaj nazwę lub skrót partii: a
Podaj liczbę głosów, którą zdobyła partia a: 200
Podaj nazwę lub skrót partii: b
Podaj liczbę głosów, którą zdobyła partia b: 300
Podaj nazwę lub skrót partii: c
Podaj liczbę głosów, którą zdobyła partia c: 500
1500
Process finished with exit code 0