Как я могу напечатать пустое пространство для каждого элемента списка, который равен нулю, не изменяя исходный список? - PullRequest
0 голосов
/ 28 февраля 2020

Итак, я пытаюсь сделать числовую игру, где вы вводите числа, и вы выигрываете, если сначала вы добавляете до 15 по горизонтали / вертикали / диагонали

. просто поместите нули в пустой список. Но в конце концов я заменю нули числами больше нуля.

Я хочу напечатать палец ноги ti c ta c в следующем формате:

        0   1   2  
     0    |   |   
       -----------
     1    |   |   
       -----------
     2    |   |

поэтому я использовал этот код -

print("    0   1   2 ")
        for row in range(self.size):
            print(" {0}  {1} | {2} | {3}  ".format(row, self.board[row][0], self.board[row][1], self.board[row][2]))
            if row < 2:
                print('   -----------')

, но он печатает

        0   1   2  
     0  0 | 0 | 0 
       -----------
     1  0 | 0 | 0 
       -----------
     2  0 | 0 | 0

Я хочу напечатать пустое место, где в списке есть ноль (без изменения фактического list), поэтому, если элемент в списке больше 0, тогда мы печатаем его, иначе мы печатаем пустое пространство

Одно из решений проблемы заключается в следующем:

print("    0   1   2 ")
            for row in range(self.size):
                print(" {0}  {1} | {2} | {3}  ".format(row, self.board[row][0] if self.board[row][0]> 0 else ' ', self.board[row][1] if self.board[row][1]> 0 else ' ', self.board[row][2] if self.board[row][2]> 0 else ' '))
                if row < 2:
                    print('   -----------')

Но в этом случае, строка содержит более 120 символов, что недопустимо. Я также не хочу использовать a для l oop внутри другого для l oop, потому что это только увеличит сложность и время выполнения

что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Вы можете попытаться использовать списочное понимание, чтобы уменьшить количество символов, но это, к сожалению, не помогает в уменьшении сложности. Пожалуйста, имейте в виду, что это просто используется в качестве примера.

board = np.zeros((3,3))


print("    0   1   2 ")
for row in range(3):
    a = [board[row][i] if board[row][i] else "" for i in range(3)]
    print(" {0}  {1} | {2} | {3}  ".format(row, a[0], a[1], a[2] ))
    if row < 2:
        print('   -----------')
0 голосов
/ 28 февраля 2020

Я пытался нарисовать это, это еще не Pythoni c, но вывод выглядит хорошо

board = [[0,0,2],[0,1,0],[0,7,0]]

print('    0   |   1   |   2')
print('---------------------')

rowCount = 0
for eachRow in board:
    temp = "  |  ".join(str(x) for x in eachRow)
    temp = temp.replace("0", " " )
    print(str(rowCount)  + ' |   ' + temp)
    print('---------------------')
    rowCount = rowCount + 1

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...