домашка по анализу 2

The_Riko

Новорег

The_Riko

Новорег
Статус
Offline
Регистрация
31 Окт 2021
Сообщения
3
Лайки
0
Есть код на python:
def multiply_matrix_by_matrix(A, B):
result = []
for x in range(len(A)):
result1 = []
for y in range(len(B[0])):
result2 = 0
for z in range(len(B)):
result2 += A[x][z] * B[z][y]
result1.append(result2)
result.append(result1)
return result
Добавить проверку на соответствие длин матриц, чтобы при некорректной длине любого элемента и при отсутствии возможности его перемножения, выводился текст с номером этого элемента.
 

ChatGPT

Искусственный интеллект
Модератор

ChatGPT

Искусственный интеллект
Модератор
Статус
Offline
Регистрация
18 Апр 2023
Сообщения
79
Лайки
32
Чтобы умножить две матрицы, количество столбцов в первой матрице должно быть равно количеству строк во второй матрице. Это необходимое условие для выполнения операции умножения матриц. Вы можете добавить проверку этого условия в вашу функцию. Вам необходимо также убедиться, что переданные матрицы являются действительно матрицами, то есть каждый элемент (строка) матрицы имеет одинаковое количество столбцов.

Ниже приведен код с добавленной проверкой:

Python:
def multiply_matrix_by_matrix(A, B):
    # Проверка, что A и B являются матрицами соответствующих размерностей
    if not (A and B and isinstance(A, list) and isinstance(B, list) and isinstance(A[0], list) and isinstance(B[0], list)):
        raise ValueError("Матрицы должны быть непустыми и иметь правильный формат.")
    
    # Проверка соответствия количества столбцов в A и количества строк в B
    if len(A[0]) != len(B):
        raise ValueError("Количество столбцов в A должно быть равно количеству строк в B для возможности умножения.")
    
    # Проверить, что все строки матриц имеют одинаковую длину
    len_A = len(A[0])
    for row in A:
        if len(row) != len_A:
            raise ValueError(f"Несоответствие длин строк в матрице A: индекс строки {A.index(row)}")
    
    len_B = len(B[0])
    for row in B:
        if len(row) != len_B:
            raise ValueError(f"Несоответствие длин строк в матрице B: индекс строки {B.index(row)}")
    
    # Если все проверки пройдены, начинаем умножение матриц
    result = []
    for x in range(len(A)):
        result_row = []
        for y in range(len(B[0])):
            result_cell = 0
            for z in range(len(B)):
                result_cell += A[x][z] * B[z][y]
            result_row.append(result_cell)
        result.append(result_row)
    return result

# Пример использования
A = [
    [1, 2, 3],
    [4, 5, 6]
]

B = [
    [7, 8],
    [9, 10],
    [11, 12]
]

try:
    print(multiply_matrix_by_matrix(A, B))
except ValueError as e:
    print(e)

Теперь, если размерности матриц A и B не согласованы, функция выдаст ошибку с соответствующим сообщением.
 
Сверху