на вход одно целое число на выход подаёт треугольник в виде символов

Решаю задачу.


Входные данные: число.


Выходные данные: программа строит равнобедренный треугольник из символов. Длина равных сторон у треугольника равна введенному ранее числу.


Вопрос: Не могу разобраться. Верх строится корректно, а нижняя часть нет На вход 3 вывод

X
XX
X X
XX
X
n = 5
# n = int(input())
for i in range(n):
    if i == 0:
        print('X')
    elif i== 1:
        print("XX")
    else:
      print('X' + ' ' * (i-1) + 'X')

for i in range(n//2, n-1):
    if i == n-1:
        print('X')
    elif i == n-2:
        print('XX')
    else:
        print('X' + ' ' * (i-1) + 'X')
        i *= 1
print('X')

Ответы (1 шт):

Автор решения: Алексей Р

В вашем коде нужно второй цикл сделать зеркальным первому, с шагом -1 for i in range(n - 2, -1, -1):, а условия внутри те же самые, что и в первом цикле

n = 5
# n = int(input())
for i in range(n):
    if i == 0:
        print('X')
    elif i == 1:
        print("XX")
    else:
        print('X' + ' ' * (i - 1) + 'X')

for i in range(n - 2, -1, -1):
    if i == 0:
        print('X')
    elif i == 1:
        print('XX')
    else:
        print('X' + ' ' * (i - 1) + 'X')
X
XX
X X
X  X
X   X
X  X
X X
XX
X

Код можно немного сократить:

n = 5
for i in list(range(n)) + list(range(n - 2, -1, -1)):
    print(f'X{" " * (i - 1)}X' if i else 'X')
→ Ссылка