Найти - Пользователи
Полная версия: Вложенные списки
Начало » Python для новичков » Вложенные списки
1
Zay
Есть задача , нужно посчитать сумму элементов двумерного квадратного (NxN) списка, которые расположены на главной диагонали.
Программа сперва принимает на вход число N (N<=15) - количество строк и столбцов в списке, а затем в N строках записаны элементы списка.

Такую проверку делает платформа:
Sample Input 1:

2
1 2
3 4
То есть наполнение матрицы делается построчно через пробел.
В моём коде ввод происходит построчно. Дополнительно сделал вывод что бы посмотреть вид матрицы.
 a=[]
n=int(input())
s=0
for i in range(n):
  b=[]
  for j in range(n):  
    q=int(input())
    b.append(q)
  a.append(b)
for i in a:
  print(i,end='')
  print()
for i in range(n):
  for j in range(n):
    if i==j:
      s+=a[i][j]
print(s)
мне нужно ввести каждую строку целиком через пробе одной строкой.
вместо:
 q=int(input())
ввожу:
q=list(map(int, input().split()))
программа работает не корректно…
В чем моя ошибка?, пожалуйста не надо предлагать свои коды, исправьте мой
xam1816
 n=int(input())
s=0
b=[]
for j in range(n):
	q=list(map(int, input().split()))
	b.append(q)
print(b)
for i in range(n):
  for j in range(n):
    if i==j:
      s+=b[i][j]
print(s)
Zay
Можно с комментарием если не трудно, не очень пойму логику
Zay
Всё спасибо. Я понял всё, но получается что код только для таблиц в которых 2 строки и неограниченное количество вложенностей в каждую строку? Квадратная таблица не залаживается в коде.
AD0DE412
вам нужно проитись по спискам состовляющим вашу матрицу и брать поиндексно элементы из них со смещением в 1
добовляя найденые элементы в список (который и будем обсчитывать) после чего сумировать все элементы получившегося списка sum()

упс главная диаганаль не то что выше
это https://ru.wikipedia.org/wiki/%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C

ок тогда код от xam1816


зы
ввод
 In [1]: q = [int(i) for i in input().split(' ')]
1 2 3 4 4 5
In [2]: print(q)
[1, 2, 3, 4, 4, 5]
In [3]:

да нет все правильно … после чего сумировать все элементы получившегося списка sum()

py.user.next
Отдельно делаешь ввод массива
  
>>> def input_array():
...     rows = int(input())
...     out = [list(map(int, input().split()))
...            for _ in range(rows)]
...     return out
... 
>>> input_array()
2
1 2
3 4
[[1, 2], [3, 4]]
>>> 
>>> input_array()
3
1 2 3
4 5 6
7 8 9
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>>

Отдельно делаешь подсчёт суммы элементов на главной диагонали любой матрицы (не только квадратной)
  
>>> def get_maindiag_sum(mtx):
...     return sum(
...         mtx[i][j]
...         for i in range(len(mtx))
...         for j in range(len(mtx[0]))
...         if i == j
...     )
... 
>>> get_maindiag_sum([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
15
>>> get_maindiag_sum([[1, 2, 3], [4, 5, 6]])
6
>>>

Потом собираешь всё, сделанное ранее, вместе
  
>>> def input_array():
...     rows = int(input())
...     out = [list(map(int, input().split()))
...            for _ in range(rows)]
...     return out
... 
>>> def get_maindiag_sum(mtx):
...     return sum(
...         mtx[i][j]
...         for i in range(len(mtx))
...         for j in range(len(mtx[0]))
...         if i == j
...     )
... 
>>> print('result =', get_maindiag_sum(input_array()))
3
1 2 3
4 5 6
7 8 9
result = 15
>>>
Так ты можешь писать много разных программ, используя готовый код, который уже написан тобой или другими давно. Учишься сразу писать такой код (многоразовый), учишься использовать существующий код повторно (адаптировать его под новую программу, если нужно его немного переделать перед этим).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB