dicionário_exemplo = {"nome": "Fulano", "idade": 23, "time": "Botafogo"}


def vogais_em_palavras_na_lista(lista):
    # quero guardar em uma lista as vogais minúsculas encontradas
    vogais = ["a", "e", "i", "o", "u"]
    encontradas = []
    for palavra in lista:
        # palavra primeiro tem valor "Hugo"
        # depois "de"
        # depois "Holanda"
        for letra in palavra:
            if letra in vogais:
                # quero guardar!!
                encontradas.append(letra)
    return encontradas


def tabuada(N=10):
    """
    Retorna a tabuada de multiplicação dos números de 1 a N.
    A tabuada é um dicionário de dicionários;
    o dicionário externo tem como chaves os números de 1 a N,
    que serão usados nas esquerdas das multiplicações.
    Cada valor do dicionário externo é um dicionário interno, cujas
    chaves também são os números de 1 a N, que serão usados nas direitas das
    multiplicações, e os valores são os resultados das multiplicações
    """
    dicionário_externo = {}
    for esquerda in range(1, N + 1):
        dicionário_externo[esquerda] = {}
        for direita in range(1, N + 1):
            ((dicionário_externo)[esquerda])[direita] = esquerda * direita
    return dicionário_externo


def tabuada_v2(N):
    dicionário_externo = {}
    for esquerda in range(1, N + 1):
        dicionário_externo[esquerda] = {
            direita: (esquerda * direita) for direita in range(1, N + 1)
        }
    return dicionário_externo


def tabuada_v3(N):
    return {
        esquerda: {direita: (esquerda * direita) for direita in range(1, N + 1)}
        for esquerda in range(1, N + 1)
    }


############### MATRIZES

matriz_exemplo = [
    [1, 2, 3],
    [7, 8, 9]
]

def soma_elementos(matriz):
    """retorna a soma dos elementos da matriz
    dada."""
    soma_até_aqui = 0
    for linha in matriz:
        for número in linha:
            soma_até_aqui += número
    return soma_até_aqui

def soma_elementos_v2(matriz):
    soma_até_aqui = 0
    for linha in matriz:
        soma_até_aqui += sum(linha)
    return soma_até_aqui

def soma_elementos_v3(matriz):
    return sum([sum(linha) for linha in matriz])

def dimensão(matriz):
    linhas = len(matriz)
    colunas = len(matriz[0])
    return linhas,colunas

def gera_matriz(dimensão):
    """recebe uma tupla de 2 inteiros `dimensão`
    e gera uma matriz de 0s com aquela quantidade de linhas
    e colunas, respectivamente"""
    linhas,colunas = dimensão
    # return [[0]*colunas]*linhas # NÃO!!!
    matriz_gerada = []
    for linha in range(linhas):
        linha_atual = []
        for coluna in range(colunas):
            linha_atual.append(0)
        matriz_gerada.append(linha_atual)
    return matriz_gerada

def soma_matrizes(M, N):
    """documentação aqui"""
    dimensão_M = dimensão(M)
    matriz_soma = gera_matriz(dimensão_M)
    linhas,colunas = dimensão_M
    for linha in range(linhas):
        for coluna in range(colunas):
            matriz_soma[linha][coluna] = M[linha][coluna] + N[linha][coluna]
    return matriz_soma
