In [1]:
def cria_matriz(tot_lin, tot_col, valor):
    matriz = []  #lista vazia
    for i in range(tot_lin):
        linha = []
        for j in range(tot_col):
            linha.append(valor)
        matriz.append(linha)
        return matriz

In [3]:
x = cria_matriz(2, 3, 99)
x


Out[3]:
[[99, 99, 99]]

In [4]:
def cria_matriz(tot_lin, tot_col, valor):
    matriz = []  #lista vazia
    for i in range(tot_lin):
        linha = []
        for j in range(tot_col):
            linha.append(valor)
        matriz.append(linha)
    return matriz

In [5]:
x = cria_matriz(2, 3, 99)
x


Out[5]:
[[99, 99, 99], [99, 99, 99]]

Este código faz com que primeiramente toda a primeira linha seja preenchida, em seguida a segunda e assim sucessivamente. Se nós quiséssemos que a primeira coluna fosse preenchida e em seguida a segunda coluna e assim por diante, como ficaria o código?

Um exemplo: se o usuário digitasse o seguinte comando “x = cria_matriz(2,3)” e em seguida informasse os seis números para serem armazenados na matriz, na seguinte ordem: 1, 2, 3, 4, 5, 6; o x teria ao final da função a seguinte matriz: [[1, 3, 5], [2, 4, 6]].


In [6]:
def cria_matriz(num_linhas, num_colunas):
    matriz = []  #lista vazia
    for i in range(num_linhas):
        linha = []
        for j in range(num_colunas):
            linha.append(0)
        matriz.append(linha)

    for i in range(num_colunas):
        for j in range(num_linhas):
            matriz[j][i] = int(input("Digite o elemento [" + str(j) + "][" + str(i) + "]: "))

    return matriz

In [7]:
x = cria_matriz(2, 3)


Digite o elemento [0][0]: 1
Digite o elemento [1][0]: 2
Digite o elemento [0][1]: 3
Digite o elemento [1][1]: 4
Digite o elemento [0][2]: 5
Digite o elemento [1][2]: 6

In [8]:
x


Out[8]:
[[1, 3, 5], [2, 4, 6]]

In [10]:
def tarefa(mat):
    dim = len(mat)
    for i in range(dim):
        print(mat[i][dim-1-i], end="  ")

mat = [[1,2,3],[4,5,6],[7,8,9]]
tarefa(mat)

# Observação: o trecho do print (end = " ") irá mudar a finalização padrão do print
# que é pular para a próxima linha. Com esta mudança, o cursor permanecerá na mesma 
# linha aguardando a impressão seguinte.


3  5  7  

Exercício 1: Tamanho da matriz

Escreva uma função dimensoes(matriz) que recebe uma matriz como parâmetro e imprime as dimensões da matriz recebida, no formato iXj.

Exemplos:

minha_matriz = [[1], [2], [3]]

dimensoes(minha_matriz)

3X1

minha_matriz = [[1, 2, 3], [4, 5, 6]]

dimensoes(minha_matriz)

2X3


In [1]:
def dimensoes(A):
    
    '''Função que recebe uma matriz como parâmetro e imprime as dimensões da matriz recebida, no formato iXj.
    
    Obs: i = colunas, j = linhas
    
    Exemplo: 
    >>> minha_matriz = [[1], 
                        [2], 
                        [3]
                        ]
    >>> dimensoes(minha_matriz)
    >>> 3X1
    '''
    
    lin = len(A)
    col = len(A[0])
    
    return print("%dX%d" % (lin, col))

In [2]:
matriz1 = [[1], [2], [3]]
dimensoes(matriz1)


3X1

In [3]:
matriz2 = [[1, 2, 3], [4, 5, 6]]
dimensoes(matriz2)


2X3

Exercício 2: Soma de matrizes

