Как мне исправить мой код так, чтобы он печатал самые большие и самые низкие значения в матрице? - PullRequest
0 голосов
/ 24 апреля 2019
def largestlowest(matrix):
        largeset = 0
        lowest = 0

        for row in range(len(matrix)):
            for col in range(len(matrix[row]-1)):
                if matrix[col] > matrix[col+1]:
                    largest = matrix[col]
            if matrix[col] < matrix[col+1]:
                lowest = matrix[col]
        else:
            print("there is no min/max value")
            return largest and lowest

print(largestlowest([[4,8,2,9,34,57,22,44], [1,2,8,9,1,2,55,3,22,4]]))

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Не забудьте упомянуть язык .Я предполагаю, что это питон.Также попробуйте запустить и протестировать код перед публикацией.Этот код не работает вообще.

Это работающая версия кода, который вы отправили в python:

def largestlowest(matrix):
    largeset = 0
    lowest = 0
    for row in range(len(matrix)):
        for col in range(len(matrix[row])-1):
            if (matrix[row][col] > matrix[row][col+1]):
                largest = matrix[row][col]
            if (matrix[row][col] < matrix[row][col+1]):
                lowest = matrix[row][col]

     return (largest, lowest)

print(largestlowest([[4,8,2,9,34,57,22,44], [1,2,8,9,1,2,55,3,22,4]]))

Обратите внимание, что для доступа к элементу списка вы должны вызвать его как row иcolumn: matrix[row][col].

Есть несколько неправильных вещей:

  • Вы поднялись до (len(matrix[row])-1) и поэтому не включаете последний столбец.
  • Затем вы сравниваете соседние элементы matrix[row][col] > matrix[row][col+1] вместо того, чтобы сравнивать все из них с самым низким и самым большим.
  • Вы назначаете самый низкий элемент 0, который всегда будет ниже, чем все ваши элементы
  • return a and b вернет a только

Я рекомендую вам искать каждый шаг (например, как вызвать матричный элемент в python ).Вы найдете много информации в Интернете.Попробуйте запустить код как можно быстрее и устранить ошибки в консоли.Наконец, код, который делает то, что вы хотите (я думаю):

def largestlowest(matrix):
    if (not len(matrix)):
        return ("Matrix should have at least one element!")
    ## assign largest and lowest to first element of martix
    largest = lowest = matrix[0][0]
    for row in range(len(matrix)):
        for col in range(len(matrix[row])):
            if (matrix[row][col] > largest):
                largest = matrix[row][col]
            if (matrix[row][col] < lowest):
                lowest = matrix[row][col]

    # return (largest, lowest)
    return "Largest element of matrix: %d, lowest element of matrix: %d" % (largest, lowest)
print(largestlowest([[4,8,2,9,34,57,22,44], [1,2,8,9,1,2,55,3,22,4]]))
print(largestlowest([]))
0 голосов
/ 24 апреля 2019

Ваш код фактически сравнивал неправильные значения: if matrix[col] > matrix[col+1]: не сравнивает текущее значение с наибольшим, оно сравнивает его с последующим.То же самое происходило с маленькими.

Кроме того, вы неправильно обрабатывали свои данные.matrix[col] - это сам массив, а не отдельный элемент (по крайней мере, согласно приведенному вами примеру).

Код ниже прокомментирован и работает.Выводит:

LARGEST: 57
LOWEST: 1

# Function
def largestlowest(matrix):
        # Declaring biggest and smallest variable. Setting extraneous at first
        largest = -10000
        lowest = 10000

        # Loop through every array in the matrix as you have defined it
        for arr in matrix:
            # Loop through each item in the array
            for item in arr:
                # If it is bigger than the largest, set the largest to be that value
                if item > largest:
                    largest = item
                # If it is smaller than the smallest, set the smallest to be that value
                if item < lowest:
                    lowest = item

        # Return the largest and lowest
        return largest, lowest

# Example main function
def main():
    # Define a test matrix (copied from your example)
    matrix = [[4,8,2,9,34,57,22,44], [1,2,8,9,1,2,55,3,22,4]]
    # Run the function we created
    largest, lowest = largestlowest(matrix)

    # Print out the results
    print("LARGEST: ", largest)
    print("LOWEST: ", lowest)

# Call the main function
main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...