Помогите пожалуйста исправить ошибку в программе на поиск всех локальных минимумов двухмерного массива на 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()
→ Ссылка