Прежде всего, я предполагаю, что вы действительно не хотите, чтобы напечатать что у значение 10; что вы действительно хотели уменьшить базовое 10 до 0. Обратите внимание, что у вас есть дополнительный символ в базе пирамиды.
Do не изменить значение параметра цикла, когда вы находитесь внутри цикла. В частности, не меняйте y в пределах для y.
Get rid c; вы можете получить его из других значений.
Для гибкости сделайте свой верхний предел параметром: у вас есть две константы (6 и 7), которые зависят от одного понятия (предел строки).
Вот моя версия:
row_limit = 7
for y in range(1, row_limit):
print()
print((row_limit-y-1) * " ", end="")
for x in range(y, 2*y):
print(x%10, end="")
for x in range(2*(y-1), y-1, -1):
print(x%10, end="")
print()
Выход:
1
232
34543
4567654
567898765
67890109876
Если вы действительно хотите, чтобы толкать вещи, вы можете сократить циклы с конкатенации и понимания, но это, вероятно, труднее читать для вас.
for y in range(1, row_limit):
print()
print((row_limit-y-1) * " " + ''.join([str(x%10) for x in range(y, 2*y)]) + \
''.join([str(x%10) for x in range(2*(y-1), y-1, -1)]), end="")
print()
Каждая из петель превращается в список понимания, такие как:
[str(x%10) for x in range(y, 2*y)]
Затем этот список персонажей соединяется с не интерстициального характера; это составляет половину строки. Вторая половина строки - это другой цикл (отсчет). Перед этим я конкатенирую необходимое количество пробелов.
Честно говоря, я предпочитаю свою первую форму.