петля питона, рисунок пирамиды

1

может кто-нибудь помочь мне с этим кодом. Это должно быть сделано с использованием только для и, если только.

        0
      1 0 1
    2 1 0 1 2
  3 2 1 0 1 2 3
4 3 2 1 0 1 2 3 4

Я устал и думаю каждый материал, но я не понимаю, что мне не хватает. У меня возникла проблема с генерацией 101, 21012, 3210123, 43211234

вот мой код (что неправильно)

for i in range (1,6):
    for t in range (i,5):
        print('\t', end="")
    for j in range (0,(2*i-1)):
        print(2*i-1-j, "\t", end="")
    print("")

введите описание изображения здесь

  • 0
    форматирование нарушается после публикации. Пожалуйста, проверьте изображение прилагается. я
  • 0
    Пожалуйста, исправьте форматирование. По крайней мере, для кода.
Теги:
loops
design-patterns
pyramid

5 ответов

0
Лучший ответ

В каждой строке цифры начинаются высоко, затем спускаются до нуля, а затем снова идут вверх. Поскольку циклы обычно идут только в одном направлении, почему бы не использовать две циклы? Если у вас есть один счетчик циклов от я до одного, а затем следующий счетчик от 0 до i, вы должны получить желаемый результат. Дайте мне знать, если вы хотите, чтобы я разъяснил об этом.

1

Если вы разрешаете использование list-comprehension

num = 4
for i in range(num+1):
    j = [str(n) for n in range(i+1)]
    k = list(reversed(j))
    print (' '.join([' '] * (num-i) + k + j[1:]))

Выход:

        0
      1 0 1
    2 1 0 1 2
  3 2 1 0 1 2 3
4 3 2 1 0 1 2 3 4
  • 0
    это что-то новое. До сих пор я не сталкивался со списком. Я собираюсь учиться об этом. Спасибо
0

Это другое решение, использующее список:

n = 4
lizst = [0]
for h in range (1, n+2):
  print("\t"*(n+1-h), end = "")
  [print(e, "", end = "") for e in lizst]
  lizst = [h] + lizst + [h]
  print()
0

поэтому вот мой последний код, который работает правильно сильным текстом

for i in range (1,6):
    for t in range (i,5):
        print('\t', end="")
    for j in range (0,i):
        print(i-j-1, "\t", end="")
    for k in range (1,i):
        print (k,"\t" ,end="")
    print("")
  • 0
    Попробуйте удалить \t в цикле печати j и k .
0

Soultion используется только для цикла.

spaces=4
limits=0

for line in range(5):
    for space in range(spaces):
        print(' ',end=' ')
    for limit in range(limits,-1,-1):
        print(limit,end=' ')
    for limit in range(1,limits+1):
        print(limit,end=' ')
    spaces-=1
    limits+=1
    print('\n')

Выход

Ещё вопросы

Сообщество Overcoder
Наверх
Меню