Funkcja sum() w klasach

0

Witam ponownie po dłuższym czasie.... W poniższym kodzie zrobionym w klasie, mam problem z samym sumowaniem liczb dodanych do magazynu. Nie sumuje mi po prostu(suma łaczna wynosi: 0). Co przeoczyłem w tej klasie Magazyn ? Niby prosty , króciutki kod . Błedu nie mam żadnego w trakcie wykonywania kodu.

class Magazyn:
    magazyn = []

    def DodanieDoMagazynu(self,dodanie):
        self.magazyn.append(dodanie)
        print (f'Dodałeś do magazynu: {dodanie}')
        print(self.magazyn)
    
    def sumamagazyn(self):
        self.magazyn = []
        suma = sum(self.magazyn)
        
        print(f'Suma łaczna wynosi: {suma}')
        

while True:
    zloze = Magazyn()
    zloze.DodanieDoMagazynu(input('Podaj liczbę: '))
    zloze.sumamagazyn()
6
self.magazyn = []
suma = sum(self.magazyn)

No ciekawe czemu jest tutaj zero elementów... zupełnie jakbyś ustawiał magazyn na pusty ;)

Czyścisz magazyn sobie za każdym wywołaniem sumamagazyn().

5

A oprócz tego, co Ktoś napisał wyżej, input zwraca stringa, nie liczbę. Zatem wkładasz do magazynu stringi — napisy — a nie liczby, i potem próbujesz sumować te napisy.

Nie wiem, co by miała oznaczać suma dowolnych napisów. Python też nie wie, więc jak będziesz miał niepusty magazyn napisów, to się wywali na sumowaniu.

1

Dzięki Wam za wskazówki... Gapa ze mnie. Szczególnie z tym co podpowiedział @Althorion , i zmyliło mnie brak błędów , które miałem przy wywołaniu kodu . :) Teraz poprawiłem co trzeba i działa :)

class Magazyn:
    magazyn = []

    def DodanieDoMagazynu(self,dodanie):
        self.magazyn.append(dodanie)
        print (f'Dodałeś do magazynu: {dodanie}')
        print(self.magazyn)
    
    def sumamagazyn(self):
        suma = sum(self.magazyn)
        
        print(f'Suma łaczna wynosi: {suma}')
        

while True:
    zloze = Magazyn()
    zloze.DodanieDoMagazynu(int(input('Podaj liczbę: ')))
    zloze.sumamagazyn()

Temat zamykam. Program działa jak należy. Dzięki jeszcze raz

1 użytkowników online, w tym zalogowanych: 0, gości: 1