• 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?

Object Storage Arubacloud
0 głosów
108 wizyt
pytanie zadane 20 października 2018 w Python przez El Lirón Obywatel (1,320 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,100 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,320 p.)
Dziękuję! Działa ;)

Podobne pytania

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

92,555 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,941 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...