Python

Где ошибка в коде?

Напишите программу, которая запрашивает у пользователя сторону квадрата и символ, а затем рисует этот символ по диагоналям квадрата. Гарантируется, что входное число всегда нечётное.

Формат ввода:
5
#

Формат вывода:

# #
# #
#
# #
# #
Рекомендации к выполнению задания: внимательно изучите рисунок из примера, попробуйте заметить закономерность, по которой он строится.

s = int(input())
char = str(input())
if s % 2 == 1:
for i in range(1, s, 2):
i = ' ' * (i-2) + char + ' ' * (s - (i + 0)) + char + ' ' * (s - (i + 0))
print(i)
for i in range(s, -1, -2):
i = ' ' * (i-2) + char + ' ' * (s - (i + 0)) + char + ' ' * (i - 2)
print(i)
s = int(input())
char = str(input())
if s % 2 == 1:
for i in range(1, s, 2):
i = ' ' * (i-2) + char + ' ' * (s - (i + 0)) + char + ' ' * (s - (i + 0))
print(i)
for i in range(s, -1, -2):
i = ' ' * (i-2) + char + ' ' * (s - (i + 0)) + char + ' ' * (i - 2)
print(i)
5
#
# #
# #
##
# #
# #
В принципе, все правильно, если идти по такому алгоритму... Чуть исправил "кривизну" в центре...

s = int(input())
char = str(input())
if s % 2 == 1:
~~for i in range(1, s, 2):
~~~~i = ' ' * (i-2) + char + ' ' * (s - (i + 0)) + char + ' ' * (s - (i + 0))
~~~~print(i)
~~print(' '*(len(str(int(s)//2))+1)+char) #центральный символ
~~for i in range(s-2, -1, -2):
~~~~i = ' ' * (i-2) + char + ' ' * (s - (i + 0)) + char + ' ' * (i - 2)
~~~~print(i)
Давлат Валиев
Давлат Валиев
79 904
Лучший ответ
Игорь Бережной спасибо вам большое
Всё можно сделать намного проще:

n, ch = int(input()), input()
m = (n - 1) // 2
for i in range(0, n):
~~if i == m: print(' ' * i, ch, sep='')
~~else: print(' ' * (m - abs(m - i)), ch, ' ' * (abs(m - i) * 2 - 1), ch, sep='')
Сергей Хохлов
Сергей Хохлов
61 969
width = int(input())
s: int = 0
p: int
s2 = 0
p = width
for i in range(width):
if s<((width-1)/2):
p -= 2
print(' ' * s,'#', ' ' * p,'#',' ' * s)
s += 1
elif ((width - 1) / 2) == s:
s += 1
print(' ' * s, '#', ' ' * s)
s2=s-1
else:
s2 -= 1
print(' ' * s2,'#', ' ' * p,'#',' ' * s2)
p += 2