''' Program konstruujący i wypisujący trójkąt Pascala - w wersji sprytnie oszacowującej szerokość ''' #import paru funkcji z math, factorial ma nadany alias fc żeby się mniej napisać from math import factorial as fc, ceil, log10 def wypisz_poziom(lista,maxw): #maxw to maksymalna szerokość pola z liczbą #.center centruje każdy poziom w polu o szerokości maxw print(''.join([str(i).center(maxw) for i in lista]).center(maxw*x)) #print(' '.join(map(str,lista)).center(maxw*x)) x = int(input("Podaj liczbę poziomów: ")) #x jednocześnie jest długością ostatniego wiersza k=x//2+1 #indeks największego elementu (leży on w środku ostatniego wiersza) #ze wzoru na dwumian Newtona, po czym log10 żeby zobaczyć ile mamy cyfr w dziesiętnym zapisie: szer = ceil(log10(fc(x)/(fc(k)*fc(x-k)))) + 1 poziom = [1] wypisz_poziom(poziom,szer) for i in range(x - 1): kolejny_poziom = [1] for j in range(len(poziom) - 1): kolejny_poziom.append(poziom[j] + poziom[j + 1]) kolejny_poziom.append(1) poziom = kolejny_poziom wypisz_poziom(poziom,szer)