Помощь в улучшении кода
Есть задача: Напишите консольную программу, которая выведет в консоль специальный символ “∑”, высота которой вводится с клавиатуры. Пример вывода для высоты 5 представлен ниже:

Есть моё решение:
h = int(input('Введите высоту фигуры: '))
a = ' '
y = int(h // 2)
if h % 2 == 0:
print('Z' * y)
for i in range(0, y-1):
print('', 'Z', sep=a * i)
print('', 'Z', sep=a*(y - 2))
for i in range(0, y-2):
print('', 'Z', sep=a * (y - i - 3))
print('Z' * y)
else:
print('Z' * abs((y + 1)))
for i in range(0, y):
print('', 'Z', sep=a * i)
for i in range(0, y-1):
print('', 'Z', sep=a * (y - i - 2))
print('Z' * abs((y + 1)))
Все работает. Однако есть сомнение в том, что моё решение максимально эффективное. Обращаюсь за помощью в улучшении.
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
Можно сделать короче в 2 раза- 9 строк вместо 18. Изменения:
intне нужен вy.aтолько сбивает, пробел прямо в коде - нагляднее.- Ушли от двух повторяющихся кусков кода.
- Используем тернарный оператор, чтобу уменьшить число строк.
- Убрали
sep, как @insolor советовал. - Не нужен
abs.
h = int(input('Введите высоту фигуры: '))
y = h // 2
print ('Z' * abs((y + 1)) if h % 2 else 'Z' * y)
for i in range(0, y - 1):
print(' ' * i + 'Z')
print (' ' * (y-1) + 'Z' if h % 2 else ' ' * (y - 2) + 'Z')
for i in range(0, y - 2):
print(' ' * (y - i - 3 + h % 2) + 'Z')
print(-2 * ' ' + 'Z' + '\n' + 'Z' * (y + 1) if h % 2 else 'Z' * y )