Там, где пара мест, где вы выводите 1 пробел между числами. Я добавил комментарии к коду ниже, чтобы указать, где это происходит. Изменяя длину пробела между числами в соответствии с длиной самого длинного числа, мы можем сделать так, чтобы все отображалось в четных четных столбцах.
print("Fourth Number Pattern")
lastNumber = 9
length_of_longest_number = len(str( max(2 ** (9-2), 1) ))
s = length_of_longest_number # The number of spaces we will be putting in between numbers
for i in range(1, lastNumber):
for j in range(lastNumber-i):
print(' ' * s, end=' ') # Was outputting 1 space before
for j in range(1,i):
if(lastNumber>=6):
print(format(2**(j-1), str(s)+"d"), end=' ') # Was outputting 1 space before
for i in range(-1+i, -1, -1):
print(format(2**i, str(s)+"d"), end=' ')
print("")
Вывод:
1
1 2 1
1 2 4 2 1
1 2 4 8 4 2 1
1 2 4 8 16 8 4 2 1
1 2 4 8 16 32 16 8 4 2 1
1 2 4 8 16 32 64 32 16 8 4 2 1
1 2 4 8 16 32 64 128 64 32 16 8 4 2 1