def printa_tabela(cabeçalho, colunas, passo=False):
    print()
    
    # calculando larguras
    larguras = []
    for i,cab in enumerate(cabeçalho):
        M = len(cab)
        for x in  colunas[i]:
            M = max(M, len(str(x)))
        larguras.append(M)

    texto_cab = ' ' + ' │ '.join([f"{x:^{larguras[i]}}" for i,x in enumerate(cabeçalho)])
    print(texto_cab)

    sep_cab = ' ' + '─┼─'.join([f"{'─'*larguras[i]}" for i,x in enumerate(cabeçalho)])
    print(sep_cab)

    # vamos preencher as colunas com '-' para que todas fiquem com o mesmo tamanho

    compr_max = max(len(col) for col in colunas)
    for col in colunas:
        col.extend(['-']*(compr_max - len(col)))

    # agora imprime cada linha da tabela
    for linha,_ in enumerate(colunas[0]):
        texto_linha = ' ' + ' │ '.join([f"{coluna[linha]:>{larguras[i]}}" for i,coluna in enumerate(colunas)])
        if not passo:
            print(texto_linha)
        else:
            print(texto_linha, end='')
            input(' ')

    print()

def gera_a_b(n=3):
    return randrange(10**n, 10**(n+1)), randrange(10**n, 10**(n+1))