Escreva a função soma_matrizes(m1, m2) que recebe 2 matrizes e devolve uma matriz que represente sua soma caso as matrizes tenham dimensões iguais. Caso contrário, a função deve devolver False.

Exemplos:

m1 = [[1, 2, 3], [4, 5, 6]]

m2 = [[2, 3, 4], [5, 6, 7]]

soma_matrizes(m1, m2) => [[3, 5, 7], [9, 11, 13]]

m1 = [[1], [2], [3]]

m2 = [[2, 3, 4], [5, 6, 7]]

soma_matrizes(m1, m2) => False


In [7]:
def soma_matrizes(m1, m2):
    
    def dimensoes(A):
        lin = len(A)
        col = len(A[0])
    
        return ((lin, col))
    
    if dimensoes(m1) != dimensoes(m2):
        return False
    else:
        matriz = []
        for i in range(len(m1)):
            linha = []
            for j in range(len(m1[0])):
                linha.append(m1[i][j] + m2[i][j])
            matriz.append(linha)
        return matriz

In [8]:
m1 = [[1, 2, 3], [4, 5, 6]]
m2 = [[2, 3, 4], [5, 6, 7]]
soma_matrizes(m1, m2)


Out[8]:
[[3, 5, 7], [9, 11, 13]]

In [9]:
m1 = [[1], [2], [3]]
m2 = [[2, 3, 4], [5, 6, 7]]
soma_matrizes(m1, m2)


Out[9]:
False

Praticar tarefa de programação: Exercícios adicionais (opcionais)

Exercício 1: Imprimindo matrizes

Como proposto na primeira vídeo-aula da semana, escreva uma função imprime_matriz(matriz), que recebe uma matriz como parâmetro e imprime a matriz, linha por linha. Note que NÃO se deve imprimir espaços após o último elemento de cada linha!

Exemplos:

minha_matriz = [[1], [2], [3]]

imprime_matriz(minha_matriz)

1

2

3

minha_matriz = [[1, 2, 3], [4, 5, 6]]

imprime_matriz(minha_matriz)

1 2 3

4 5 6


In [26]:
def imprime_matriz(A):
    
    for i in range(len(A)):
        for j in range(len(A[i])):
            print(A[i][j])

In [27]:
minha_matriz = [[1], [2], [3]]
imprime_matriz(minha_matriz)


1
2
3

In [28]:
minha_matriz = [[1, 2, 3], [4, 5, 6]]
imprime_matriz(minha_matriz)


1
2
3
4
5
6

Exercício 2: Matrizes multiplicáveis

Duas matrizes são multiplicáveis se o número de colunas da primeira é igual ao número de linhas da segunda. Escreva a função sao_multiplicaveis(m1, m2) que recebe duas matrizes como parâmetro e devolve True se as matrizes forem multiplicavéis (na ordem dada) e False caso contrário.

Exemplos:

m1 = [[1, 2, 3], [4, 5, 6]]

m2 = [[2, 3, 4], [5, 6, 7]]

sao_multiplicaveis(m1, m2) => False

m1 = [[1], [2], [3]]

m2 = [[1, 2, 3]]

sao_multiplicaveis(m1, m2) => True


In [30]:
def sao_multiplicaveis(m1, m2):
    
    '''Recebe duas matrizes como parâmetros e devolve True se as matrizes forem multiplicáveis (número de colunas 
    da primeira é igual ao número de linhs da segunda). False se não forem
    '''
    
    if len(m1) == len(m2[0]):
        return True
    else:
        return False

In [31]:
m1 = [[1, 2, 3], [4, 5, 6]]
m2 = [[2, 3, 4], [5, 6, 7]]
sao_multiplicaveis(m1, m2)


Out[31]:
False

In [32]:
m1 = [[1], [2], [3]]
m2 = [[1, 2, 3]]
sao_multiplicaveis(m1, m2)


Out[32]:
True

In [ ]:


In [ ]:


In [ ]:


In [ ]: