def Leibniz(n):
    """Retorna o n-ésimo termo da sequência de Leibniz"""
    return ((-1)**n)/((2*n)+1)

def soma_pi_Leibniz(quantidade_termos):
    """Calcula uma aproximação para pi
    usando quantidade_termos termos da série
    de Leibniz"""
    soma = 0
    for contador in range(quantidade_termos):
        soma += Leibniz(contador)
    return 4*soma

def quantidade_de_termos_para_aproximar(erro):
    """Determina quantos termos no mínimo precisamos
    usar na série de Leibniz para obter uma aproximação
    de pi com erro absoluto no máximo o erro dado como
    parâmetro"""
    from math import pi
    contador = 0
    soma_atual = 4*Leibniz(0)
    while abs(soma_atual - pi) >= erro:
        contador += 1
        soma_atual += 4*Leibniz(contador)
    return contador

import random
def sorteia_valores(n):
    valores = []
    for i in range(n):
        v = random.randint(0, 100)
        list.append(valores,v)
    return valores

def sorteia_10_diferença_menor_50():
    sorteio = sorteia_valores(10)
    while max(sorteio) - min(sorteio) >= 50:
        sorteio = sorteia_valores(10)
    return sorteio

def sorteia_soma_n_não_repetido(n):
    """..."""
    lista_sorteada = []
    sorteio = random.randint(0,100)
    while sum(lista_sorteada) < n:
        sorteio = random.randint(0,100)
        while sorteio in lista_sorteada:
            sorteio = random.randint(0,100)
        list.append(lista_sorteada,sorteio)
    return lista_sorteada

def exibe_matriz(matriz):
    """Recebe uma matriz qualquer e imprime na tela"""
    for linha in matriz:
        for elemento in linha:
            print(elemento, end=' ')
        print()

def ler_matriz():
    """Recebe uma matriz do usuário"""
    matriz = []
    quantidade_linhas = int(input("Quantas linhas? "))
    quantidade_colunas = int(input("Quantas colunas? "))
    for posição_linha in range(quantidade_linhas):
        linha = []
        for posição_coluna in range(quantidade_colunas):
            elemento = int(input(str.format("Qual elemento na linha {} e coluna {}? ",posição_linha,posição_coluna)))
            list.append(linha,elemento)
        list.append(matriz,linha)
    return matriz

def triangular_inferior(matriz):
    """Recebe uma matriz e retorna True se ela for triangular inferior, False em caso contrário"""
    for posição_linha in range(len(matriz)):
        for posição_coluna in range(posição_linha+1, len(matriz[0])):
            elemento = matriz[posição_linha][posição_coluna]
            if elemento != 0:
                return False
    return True

def main():
    """Pede ao usuário valores m e n, lê uma matriz m x n, 
    exibe a matriz, e se a matriz informada for triangular
    inferior exibe a mensagem 'A matriz é triangular inferior',
    caso contrário exibe a mensagem 'A matriz não é triangular
    inferior'"""
    matriz = ler_matriz()
    print()
    exibe_matriz(matriz)
    print()
    if triangular_inferior(matriz):
        print("A matriz é triangular inferior")
    else:
        print("A matriz não é triangular inferior")
