board = []
for integer in range(1,6):
    board.append("O")
print(str(board)*5)

Это мой код Моя проблема в том, что вывод не выходит в виде сетки 5х5. Я пропускаю другой цикл? (Я знаю, что, возможно, я мог бы также использовать списочные выражения).

Благодарю вас.

0
Edgar Aroutiounian 24 Янв 2013 в 22:57

4 ответа

Лучший ответ

Если вы хотите 5x5 сетку, вы могли бы join результаты ...

'\n'.join([' '.join(board)]*5)

Пример:

>>> board = ['0']*5
>>> print '\n'.join([' '.join(board)]*5)
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

Чтобы получить результат, который вы ищете, вы можете сделать

>>> board = [['0'] for _ in range(5)]
>>> board
[['0'], ['0'], ['0'], ['0'], ['0']]
>>> print '\n'.join(str(board) for _ in range(5))
[['0'], ['0'], ['0'], ['0'], ['0']]
[['0'], ['0'], ['0'], ['0'], ['0']]
[['0'], ['0'], ['0'], ['0'], ['0']]
[['0'], ['0'], ['0'], ['0'], ['0']]
[['0'], ['0'], ['0'], ['0'], ['0']]
2
mgilson 24 Янв 2013 в 19:15

ВЫ НЕ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ ПРИСОЕДИНЯЙТЕСЬ ДЛЯ ПЕЧАТИ ДАННЫХ В КОЛОННАХ, ПОТОМУ ЧТО ОНИ НЕ ВЫРАВНИВАЮТСЯ, КОГДА У ВАС ДАННЫЕ НЕСКОЛЬКО ЧИСЛ. ИСПОЛЬЗУЙТЕ ФОРМАТИРОВАНИЕ СТРОК ВМЕСТО .

boardLst = [[0 for i in range(1,6)]]*5
for board in boardLst:
    print "  %4d"*len(board) % tuple(board), "\n"

 0     0     0     0     0 

 0     0     0     0     0 

 0     0     0     0     0 

 0     0     0     0     0 

 0     0     0     0     0 

Число четыре в строковом форматере указывает минимальное расстояние между символами.

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

import random
boardLst = [[random.randint(1,125) for i in range(1,5)] for _ in range(8)]
for board in boardLst:
    print " %5d "*len(board) % tuple(board), "\n"


  107     93     10     73  

   65     68     81     61  

   49     75     58     18  

   48     78     18     37  

   82      4     78    101  

   20      9     68     86  

   24     77     20     52  

   20    120     93     21
0
Michael David Watson 24 Янв 2013 в 20:06
In [22]: board = [['O'] * 5 for _ in range(5)]

In [23]: print('\n'.join(''.join(row) for row in board))
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
1
NPE 24 Янв 2013 в 19:00

Вы пропустите перевод строки:

 print(('0'*6+'\n')*5)
1
Jo So 24 Янв 2013 в 19:03