В чем проблема не работает возведение в степень и ввод матрицы в ручную

import random as rn global len_ax, len_ay, len_bx, len_by, nr_matrix # Функция генерит матрицы def rn_matrix(len_x, len_y): # 0 # x -> ось x, y -> ось y matrix = [[0 for i in range(len_x)] for j in range(len_y)] for i in range(0,len_y): for j in range(0,len_x): # matrix[i][j] = rn.randint(0, 10) return matrix # умножает на число def multiply_matrix(matrix, len_x, len_y, n): # создаю матрицу new_matrix = [[0 for i in range(len_x)] for j in range(len_y)] for i in range(0,len_y): for j in range(0,len_x): # Умнажаю число из матрицы на число new_matrix[i][j] = matrix[i][j]*n return new_matrix # транспорирование def transporirovanie(matrix, len_x, len_y): # создаю матрицу new_matrix = [[0 for i in range(len_y)] for j in range(len_x)] for i in range(0,len_x): for j in range(0,len_y): # переварачиваю матрицу new_matrix[i][j] = matrix[j][i] return new_matrix def multiply_2matrix(matrix_a, matrix_b, len_x, len_y): # создаю матрицу new_matrix = [[0 for i in range(len_y)] for j in range(len_x)] i,j=0, 0 new_matrix[i][j] = matrix_a[i][j]*matrix_b[i][j] + matrix_a[i+1][j]*matrix_b[i][j+1] + matrix_a[i+2][j]*matrix_b[i][j+2] new_matrix[i+1][j] = matrix_a[i][j]*matrix_b[i+1][j] + matrix_a[i+1][j]*matrix_b[i+1][j+1] + matrix_a[i+2][j]*matrix_b[i+1][j+2] new_matrix[i+2][j] = matrix_a[i][j]*matrix_b[i+1][j] + matrix_a[i+1][j]*matrix_b[i+1][j+1] + matrix_a[i+2][j]*matrix_b[i+1][j+2] new_matrix[i][j+1] = matrix_a[i][j+1]*matrix_b[i][j] + matrix_a[i+1][j+1]*matrix_b[i][j+1] + matrix_a[i+2][j+1]*matrix_b[i][j+2] new_matrix[i+1][j+1] = matrix_a[i][j+1]*matrix_b[i+1][j] + matrix_a[i+1][j+1]*matrix_b[i+1][j+1] + matrix_a[i+2][j+1]*matrix_b[i+1][j+2] new_matrix[i+2][j+1] = matrix_a[i][j+1]*matrix_b[i+1][j] + matrix_a[i+1][j+1]*matrix_b[i+1][j+1] + matrix_a[i+2][j+1]*matrix_b[i+1][j+2] new_matrix[i][j+2] = matrix_a[i][j+2]*matrix_b[i][j] + matrix_a[i+1][j+2]*matrix_b[i][j+1] + matrix_a[i+2][j+2]*matrix_b[i][j+2] new_matrix[i+1][j+2] = matrix_a[i][j+2]*matrix_b[i+1][j] + matrix_a[i+1][j+2]*matrix_b[i+1][j+1] + matrix_a[i+2][j+2]*matrix_b[i+1][j+2] new_matrix[i+2][j+2] = matrix_a[i][j+2]*matrix_b[i+1][j] + matrix_a[i+1][j+2]*matrix_b[i+1][j+1] + matrix_a[i+2][j+2]*matrix_b[i+1][j+2] return new_matrix def main(): print("Введите желаемое действие над матрицами: ") print("0 -> генерирование матриц, 1 -> сложение матриц, 2 -> умножение на число ") print("3 -> умножение матриц, 4 -> транспонирование, 5 -> возведение матрицы в степень") print("6 -> ввести матрицы в ручную, 9 -> выход") action = input("--> ") if(action == "1" or action == "3"): nr_matrix = 2 len_ax = int(input("Введите размеры матрицы 1 (x): ")) len_ay = int(input("Введите размеры матрицы 1 (y): ")) len_bx = int(input("Введите размеры матрицы 2 (x): ")) len_by = int(input("Введите размеры матрицы 2 (y): ")) print("0 -> генерирование матриц, 6 -> ввести матрицы в ручную") action = input("--> ") if(action == "0"): ''' Генерация матриц ''' matrix_a = rn_matrix(len_ax, len_ay) matrix_b = rn_matrix(len_bx, len_by) print("Matrix A: ") print(matrix_a) print("Matrix B: ") print(matrix_b) elif(action == "6"): ''' Генерация матриц delai sam''' matrix_a = [[0 for i in range(len_ax)] for j in range(len_ay)] matrix_b = [[0 for i in range(len_bx)] for j in range(len_by)] for i in range(0,len_ay): for j in range(0,len_ax): # Умнажаю число из матрицы на число print("Введите число в матрицу 1 matrix_a[", i, "][",j,"]", end="") matrix_a[i][j] = int(input()) for i in range(0,len_by): for j in range(0,len_bx): # Умнажаю число из матрицы на число print("Введите число в матрицу 2 matrix_b[", i, "][",j,"]", end="") matrix_b[i][j] = int(input()) if(action == "2" or action == "4" or action == "5"): nr_matrix = 1 len_ax = int(input("Введите размеры матрицы 1 (x): ")) len_ay = int(input("Введите размеры матрицы 1 (y): ")) print("0 -> генерирование матриц, 6 -> ввести матрицы в ручную") action = input("--> ") if(action == "0"): ''' Генерация матриц ''' matrix_a = rn_matrix(len_ax, len_ay) print("Matrix A: ") print(matrix_a) while(action != "9"): if(action == "9"): break if(action == "1"): ''' Сложение матриц ''' if(len_ax == len_bx and len_ay == len_by): matrix_c = [[0]*len_ax]*len_ay print("Matrix C") for i in range(0,len_ay): for j in range(0,len_ax): matrix_c[i][j] = matrix_a[i][j] + matrix_b[i][j] print (matrix_c[i][j], end=" ") print() else: print ("Матрицы разных величин!") elif(action == "2"): nr = 3; if(nr_matrix == 2): print("Matrix A: ", multiply_matrix(matrix_a, len_ax, len_ay, n)) print("Matrix B: ", multiply_matrix(matrix_b, len_bx, len_by, n)) elif(nr_matrix == 1): n = int(input("Введите число для умножения матриц: ")) print("Matrix A: ", multiply_matrix(matrix_a, len_ax, len_ay, n)) elif(action == "3"): ''' Умножение матриц ''' if(len_ax == len_bx and len_ay == len_by): matrix_c = multiply_2matrix(matrix_a, matrix_b, len_ax, len_ay) print("Matrix C", matrix_c) else: print ("Матрицы разных величин!") elif(action == "4"): ''' Транспорирование ''' if(nr_matrix == 2): print("Matrix A: ", transporirovanie(matrix_a, len_ax, len_ay)) print("Matrix B: ", transporirovanie(matrix_b, len_bx, len_by)) elif(nr_matrix == 1): print("Matrix A: ", transporirovanie(matrix_a, len_ax, len_ay)) action = input("--> ") if __name__=='__main__': main()

