• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego wartość liczbowa atrybutów tych obiektów na liście nie jest sumowana prawidłowo?

VPS Starter Arubacloud
0 głosów
130 wizyt
pytanie zadane 20 października 2018 w Python przez El Lirón Obywatel (1,350 p.)

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

 

1 odpowiedź

+1 głos
odpowiedź 20 października 2018 przez Tpk Nałogowiec (40,220 p.)
wybrane 21 października 2018 przez El Lirón
 
Najlepsza

Ogólnie rzecz biorąc kod jest ok, pomyliłeś się chyba pod koniec przy:

if system == 1:
    total = 0
    for p in party_list:
        total = total  + p.votes
    print(total)

W twoim kodzie iterujesz po x zamiast p (jak wyżej) a chcesz odczytywać właściwości obiektów.

1
komentarz 21 października 2018 przez El Lirón Obywatel (1,350 p.)
Dziękuję! Działa ;)

Podobne pytania

0 głosów
1 odpowiedź 239 wizyt
pytanie zadane 31 października 2018 w Python przez El Lirón Obywatel (1,350 p.)
0 głosów
1 odpowiedź 241 wizyt
0 głosów
1 odpowiedź 588 wizyt
pytanie zadane 31 sierpnia 2016 w Java przez Jonki Dyskutant (8,180 p.)

93,020 zapytań

141,985 odpowiedzi

321,284 komentarzy

62,366 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...