2014-12-05 3 views
-1

Мне нужна печать игрового поля 2048 на экран, и я разработал для этого функцию, но учитель не попросил меня сделать это.Печать словаря с форматом

мой учитель хочет, чтобы это сделать, как этот

[ x ] [ x ] [ x ] [ x ] 
[ x ] [ x ] [ x ] [ x ] 
[ x ] [ x ] [ x ] [ x ] 
[ x ] [ x ] [ x ] [ x ] 
Score: 

где х имеет значение в словаре борту.

Проблема, я сделал это:

def tabuleiro_print(t): 

    for c in range(1, 5): 
      for i in range(1, 5): 
       print '{:2d}'.format(t[i,c]), 
      print 
    print 

, где Т представляет словарь, содержащий настольную координаты и значение в следующем формате: {(1,1): значение, (1,2): значение2 .... и так далее}

но мое возвращение:

2 
16 
2 
0 
4 
64 
4 
2 
2 
32 
16 
4 
8 
4 
8 
2 

Как я могу обойти это?

спасибо.

+1

я не получаю выход вы требовать, 'tabuleiro_print ({(x, y): 1 для x, y в произведении (диапазон (1, 5), repeat = 2)}) '(после' from itertools import product') печатает аккуратную сетку '1' s. – jonrsharpe

+0

Не используйте Python2, это не будущее. – nbro

+0

Я использую python3. –

ответ

-1
def printIt(table): 
    maxY, maxX = table.keys()[len(table) - 1] 
    for i in range(1, maxY + 1): 
     for j in range(1, maxX + 1): 
      print '[%s]' % table[(i,j)], 
     print 

Это должно сделать трюк

EDIT: Я не знаю, как сделать это в PY3, это только для 2,7

+0

Это не сработало, я изменил таблицу для моей переменной, и я получил это: builtins.TypeError: объект «dict_keys» не поддерживает индексирование –

+0

Это не имеет смысла. Словари * неупорядочены *, поэтому нет никакой гарантии, что «последний» ключ будет самым большим. – jonrsharpe

+0

Ну, мне нужно сделать это с помощью ключей dict, поэтому я использую 2 для петель, чтобы пройти через мой dict –

Смежные вопросы