1 ответ

import random as rn

 

global len_ax, len_ay, len_bx, len_by, nr_matrix


 

# Функция генерит матрицы

def rn_matrix(len_x, len_y):

    #  0

    # x -> ось x, y -> ось y

    matrix = [[0 for i in range(len_x)] for j in range(len_y)]

    

    for i in range(0,len_y):

        for j in range(0,len_x):

            # 

            matrix[i][j] = rn.randint(0, 10)

 

    return matrix

 

# умножает на число

def multiply_matrix(matrix, len_x, len_y, n):

    # создаю матрицу

    new_matrix = [[0 for i in range(len_x)] for j in range(len_y)]

 

    for i in range(0,len_y):

        for j in range(0,len_x):

            # Умнажаю число из матрицы на число

            new_matrix[i][j] = matrix[i][j]*n

 

    return new_matrix

 

# транспорирование

def transporirovanie(matrix, len_x, len_y):

    # создаю матрицу

    new_matrix = [[0 for i in range(len_y)] for j in range(len_x)]

 

    for i in range(0,len_x):

        for j in range(0,len_y):

            # переварачиваю матрицу

            new_matrix[i][j] = matrix[j][i]

 

    return new_matrix

 

def multiply_2matrix(matrix_a, matrix_b, len_x, len_y):

    # создаю матрицу

    new_matrix = [[0 for i in range(len_y)] for j in range(len_x)]

    i,j=0, 0

    

    new_matrix[i][j] = matrix_a[i][j]*matrix_b[i][j] + matrix_a[i+1][j]*matrix_b[i][j+1] + matrix_a[i+2][j]*matrix_b[i][j+2]

    new_matrix[i+1][j] = matrix_a[i][j]*matrix_b[i+1][j] + matrix_a[i+1][j]*matrix_b[i+1][j+1] + matrix_a[i+2][j]*matrix_b[i+1][j+2]

    new_matrix[i+2][j] = matrix_a[i][j]*matrix_b[i+1][j] + matrix_a[i+1][j]*matrix_b[i+1][j+1] + matrix_a[i+2][j]*matrix_b[i+1][j+2]

    

    new_matrix[i][j+1] = matrix_a[i][j+1]*matrix_b[i][j] + matrix_a[i+1][j+1]*matrix_b[i][j+1] + matrix_a[i+2][j+1]*matrix_b[i][j+2]

    new_matrix[i+1][j+1] = matrix_a[i][j+1]*matrix_b[i+1][j] + matrix_a[i+1][j+1]*matrix_b[i+1][j+1] + matrix_a[i+2][j+1]*matrix_b[i+1][j+2]

    new_matrix[i+2][j+1] = matrix_a[i][j+1]*matrix_b[i+1][j] + matrix_a[i+1][j+1]*matrix_b[i+1][j+1] + matrix_a[i+2][j+1]*matrix_b[i+1][j+2]

    

    new_matrix[i][j+2] = matrix_a[i][j+2]*matrix_b[i][j] + matrix_a[i+1][j+2]*matrix_b[i][j+1] + matrix_a[i+2][j+2]*matrix_b[i][j+2]

    new_matrix[i+1][j+2] = matrix_a[i][j+2]*matrix_b[i+1][j] + matrix_a[i+1][j+2]*matrix_b[i+1][j+1] + matrix_a[i+2][j+2]*matrix_b[i+1][j+2]

    new_matrix[i+2][j+2] = matrix_a[i][j+2]*matrix_b[i+1][j] + matrix_a[i+1][j+2]*matrix_b[i+1][j+1] + matrix_a[i+2][j+2]*matrix_b[i+1][j+2]

        

    return new_matrix

 

