Funkcja sum() w klasach

Funkcja sum() w klasach
P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
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.

Kopiuj
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()
Ktos
  • Rejestracja: dni
  • Ostatnio: dni
6
Kopiuj
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().

Althorion
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1620
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.

P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
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 :)

Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.