Python. Матрицы и двухмерные массивы

Всем привет, с праздниками. Пишу с такой проблемой: не до конца понимаю работу циклов с матрицами. Нашёл туториал на паскале по схожему заданию, пробую вот как-то перевести на Python, но пока не очень получается, вот что сделал и вроде логически понимаю задачу, но не могу реализовать на коде. Пока такое есть. Сама задача: -Есть матрица NxN и число К. Столбец с минимальным по модулю элементом в k-той строке переставить с k-тым столбцом. Мой код:

import random
n = int(input("Розряд: "))
matrix = [[random.randrange(-10,10) for y in range(n)] for x in range(n)]
print("Начальная матрица: ",matrix)
k = int(input("Число К:" ))
tmp = []
maxcol = 0
max = 1
#номер макс. по модулю элемента k строки и его номер (столбец)
for i in range(n):
    if max < abs(matrix[k, i]):
        max = abs(matrix[k, i])
        maxcol = 1
#переставляем столбцы
for i in range(n):
    tmp = matrix[i, k]
    matrix[i, k] = matr[i, maxcol]
    matrix[i, maxcol] = tmp
#вывод матрицы
for i in range(n):
    for j in range(n):
        print...

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

Автор решения: passant
import random
n = int(input("Розряд: "))
matrix = [[random.randrange(-10,10) for y in range(n)] for x in range(n)]
print("Начальная матрица: ",matrix)
k = int(input("Число К:" ))
abs_min=11
k_j=-1

for j in range(n):
    if abs_min>abs(matrix[k][j]):
        abs_min=abs(matrix[k][j])
        k_j=j
for i in range(n):
    matrix[i][k],matrix[i][k_j]=matrix[i][k_j], matrix[i][k]

print("Результирующая  матрица: ",matrix)

Результат:

Розряд: 5
Начальная матрица:        [[-5, -7, -5, 1, -1], 
                           [-4, 9, -2, -1, -7], 
                           [2, -8, -4, -2, -3], 
                           [-1, 9, 1, -8, 1], 
                           [-7, -1, 9, 2, -2]]

Число К:1
Результирующая  матрица:  [[-5, 1, -5, -7, -1], 
                           [-4, -1, -2, 9, -7], 
                           [2, -2, -4, -8, -3], 
                           [-1, -8, 1, 9, 1], 
                           [-7, 2, 9, -1, -2]]

Минимальный по абсолютному значению элемент в строке с индексом 1 - "-1" находится в столбце с индексом 3, который в итоге переставляется со столбцом с индексом 1. Как просили.

→ Ссылка
Автор решения: Павел Ериков

Я точно не понял, что вам нужно, но заметил пару ошибок в коде:

  1. Обращаться к элементу матрицы нужно вот так:

    matrix[строка][столбец]
    
  2. Если вам нужно найти минимальный элемент, то переменной max нужно присвоить максимальное значение + 1. Я так понимаю максимальное значение элемента в матрице у вас будет 10.

    Значит присваиваем max = 11

  3. В первом цикле вы проверяете max < abs(matrix[k, i]), то есть если элемент матрицы больше, то вы делаете какие либо действия, а вам нужно найти минимальный элемент.

    По этому пишем:

    if abs(matrix[k][i]) < max:
    

    Ну а сам цикл просто проходится по элементом k-ой строки, тут я думаю все понятно.

  4. Далее у вас изначально tmp это пустой массив, я думаю раз tmp используется для перестановки, то это должно быть число, то есть tmp = 0.

    И во втором цикле у вас опечатка не matr а matrix должно быть.

  5. Ну и вот пример вывода матрицы:

    for i in range(n):
        for j in range(n):
            print(matrix[i][j], end = ' ')
        print()
    

Полный код:

import random
n = int(input("Разряд: "))
matrix = [[random.randrange(-10,10) for y in range(n)] for x in range(n)]
print("Начальная матрица: ",matrix)
k = int(input("Число К:" ))
tmp = 0
maxcol = 0
max = 11
#номер макс. по модулю элемента k строки и его номер (столбец)
for i in range(n):
    if abs(matrix[k][i]) < max:
        max = abs(matrix[k][i])
        maxcol = i
#переставляем столбец
for i in range(n):
    tmp = matrix[i][k]
    matrix[i][k] = matrix[i][maxcol]
    matrix[i][maxcol] = tmp
#вывод матрицы
for i in range(n):
    for j in range(n):
        print(matrix[i][j], end = ' ')
    print()
→ Ссылка