def main():

    print("Введите желаемое действие над матрицами: ")

    print("0 -> генерирование матриц, 1 -> сложение матриц, 2 -> умножение на число ")

    print("3 -> умножение матриц, 4 -> транспонирование, 5 -> возведение матрицы в степень")

    print("6 -> ввести матрицы в ручную, 9 -> выход")

 

    action = input("--> ")

 

    if(action == "1" or action == "3"):

        nr_matrix = 2

        len_ax = int(input("Введите размеры  матрицы 1 (x): "))

        len_ay = int(input("Введите размеры  матрицы 1 (y): "))

 

        len_bx = int(input("Введите размеры  матрицы 2 (x): "))

        len_by = int(input("Введите размеры  матрицы 2 (y): "))

        print("0 -> генерирование матриц, 6 -> ввести матрицы в ручную")

        action = input("--> ")

        if(action == "0"):

            ''' Генерация матриц '''

            matrix_a = rn_matrix(len_ax, len_ay)

            matrix_b = rn_matrix(len_bx, len_by)

            

            print("Matrix A: ")

            print(matrix_a)

            

            print("Matrix B: ")

            print(matrix_b)

        elif(action == "6"):

            ''' Генерация матриц   delai sam'''

            matrix_a = [[0 for i in range(len_ax)] for j in range(len_ay)]

            matrix_b = [[0 for i in range(len_bx)] for j in range(len_by)]

            

            for i in range(0,len_ay):

                for j in range(0,len_ax):

                    # Умнажаю число из матрицы на число

                    print("Введите число в матрицу 1 matrix_a[", i, "][",j,"]", end="")

                    matrix_a[i][j] = int(input())

                    

            for i in range(0,len_by):

                for j in range(0,len_bx):

                    # Умнажаю число из матрицы на число

                    print("Введите число в матрицу 2 matrix_b[", i, "][",j,"]", end="")

                    matrix_b[i][j] = int(input())

        

    if(action == "2" or action == "4" or action == "5"):

        nr_matrix = 1

        len_ax = int(input("Введите размеры  матрицы 1 (x): "))

        len_ay = int(input("Введите размеры  матрицы 1 (y): "))

        print("0 -> генерирование матриц, 6 -> ввести матрицы в ручную")

        action = input("--> ")

        if(action == "0"):

            ''' Генерация матриц '''

            matrix_a = rn_matrix(len_ax, len_ay)

            

            print("Matrix A: ")

            print(matrix_a)

        


 

    while(action != "9"):

        if(action == "9"):

            break

            

        if(action == "1"):

            ''' Сложение матриц '''

            if(len_ax == len_bx and len_ay == len_by):

                matrix_c = [[0]*len_ax]*len_ay


 

                print("Matrix C")

                for i in range(0,len_ay):

                    for j in range(0,len_ax):

                        matrix_c[i][j] = matrix_a[i][j] + matrix_b[i][j]

                        print (matrix_c[i][j], end=" ")

                    print()

            else:

                print ("Матрицы разных величин!")

        elif(action == "2"):  

            nr = 3;

            if(nr_matrix == 2):

                print("Matrix A: ", multiply_matrix(matrix_a, len_ax, len_ay, n))

                print("Matrix B: ", multiply_matrix(matrix_b, len_bx, len_by, n))

            elif(nr_matrix == 1):

                n = int(input("Введите число для умножения матриц: "))

 

                print("Matrix A: ", multiply_matrix(matrix_a, len_ax, len_ay, n))

        elif(action == "3"):

            ''' Умножение матриц '''

            if(len_ax == len_bx and len_ay == len_by):

                matrix_c = multiply_2matrix(matrix_a, matrix_b, len_ax, len_ay)


 

                print("Matrix C", matrix_c)

                

            else:

                print ("Матрицы разных величин!")

        elif(action == "4"):

            ''' Транспорирование '''

            if(nr_matrix == 2):

                print("Matrix A: ", transporirovanie(matrix_a, len_ax, len_ay))

                print("Matrix B: ", transporirovanie(matrix_b, len_bx, len_by))

            elif(nr_matrix == 1):

                print("Matrix A: ", transporirovanie(matrix_a, len_ax, len_ay))      

        

        

        

        action = input("--> ")

       


 

if __name__=='__main__':

    main()

Другие вопросы по тегам