Escreva um código em Python que transforma uma matriz M composta por inteiros positivos maiores que zero em duas matrizes I e P. Na matriz I, coloque todos os elementos ímpares e na matriz P todos os elementos pares. Coloque os elementos no mesmo local que eles estavam originalmente em M. Complete as matrizes com 0 . Exemplo:
M=[[1,2],[3,4]]
P=[[0,2],[0,4]]
I=[[1,0],[3,0]]

Passo 1

Beleza, vamos começar entendendo o que a questão está pedindo. A gente tem uma matriz M cheia de números inteiros positivos maiores que zero. A tarefa é criar duas novas matrizes, I e P. Na matriz I, a gente coloca todos os números ímpares da M na mesma posição onde eles estavam originalmente, e substituímos os outros números por 0. Já na matriz P, fazemos o contrário: colocamos os números pares de M nas suas posições originais e substituímos os ímpares por 0. Para isso, vamos precisar trabalhar com listas em Python e usar estruturas de repetição e condições para verificar se um número é par ou ímpar.

Passo 2

Primeiro, vamos pensar em como representar a matriz M em Python. A gente pode usar uma lista de listas, onde cada sublista representa uma linha da matriz. Por exemplo:
M = [[1, 2], [3, 4]]

Passo 3

Agora, vamos criar as matrizes I e P com a mesma estrutura de M, mas preenchidas inicialmente com zeros. Isso é importante porque, se um elemento não atender à condição (ser ímpar ou par), ele vai ficar como 0. Podemos fazer isso usando uma list comprehension que percorre cada linha e cada elemento, preenchendo com 0:
I = [[0 for _ in range(len(M[0]))] for _ in range(len(M))]
P = [[0 for _ in range(len(M[0]))] for _ in range(len(M))]

Passo 4

Vamos agora percorrer cada elemento da matriz M para verificar se ele é par ou ímpar. Para isso, usamos dois loops for: um para as linhas e outro para os elementos dentro das linhas. A função % (módulo) nos ajuda a determinar se um número é par (num % 2 == 0) ou ímpar (num % 2 != 0).
for i in range(len(M)):
    for j in range(len(M[0])):
        num = M[i][j]
        if num % 2 == 0:
            P[i][j] = num
        else:
            I[i][j] = num

Passo 5

Vamos juntar tudo isso em uma função para deixar o código mais organizado. A função vai receber uma matriz M e retornar as matrizes I e P conforme as regras que definimos.
def separar_matriz(M):
    I = [[0 for _ in range(len(M[0]))] for _ in range(len(M))]
    P = [[0 for _ in range(len(M[0]))] for _ in range(len(M))]
    
    for i in range(len(M)):
        for j in range(len(M[0])):
            num = M[i][j]
            if num % 2 == 0:
                P[i][j] = num
            else:
                I[i][j] = num
    return I, P

Passo 6

Por fim, vamos testar a nossa função com o exemplo dado na questão para ver se está funcionando certinho.
M = [[1, 2], [3, 4]]
I, P = separar_matriz(M)
print("I =", I)
print("P =", P)
Ao rodar esse código, a saída deve ser:
I = [[1, 0], [3, 0]]
P = [[0, 2], [0, 4]]

Resposta

Prontinho! O código completo para separar a matriz M em I e P está funcionando conforme o exemplo:
def separar_matriz(M):
    I = [[0 for _ in range(len(M[0]))] for _ in range(len(M))]
    P = [[0 for _ in range(len(M[0]))] for _ in range(len(M))]
    
    for i in range(len(M)):
        for j in range(len(M[0])):
            num = M[i][j]
            if num % 2 == 0:
                P[i][j] = num
            else:
                I[i][j] = num
    return I, P

# Exemplo de uso
M = [[1, 2], [3, 4]]
I, P = separar_matriz(M)
print("I =", I)
print("P =", P)
E a saída será:
I = [[1, 0], [3, 0]]
P = [[0, 2], [0, 4]]

Exercícios relacionados