Помогите пожалуйста исправить ошибку в программе на поиск всех локальных минимумов двухмерного массива на Python
import random
from beautifultable import BeautifulTable
table = BeautifulTable()
def create_array(m, n):
array = []
for i in range(int(m)):
array_2 = []
for j in range(int(n)):
array_2.append(random.randint(-100, 100))
array.append(array_2)
return array
def array_into_table(array):
for i in array:
table.rows.append(i)
print(table)
def abmin(array):
min = []
if array[0][0] < array[0][1] and array[0][0] < array[1][0]:
min.append(array[0][0])
for a in range(len(array[0])):
for b in range(len(array[a])):
if ((a == 0) and (b > 0) and (b < (len(array[a]))-1) and
array[a][b] < array[a+1][b] and array[a][b] < array[a][b-1] and array[a][b] < array[a][b + 1]):
min.append(array[a][b])
if array[0][-1] < array[0][-2] and array[0][-1] < array[1][-1]:
min.append(array[0][-1])
for i in range(len(array)):
for j in range(len(array[i])):
if ((i != 0) and (i != (len(array))-1) and (j == 0) and (array[i][j] < array[i-1][j]) and
(array[i][j] < array[i+1][j]) and (array[i][j] < array[i][j+1])):
min.append(array[i][j])
elif (((j != 0) and (j != (len(array[i]))-1) and (i != 0) and (i != (len(array))-1) and
array[i][j] < array[i][j-1]) and (array[i][j] < array[i][j+1])
and (array[i][j] < array[i-1][j]) and (array[i][j] < array[i+1][j])):
min.append(array[i][j])
elif ((i != 0) and (i != (len(array))-1) and (j == (len(array[i]))-1) and (array[i][j] < array[i-1][j]) and
(array[i][j] < array[i+1][j]) and (array[i][j] < array[i][j-1])):
min.append(array[i][j])
if array[-1][0] < array[-2][0] and array[-1][0] < array[-1][1]:
min.append(array[-1][0])
for x in range(len(array[-1])):
for y in range(len(array[x])):
if ((x == len(array) - 1) and (y > 0) and (y < (len(array[x]))-1) and
array[x][y] < array[x-1][y] and array[x][y] < array[x][y-1] and array[x][y] < array[x][y + 1]):
min.append(array[x][y])
if array[-1][-1] < array[-1][-2] and array[-1][-1] < array[-2][-1]:
min.append(array[-1][-1])
print("Локальные минимумы :", min)
create = create_array(input("Введите количество строк : "),
input("Введите количество столбцов: ") )
array_into_table(create)
abmin(create)
Ответы (1 шт):
Автор решения: Edward Grachev
→ Ссылка
Вот рабочий пример. Тебе не нужно проходить все массивы самому если есть функция min()
import random
from beautifultable import BeautifulTable
def create_array(m, n):
"""Функция создания массива"""
array = []
for i in range(int(m)):
array_2 = []
for j in range(int(n)):
array_2.append(random.randint(-100, 100))
array.append(array_2)
return array
def create_and_adding_data_to_table(array):
"""Функция создания и заполнения таблицы"""
table = BeautifulTable()
for i in array:
table.rows.append(i)
print(table)
def search_min_in_all_row_table(array):
"""Функция поиска маиментшего значения каждой строки таблицы"""
min_result = []
for container in array:
min_result.append(min(container))
print(min_result)
def main():
m = input("Введите количество строк: ")
n = input("Введите количество столбцов: ")
array = create_array(m, n)
create_and_adding_data_to_table(array)
search_min_in_all_row_table(array)
if __name__ == '__main__':
main()