Как использовать для циклов в сочетании с оператором печати - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть матрица (я не использую numpy):

matrix = [           
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],   
]

, и я хотел бы написать функцию, которая печатает эту матрицу в табличной форме, так что print (function (matrix))будет отображаться:

. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .

или любое другое значение определенного '.'был заменен на всю мою программу.

В настоящее время у меня есть:

def printMatrix(matrix):
    for i in matrix:   
        print(' '.join(i))

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

Ответы [ 5 ]

0 голосов
/ 29 декабря 2018

Или сделайте printMatrix ниже:

def printMatrix(matrix):
    s=''
    for i in matrix:   
        s += (' '.join(i)+'\n')
    return s

И теперь ваш код будет работать как положено.

0 голосов
/ 29 декабря 2018

[print(*mat) for mat in matrix]

Выход:

. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
0 голосов
/ 29 декабря 2018
matrix = [           
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],   
]

for line in matrix:
    print(*line, sep=' ')


. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
0 голосов
/ 29 декабря 2018

Я не совсем понимаю, что вы просили в первой части вопроса.Но вторая часть очень проста.В качестве примера вы привели 2D-массив.

Код

for row in matrix:
    for r in row:
        print(r, end=" ")
    print ("\n")

ИЛИ

def printmatrix (matrix):
    for row in matrix:
        for r in row:
            print(r, end=" ")
        print ("\n")
0 голосов
/ 29 декабря 2018

Ваша функция уже выполняет печать, нет необходимости использовать print() при ее вызове.Поэтому измените:

print(printMatrix(matrix))

на просто:

printMatrix(matrix)

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

Кроме того, вы можете изменить функцию, чтобы она возвращала отформатированную матрицу в виде строки, а не печатала сама:

def formatMatrix(matrix):
    return "\n".join(" ".join(row) for row in matrix)

print(formatMatrix(matrix))
...