def pascal(num_linhas): pascal_dict = {(0,0): 1} for n in range(1,num_linhas+1): for k in range(n+1): if k == 0 or k == n: pascal_dict[(n,k)] = 1 else: pascal_dict[(n,k)] = pascal_dict[(n-1,k-1)] + pascal_dict[(n-1,k)] return pascal_dict def gera_linhas(num_linhas): pascal_dict = pascal(num_linhas) linhas = {0: '1'} max_len_num = 0 for n in range(num_linhas+1): max_len_num = max(max_len_num,max(len(str(pascal_dict[(n,k)])) for k in range(n+1))) for n in range(num_linhas+1): linhas[n] = ' '.join([f'{pascal_dict[(n,k)]:^{max_len_num}}' for k in range(n+1)]) max_len_linha = max([len(l) for l in linhas.values()]) return linhas, max_len_linha, max_len_num def printa_centralizado(num_linhas): print() linhas, max_len_linha,_ = gera_linhas(num_linhas) L = len(str(num_linhas)) for n,l in enumerate(linhas.values()): print(f'{n:>{L}} ┃ {l:^{max_len_linha}}') def printa_esquerda(num_linhas): print() linhas, max_len_linha, max_len_num = gera_linhas(num_linhas) L = len(str(num_linhas)) cab = " ".join([f'{k:^{max_len_num}}' for k in range(num_linhas + 1)]) sep = '━'*(L + 1) + '╋' + '━'*(len(cab) + 1) print(f'{"":>{L}} ┃ {cab}') print(sep) for n,l in enumerate(linhas.values()): print(f'{n:>{L}} ┃ {l}')