как создать новую переменную в цикле

Я пытаюсь создать функцию, которая печатает n строк следующей последовательности.

1  
2 3  
4 5 6  
7 8 9 10  
11 12 13 14 15  
...

это то, что у меня есть до сих пор:

def numTriangle(n):  
    #n = number of rows  
    integers = range(0,n-1)  
    val = 1  
    places = 1  
    for num in integers:  
        print val   
        val = val + 1  

Я понял, что мне нужно сделать цикл, в котором он печатает значение, затем добавляет его, но также создает новую переменную, которая на единицу больше предыдущей, и печатает исходное значение + 1, новую переменную и так далее. Как мне создать новую переменную для каждой строки, или есть ли другие альтернативы этой функции, например печать дополнительной части индекса для каждой строки?


person Andrew S    schedule 04.10.2016    source источник
comment
Разбейте задачу на основные компоненты и приступайте к программированию. Вы знаете, что вам нужен цикл, range(1, N) подойдет для этого. Вы знаете, что вам нужно печатать числа в непрерывной строке, пока не будет достигнуто определенное количество, а затем напечатать новую строку. Отслеживайте текущее количество, ожидаемое количество в строке и количество приращений в строке, сбрасывайте счетчик, когда это имеет смысл. Начните что-нибудь и отредактируйте свой вопрос, чтобы показать, что вы пробовали.   -  person sberry    schedule 04.10.2016


Ответы (2)


Не пытаюсь делать за вас домашнюю работу, но у вас есть хотя бы базовое описание вашего плана. Вот довольно минимальная версия.

def pyramid(n):
    k = 1
    for i in range(n):
        print ' '.join(map(str, range(k, k+i+1)))
        k += i + 1

Вот более подробная версия.

def pyramid(n):
    k = 1
    for i in range(1, n +1):
        first_number = k
        next_row_first_number = k + i
        numbers = range(first_number, next_row_first_number)
        numbers_as_strings = map(str, numbers)
        line = ' '.join(numbers_as_strings)
        print line
        k = next_row_first_number

И несколько петель!

def pyramid(n):
    k = 1
    for i in range(1, n +1):
        first_number = k
        next_row_first_number = k + i
        numbers = range(first_number, next_row_first_number)
        line = ""
        for num in numbers:
            line = line + str(num) + ' '
        print line
        k = next_row_first_number
person Logan Byers    schedule 04.10.2016

Это производит ваш вывод:

n = 6; y= 1;

for i in range(0,n):
    for j in range (0,i):
        print y,
        y = y+1;
    print "\n"

Обратите внимание на отступ, отступ определяет области.

person Prabin Upreti    schedule 04.10.2016