Generalnie po pierwsze masz błąd: bo w sytuacji kiedy aktualna wartosc tablicy jest równa 0, to w tym wypadku przestawiasz się na następny element( będący w kolumnie, ale w następnym rekordzie) i ustawiassz mu na sztywno wartość 0.
a[i+1][j] = 0 // przypisujesz zero
To jest kod który zwróci: liczbę 18- czyli sume wszystkich liczb większych od zera.
a = [[0,1,1,2],[1,5,0,0],[2,0,3,3]]
sum = 0
for i in range(len(a)):
for j in range(len(a[i])):
if a[i][j] == 0:
continue
else:
sum += a[i][j]
#print(matrix[i][j],end =" ")
#print()
print(sum)
Mam zsumować cyfry w tablicy dwuwymiarowej, ale tylko te, które nie znajdują się poniżej zera
Jak wynik dla tej 2-wymiarowej tablicy ma byc 9, skoro masz sumować liczby dodanie... :) a ich suma jest równa 18 ?
Analizując sposób zadania, rozumiem że u chodzi o występowanie elementu pod narzędnym zerem w tej samej kolumnie? Wtedy problemem jest fakt tego, że kiedy na ostatnim wierszu [2,0,3,3] wpada Ci wartość zero, nie istnieje wtedy następny wiersz 'i+1' gdyż ten jest ostatnim.
Musisz dodac odpowiednie warunki sprawdzające aktualny stan 'iteratora'
Pomysł na rozwiązanie z racji, że nie piszę w pythonie :D i serio cięzko mi z nim pracować miałem taki, że przechodząc przez aktualna tablice wszystkie zera ustawiam na -1 :)
W wyniku otrzymam to czego nie liczę
a = [[0,1,1,2],
[1,5,0,0],
[2,0,3,3]]
sum = 0
for i in range(len(a)):
for j in range(len(a[i])):
if a[i][j] == 0 and i != len(a[i])-2:
a[i][j]= -1
a[i+1][j]=0
else:
if len(a[i])-2 == i:
if a[i][j] == 0:
a[i][j]= -1
else:
continue
#print()
print(a)
[[-1, 1, 1, 2], [-1, 5, -1, -1], [-1, -1, -1, -1]]
i teraz sumuje tam gdzie wartości NIE sa rowne -1 [ wynikiem jest liczba 9
nalezy miec na uwadze fakt, ze jesli nadzedny element jest 0, to zerujesz podrzędny co przekłada sie ze następny tez jest zerowany kaskadowo
Rozwiązanie to tylko sugestia, daleka jest od 'super rozwiązania' gdyż ten język jest mi nieznany i pierwszy raz w nim wykonywałem działania, ciekawa sprawa, duża dowolność, sens jednak zachowany i pomysł jest.
nadal jednak\ warto mieć na uwadzę wpływ nadrzędnika na kolumne