задача с звездами

Здравствуйте у меня проблема

input:8
output:
********
 ******
  ****
   **
   **
  ****
 ******
********

my code is

star="*"

i=int(input("input number:"))
j=0
for j in range(i):
    print(j + star*i)
    i=i-2
    j=j+1

k=2

for k in range(i):
    print(star*k)
    k=k+2

Проблема заключается в том что первый треугольник он показывает а второго не видно хоть и в консоли место для него дается


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

Автор решения: Iwan__entry
star="*"                # лучше использовать пробелы при инициализации переменных: star = "*"

i=int(input("input number:"))
j=0                      # питон автоматически инициализирует перменную для цикла, можно убрать строку
for j in range(i):
    print(j + star*i)    # здесь происходит TypeError, поскольку j это целое число (int), в star это строка (str)
    i=i-2                # нельзя сложить строку и число. Мой вариант исправления: print(" " * j, star * i)
    j=j+1                # инкремент в for также предусмотрен, строку можно удалить

k=2

for k in range(i):       # циклы можно итерировать в заданном интервале: for k in (2, i)
    print(star*k)        # звездочки будут печататься, но без пробела. Мой вариант ниже
    k=k+2
   

 

star = "*"
    i = int(input("input number: "))
    
    limiter = i                          # введем новую переменную для того, чтобы не было пустых строк
                                         # обрати внимание, что питон может итерировать через цикл for по отрицательным числам
    
    
    
    for j in range(limiter):
        print(" " * j, star * i, sep='') # нельзя складывать строку и десятичное число
        i -= 2                           # вместо этого помножим пробелы на j.
        if i < 2:                        # пустые строки выводятся, потому что i становится отрицательным
            break                        # к последней итерации i = 0.
    
        # if i < 1:                     еще один момент: для обработки нечетных оснований
        #     break                      нужен логический блок в цикле, сравнивающий с единицей
    
    # tabs = (limiter - 2) // 2         а также переменную для пробелов нужно изменить
    
    tabs = (limiter - 2) // 2
    
    while i < limiter:
        i += 2
        print(" " * tabs, star * i, sep='')     # обрати внимание, что деление должно быть целочисленное,
        tabs -= 1                                 # так как питон при обычном делении автомтаически приводит
                                                         # результат к типу float
→ Ссылка