Python. Матрицы
Есть матрица NxN.
Необходимо заполнить единицами часть матрицы от главной диагонали до верхнего правого угла, но не трогать элементы, которые лежат на левой половине матрицы. Если N нечетное, в центральном столбце тоже должны быть единицы.
Как нужно сделать исключение для левой половины?
import random
N = int(input("Разряд: "))
matrix = [[random.randrange(-10,10) for y in range(N)] for x in range(N)]
print("Начальная матрица: ",matrix)
for i in range(N):
for j in range(N):
if j > i:
matrix[i][j] = 1
print("Конечная матрица: ",matrix)
Ответы (3 шт):
Автор решения: Maksey
→ Ссылка
Сделал таким способом, что изменил range, до это ввёл переменную half = (N/2) Если будут другие идеи - будет очень интересно узнать Мой код получился таким:
import random
N = int(input("Разряд: "))
matrix = [[random.randrange(-10,10) for y in range(N)] for x in range(N)]
print("Начальная матрица: ",matrix)
half = int(N/2)
for i in range(N):
for j in range(half,N):
if j > i:
matrix[i][j] = 1
print("Конечная матрица: ",matrix)
Автор решения: n1tr0xs
→ Ссылка
Предлагаю такой вариант
import random
N = int(input("Разряд: "))
matrix = [[random.randrange(-10,10) for y in range(N)] for x in range(N)]
print("Начальная матрица: ")
for row in matrix:
for el in row:
print(f'{el:3}', end=' ')
print()
for i in range(N):
for j in range(max(N>>1, i), N):
matrix[i][j] = 1
print("Конечная матрица: ")
for row in matrix:
for el in row:
print(f'{el:3}', end=' ')
print()
Автор решения: splash58
→ Ссылка
основной цикл можно сделать таким образом, чтобы идти от главной диагонали для нечетных и на один шаг позже для четных
add = (N+1) % 2
for i in range(N):
for j in range(i+add,N):
matrix[i][j] = 1
весь код
import random
from pprint import pprint
N = int(input("Разряд: "))
matrix = [[random.randrange(0,9) for y in range(N)] for x in range(N)]
print("Начальная матрица: ")
pprint(matrix)
add = (N+1) % 2
for i in range(N):
for j in range(i+add,N):
matrix[i][j] = 1
print("Конечная матрица: ")
pprint(matrix)
вот, что получается в одном случае
Разряд: 3
Начальная матрица:
[[7, 4, 3], [7, 5, 3], [3, 5, 5]]
Конечная матрица:
[[1, 1, 1], [7, 1, 1], [3, 5, 1]]
и во втором
Разряд: 4
Начальная матрица:
[[8, 5, 7, 5], [6, 0, 8, 1], [8, 7, 4, 0], [8, 4, 6, 6]]
Конечная матрица:
[[8, 1, 1, 1], [6, 0, 1, 1], [8, 7, 4, 1], [8, 4, 6, 6]]