задача с звездами
Здравствуйте у меня проблема
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