Тема: обробка двовимірних масивів
добрий день, допоможіть будь ласка покращити код до завдання. Чи можна зробити це легшим шляхом?
Заповнити матрицю випадковими числами. Розмістити на головній діагоналі
суми елементів, які розміщені на діагоналях, перпендикулярних до головної.
from random import randint
m = int(input('Кількість рядків: '))
M = [[ randint(0, 20) for j in range(m)] for i in range(m)]
for i in range(m):
print(M[i])
h = 2 #для індексу стовпців
k = 1 #лічильник для чогось
l = []
h = 2 #лічильник для елементів діагоналей
p = 0 #для сум
g = 1 #для діагоналей
f = 0 #лічильник для сум
s = 1 #і це тоже
for i in range (m-1): # шукає потрібні елементи
while h<=(m-1):
if m<=4:
l.append(M[i][h]+M[h][i])
else:
l.append(M[i][h])
l.append(M[h][i])
h+=2
h = 2+k
k+=1
print(l)
if m > 4 and m%2==0:
while g<=(m-2): #елементи діагоналі
f = 0
p = 0
if g>((m-2)/2):
s-=2
while f<=s:
p += l[0]
l.pop(0)
f+=1
else:
while f<=s:
p += l[0]
l.pop(0)
f+=1
s+=2
M[g][g]=p
g+=1
elif m>4 and m%2 !=0:
while g<=(m-2): #елементи діагоналі
f = 0
p = 0
if g>(m//2):
s-=4
while f<=s:
p += l[0]
l.pop(0)
f+=1
else:
while f<=s:
p += l[0]
l.pop(0)
f+=1
s+=2
M[g][g]=p
print(M[g])
g+=1
else:
while g<=(m-2):
M[g][g]=l[0]
l.pop(0)
g+=1
for i in range(m):
print(M[i])