Как «ввести» каждый номер n во вложенном цикле, используя Python - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь написать функцию python с двумя циклами for (один вложенный), принять n чисел и сформировать сетку.Пока у меня есть этот код, и мне просто нужно иметь возможность «войти» после того, как цикл прошел до числа n.

def draw_grid(n):
for i in range(1,n+1,+1):
    for j in range(1,n+1,+1):#(1,n+1,+1) starts at 1, ends at n + 1, adds in increments of 1  
        print(j, end=' ')

draw_grid(3)

печатает:

1 2 3 1 2 3 1 2 3

цель:

1 2 3

1 2 3

1 2 3

, поэтому, если бы я изменил n to equal 5, он бы «вводил» каждое 5-е число.Я попытался поиграть с использованием end=' ' в разных позициях, чтобы заставить это работать, но это просто меняет способ разделения отдельных чисел, а не каждого n числа.

Ответы [ 4 ]

0 голосов
/ 16 октября 2018

Вам не нужно range(1, n+1) для внешнего цикла, он будет одинаковым, независимо от того, с какого числа он начинается, просто для подсчета количества итераций, также вам не нужны дополнительные 1шаги по умолчанию уже 1.Кроме этого вы просто пропустили print() до начала следующей итерации внешнего цикла.

def draw_grid(n):
    for i in range(n):
        for j in range(1, n + 1):
            print(j, end=' ')
        print()

draw_grid(3)
0 голосов
/ 16 октября 2018

Не уверен, требуется ли вам использовать вложенные циклы, но если нет, вы также можете сделать это с помощью одного цикла.

def draw_grid(n):
    for i in range(n):
        print(' '.join([str(i) for i in range(1, n + 1)]))

draw_grid(3)
0 голосов
/ 16 октября 2018

Время от времени я все для однострочников ...

Но это будет гораздо удобнее понять будущим вам или другим разработчикам:

def draw_grid(n):
    items = " ".join(str(i) for i in range(1, n+1)])
    for i in range(n):
        print(items)
0 голосов
/ 16 октября 2018

Вам необходимо добавить оператор print() после вложенного цикла for.

def draw_grid(n):
for i in range(1,n+1,+1):
    for j in range(1,n+1,+1):#(1,n+1,+1) starts at 1, ends at n + 1, adds in increments of 1  
        print(j, end=' ')
    print()

draw_grid(3)
...