Как вернуть массив из функций, и потом по этому значению найти максимальное значение?
Есть матрица и ее максимальное число для участка матрицы Нужно вынести создание матрицы в отдельную функцию а при нахождении максимального числа подставлять данные из функции где матрица создается
Как вернуть массив из функций, и потом по этому значению найти максимальное значение?
n = 7
M = [] # матрица
for i in range(1, n + 1):
line = [] # строка
for j in range(1, n + 1):
line = line + [randint(1, 100)]
M = M + [line]
for i in range(0, n):
for j in range(0, n):
print(f" {M[i][j]:4d}", end="")
print()
max_number = M[0][0]
for i in range(0, n):
for j in range(0, n):
if i >= j and j < n - i: # определить лежит ли элемент выше побочной диагонали но ниже главной диагонали матрицы
if M[i][j] > max_number:
max_number = M[i][j]
print("максимальное число = ", max_number)
Ответы (3 шт):
зачем вы так коряво создаете матрицу?
M = [] # матрица
for i in range(1, n + 1):
line = [] # строка
for j in range(1, n + 1):
line = line + [randint(1, 100)]
M = M + [line]
почему бы не сделать так:
M = [[randint(1, 100) for _ in range(n)] for _ in range(n)]
а вместо
max_number = M[0][0]
for i in range(0, n):
for j in range(0, n):
if i >= j and j < n - i: # определить лежит ли элемент выше побочной диагонали но ниже главной диагонали матрицы
if M[i][j] > max_number:
max_number = M[i][j]
можно
max_number = max(max(M[i][j] for j in range(n) if i >= j and j < n - i) for i in range(n))
Если вам надо вернуть матрицу и результат, то можно сделать через кортеж к примеру
def func(n):
# тут вся логика работы
return (M, max_number)
и теперь можно этим пользоваться
res = func(10)
res[0] - это матрица
res[1] - это найденное максимальное значение
def matrix(n):
n = 7
M = [] # матрица
for i in range(1, n + 1):
line = [] # строка
for j in range(1, n + 1):
line = line + [randint(1, 100)]
M = M + [line]
for i in range(0, n):
for j in range(0, n):
print(f" {M[i][j]:4d}", end="")
print()
max_number = M[0][0]
for i in range(0, n):
for j in range(0, n):
if i >= j and j < n - i: # определить лежит ли элемент выше побочной диагонали но ниже главной диагонали матрицы
if M[i][j] > max_number:
max_number = M[i][j]
print("максимальное число = ", max_number)
return (M, max_number)
matrix(7)
ну вот так работает
но мне надо разделить этот код на две функции, чтобы из второй вызывать первую и получать максимальное число
все решил
from random import *
def matrix(n):
n = 7
M = [] # матрица
for i in range(1, n + 1):
line = [] # строка
for j in range(1, n + 1):
line = line + [randint(1, 100)]
M = M + [line]
for i in range(0, n):
for j in range(0, n):
print(f" {M[i][j]:4d}", end="")
print()
return (M)
def find_max(M, n):
max_number = M[0][0]
for i in range(0, n):
for j in range(0, n):
if i >= j and j < n - i: # определить лежит ли элемент выше побочной диагонали но ниже главной диагонали матрицы
if M[i][j] > max_number:
max_number = M[i][j]
print("максимальное число = ", max_number)
return (max_number)
find_max(matrix(7), 7)