Как сложить каждую строку и добавить сумму в один и тот же список? - PullRequest
0 голосов
/ 31 марта 2020
def row_sums(square):
    """takes such a (possibly magic) square as a parameter and returns a list of the row sums"""
    total_each_row = 0
    combine_each_total = []    
    for row in square: #row is an entire row
        for cell in row: #cell is an element of row
            total_each_row += cell  #possible error 


        combine_each_total.append(total_each_row) #possible error 
    return combine_each_total



magic_square = [
    [2, 7, 6],
    [9, 5, 1],
    [4, 3, 8]
]
print(row_sums(magic_square))

Эта программа работает как [15, 30, 45], но я хочу получить [15, 15, 15] как сумму каждой строки и распределить суммы в том же списке.

После того, как первая строка закончила вычисление суммы, как сделать новую сумму для второй и последующих строк для каждой и добавить каждую сумму в один и тот же список?

Квадрат будет содержать все целые числа от 1 до n ** 2 включительно.

В конце возвращает список сумм строк

Существуют ли другие способы достижения результата без использования встроенной суммы функция в этом случае? (Извините, я должен подчеркнуть этот момент)

Ответы [ 3 ]

2 голосов
/ 31 марта 2020

Просто используйте функцию суммы питонов для каждой строки.

Arr=[]
for row in square:
    Arr.append(sum(row))
return Arr

Если вы хотите использовать свой код, проблема в том, что вы не уверены, что ваша строка суммы var равна 0, поэтому она сохраняет отсчет с последнего ряда.

0 голосов
/ 31 марта 2020
magic_square = [
    [2, 7, 6],
    [9, 5, 1],
    [4, 3, 8]
]

# functional/pythonic way
sums = [sum(row) for row in magic_square]  # [15, 15, 15]


# if you want to make it longer
def row_sums(square):
   return [sum(row) for row in square]
row_sums(magic_square)  # [15, 15, 15]


#if you want to make it even longer
def row_sums(square):
   sums = []
   for row in square:
      row_total = 0
      for number in row:
          row_total += number
      sums.append(row_total)    
   return sums
row_sums(magic_square)  # [15, 15, 15]
0 голосов
/ 31 марта 2020
  • Вам необходимо повторно инициализировать combine_each_total в 0 перед повторным суммированием для новой строки.


def row_sums(square):
    """takes such a (possibly magic) square as a parameter and returns a list of the row sums"""

    combine_each_total = []    
    for row in square: #row is an entire row
        total_each_row = 0
        for cell in row: #cell is an element of row
            total_each_row += cell  #possible error 


        combine_each_total.append(total_each_row) #possible error 
    return combine_each_total



magic_square = [
    [2, 7, 6],
    [9, 5, 1],
    [4, 3, 8]
]
print(row_sums(magic_square))

вывод:

[15,15,15]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...