Как напечатать строку в каждой строке с некоторым пробелом от первой строки?

#python #python-3.x #for-loop

#python #python-3.x #for-цикл

Вопрос:

Я не написал четкую тему, потому что я не знал, что написать об этом, извините в первую очередь.

Чего я хочу достичь, так это:

 a
    a
        a
            a
                a
            a
        a
    a
a
  

С for помощью цикла я думаю, что смогу достичь этого, но то, что я пытаюсь, совершенно неверно.

Комментарии:

1. Этот код не имеет ничего общего с тем, чего вы хотите достичь. Вы понимаете, что делает каждая строка кода? Или у вас есть представление о том, что вы ожидали от каждой строки? Более конкретно: какой эффект вы ожидаете increment = 1 от всего этого кода? В чем заключается идея a * 2 ? Почему a = 'a ' ?

2. Кстати, причина, по которой вы не смогли придумать хороший заголовок, заключается в том, что у вас нет вопроса. Вы должны выяснить, в чем заключается ваш вопрос (кроме «помогите мне», который не является вопросом).

3. Спасибо @zvone, increment = 1 это было в моем старом коде, извините, это не имеет никакого отношения к моему коду. Что касается a * 2 того, что я пытался получить результат, который был совершенно неправильным. Как правило, так и какие эксперты, подобные вам, кроме, я только что опубликовал свои попытки, независимо от того, были ли они неправильными. Теперь я редактирую свой пост, чтобы удалить increment часть.

4. И теперь у вас есть код, который печатается a * 2 десять раз. Это даже не попытка решить поставленную задачу.

5. @zvone Я знаю это, спасибо.

Ответ №1:

Возможно, вы блокируете что-то подобное.

 a = 'a    '
space = 't'

for c in range(5):
    print(space*c   a)

for c in range(5,0,-1):
    print(space*c   a)
  

Ответ №2:

Вы можете сделать это рекурсивно:

 def print_angle(s, start, end, direction):
    indent = "  "*start
    print(f"{indent}{s}")

    if start < end-1 and direction:
        print_angle(s, start 1, end, 1)
    elif start > 0:
        print_angle(s, start-1, end, 0)

print_angle('a', 0, 5, 1)
  

Это печатает:

 a
   a
      a
        a
           a
        a
      a
   a
a
  

Идея здесь заключается в:

1. Передайте нужный символ в print — a в этом случае.

2. Передайте начальную точку — 0 отступов в этом случае.

3. Передайте конечную точку — всего осталось 5.

4. Укажите направление, в котором нужно двигаться — 1 вверх, 0 вниз.

5. Идите рекурсивно вверх, пока не дойдете до конца, сохраните направление, сначала вверх.

6. Идите рекурсивно вниз, пока не достигнете 0 и не завершите работу.

Ответ №3:

Ваш increment счетчик бесполезен в вашем коде.

Я бы подошел к этому так:

 column_num = 0
for i in range(10):  # rows
    for j in range(10):  # cols
        if j == column_num:
            print("a", end='')
        else:
            print(' ', end='')
    print()  # newline
    column_num  = 1

#then reverse:
column_num -= 1
for i in range(10): #rows
    for j in range(10): #cols
        if j == column_num:
            print("a", end = '')
        else:
            print(' ', end = '')
    print() #newline
    column_num -= 1
  

Комментарии:

1. Спасибо, но в Python // не комментирует строку, вместо # этого делает то, что я использовал и работал, спасибо.