Мне нужна помощь, чтобы определить, как вернуть все содержимое цикла For (а не только финальной строки) - PullRequest
0 голосов
/ 04 апреля 2019
#Write a function called steps that takes one parameter
#that represents the number of 'steps' to print. It should
#then return a string that, when printed, shows output like
#the following:

Мне удалось написать функцию, шаги, которая принимает параметр с именем number_steps, который представляет количество шагов (которое находится в диапазоне от 1 до 9). Внутри функции я определил пустую строку с именем nstep и написал цикл for с переменной итерации i, которая варьируется от 1 до шагов + 1 (чтобы гарантировать, что она охватила все шаги). Затем я выполнил конкатенацию строк внутри цикла, сделав nstep равным переменной итерации - 1 раз символ табуляции (преобразуя эту операцию в строку) и добавив его к переменной итерации раз 3 (также преобразовав эту операцию в строку). Я поместил оператор print, чтобы показать разные значения nstep во время выполнения цикла, и я возвратил значение в конце nstep с оператором return, имеющим тот же уровень отступа, что и для.

def steps(number_steps):
    nstep = ""
    for i in range(1, (number_steps + 1)):
        nstep = str((i-1) * "\t") + (str(i) * 3)
        print(nstep)
    return nstep

Если функция делает как надо, она вернет строку, которая при печати показывает вывод следующее:

#print(steps(3))
111
    222
        333

#print(steps(6))
111
    222
        333
            444
                555
                    666

Однако в моем случае я получаю следующее. Я бросил оператор print в цикл for, и он выводит строки, как в тестовых примерах, когда цикл работает. Однако, как только цикл завершен и функции выполняют оператор return, он показывает только последнюю строку и игнорирует все предыдущие строки. Чего мне не хватает и как мне исправить?

    333
                666
...