8 строчка кода выдаёт ошибку... Объясните, как пофиксить

Напишите программу, которая выводит количество элементов квадратной матрицы в каждой строке, больших среднего арифметического элементов данной строки.

Формат входных данных На вход программе подаётся натуральное число nn — количество строк и столбцов в матрице, затем элементы матрицы (целые числа) построчно через пробел.

Формат выходных данных Программа должна вывести nn чисел — для каждой строки количество элементов матрицы, больших среднего арифметического элементов данной строки.

n = int(input())
q = 0
w = 0
m = [input().split() for _ in range(n)]
for i in range(n):
    for j in range(n):
        q += int(m[i][j])
    if q // n <= int(m[i][y for y in range(n)]):
        w += 1
    print(q, w)
    q = 0
    w = 0

Я новичок, так что простите, если творю что-то глупое))


Ответы (1 шт):

Автор решения: insolor

Советую сначала освоить обычные циклы, потом уже переходить к list comprehension, а не пытаться их методом тыка использовать.

После того, как посчитали сумму элементов в строке, вам нужно еще раз таким же циклом по этой же строке пройти и посчитать количество элементов больше среднего:

n = int(input())
m = [input().split() for _ in range(n)]
for i in range(n):
    q = 0
    for j in range(n):
        q += int(m[i][j])

    average = q / n
    w = 0
    for j in range(n):
        if int(m[i][j]) > average:
            w += 1

    print(q, w)

То же самое в более "питоничном" стиле (без использования индексов):

n = int(input())
m = [input().split() for _ in range(n)]
for row in m:
    q = 0
    for item in row:
        q += int(item)

    average = q / n
    w = 0
    for item in row:
        if int(item) > average:
            w += 1

    print(q, w)
→ Ссылка