Python. Не работает присвоение в двумерном массиве
Решается задача приведения двумерного массива к треугольному виду. Программа игнорирует ячейки при попытке преобразовать их значение. Почему все прекрасно работает в Си, а на Python нет? Прилагаю код:
Заполнение матрицы.
import random as rnd
rows = 4
columns = rows+1
matrix = []
print('\nДо преобразований:\n')
for i in range(0, rows):
matrix.append([])
for j in range(0,columns):
matrix[i].append(float(rnd.randint(10, 20)))
print(matrix[i][j], end = ' ')
print()
БЛОК ПРЕОБРАЗОВАНИЙ. Работает на Си.
for m in range(0, rows-1):
for i in range(m+1, rows):
for j in range(m, columns):
matrix[i][j] = matrix[i][j] - (matrix[i][m]/matrix[m][m]) * matrix[m][j]
Вывод матрицы. Здесь только выравнивание ячеек. Проблема не здесь.
print('\nПосле преобразований:\n')
for j in range(0, columns):
print(float(round(matrix[0][j], 1)), end = ' ')
print()
for i in range(1, rows):
for j in range(0,columns):
if (len(str(matrix[i][j])) == 4):
print(float(round(matrix[i][j], 1)), end = ' ')
if (len(str(matrix[i][j])) == 3):
print(float(round(matrix[i][j], 1)), end = ' ')
if (len(str(matrix[i][j])) <= 2):
print(float(round(matrix[i][j], 1)), end = ' ')
print()
Результаты.
Ответы (1 шт):
Автор решения: A_Vaclav
→ Ссылка
До преобразований:
15.0 13.0 14.0 16.0 11.0
18.0 19.0 18.0 10.0 15.0
18.0 17.0 12.0 16.0 18.0
14.0 13.0 16.0 16.0 15.0
matrix[i][j] = matrix[i][j] - (matrix[i][m]/matrix[m][m]) * matrix[m][j]
После:
m i j matrix[i][j]
------------------------------
0 1 0 0.0 0.0 = 18.0 - (18.0 / 15.0) * 15.0
#теперь matrix[1][0] равен 0!
0 1 1 19.0 19.0 = 19.0 - (0.0 / 15.0) * 15.0
#а 0 как не отнимай...
0 1 2 18.0
0 1 3 10.0
0 1 4 15.0
0 2 0 0.0
0 2 1 17.0
0 2 2 12.0
0 2 3 16.0
0 2 4 18.0
0 3 0 0.0
0 3 1 13.0
0 3 2 16.0
0 3 3 16.0
0 3 4 15.0
1 2 1 0.0
1 2 2 12.0
1 2 3 16.0
1 2 4 18.0
1 3 1 0.0
1 3 2 16.0
1 3 3 16.0
1 3 4 15.0
2 3 2 0.0
2 3 3 16.0
2 3 4 15.0
[[10.0, 20.0, 16.0, 20.0, 14.0],
[0.0, 18.0, 16.0, 17.0, 10.0],
[0.0, 0.0, 16.0, 12.0, 18.0],
[0.0, 0.0, 0.0, 16.0, 17.0]]
