Вы можете вычислить ширину пробелов слева, разделив по полу общую ширину без границы на 2, и вычислить ширину хешей справа, вычитая эту ширину из общей ширины без границы (Я заменил ваши вспомогательные функции для лучшей воспроизводимости):
def halfAndHalf(size):
print('Half and half square of size', size)
for i in range(size):
print('*', end='')
print('\n', end='')
for i in range(size - 2):
padding_size = size // 2 - 1
print('*', end='')
for j in range(padding_size):
print(' ', end='')
for j in range(size - 2 - padding_size):
print('#', end='')
print('*', end='')
print('\n', end='')
for i in range(size):
print('*', end='')
print('\n', end='')
Обратите внимание, что вместо цикла для многократной печати символа вы можете использовать оператор повтора для строк, поэтому приведенный ниже код будет достаточным и болеечитабельно:
def halfAndHalf(size):
print('Half and half square of size', size)
print('*' * size)
padding_size = size // 2 - 1
for i in range(size - 2):
print('*' + ' ' * padding_size + '#' * (size - 2 - padding_size) + '*')
print('*' * size)