Python 压缩文本而不更改缩进

Python 压缩文本而不更改缩进,python,grid,Python,Grid,在Python中,我试图创建一个游戏,允许玩家在网格上输入一个位置,并从他们的位置对多个实例进行检查,并收集某个变量的x数量 我有一个功能,允许用户使用8x8网格或12x12网格。为了生成12x12网格,我直接从8x8网格中通过代码剪切和复制,更改整数,使其打印12行和12列 如果用户选择8x8栅格,代码将完美打印: -------------------------- 1 2 3 4 5 6 7 8 1 . . . . . . . . 2 . .

在Python中,我试图创建一个游戏,允许玩家在网格上输入一个位置,并从他们的位置对多个实例进行检查,并收集某个变量的x数量

我有一个功能,允许用户使用8x8网格或12x12网格。为了生成12x12网格,我直接从8x8网格中通过代码剪切和复制,更改整数,使其打印12行和12列

如果用户选择8x8栅格,代码将完美打印:

-------------------------- 
   1  2  3  4  5  6  7  8 
1  .  .  .  .  .  .  .  . 
2  .  .  .  .  .  .  .  . 
3  .  .  .  .  .  .  .  . 
4  .  .  .  .  .  .  .  . 
5  .  .  .  .  .  .  .  . 
6  .  .  .  .  .  .  .  . 
7  .  .  .  .  .  .  .  . 
8  0  .  .  .  .  .  .  .  
-------------------------- 
但是,当12x12网格生成为“10,11和12”时,由于代码是从8x8网格剪切和粘贴的,因此缩进会使网格上较低的行缩进错误

--------------------------------------- 
   1  2  3  4  5  6  7  8  9  10  11  12   
1  .  .  .  .  .  .  .  .  .  .  .  . 
2  .  .  .  .  .  .  .  .  .  .  .  . 
3  .  .  .  .  .  .  .  .  .  .  .  . 
4  .  .  .  .  .  .  .  .  .  .  .  . 
5  .  .  .  .  .  .  .  .  .  .  .  . 
6  .  .  .  .  .  .  .  .  .  .  .  . 
7  .  .  .  .  .  .  .  .  .  .  .  . 
8  .  .  .  .  .  .  .  .  .  .  .  . 
9  .  .  .  .  .  .  .  .  .  .  .  . 
10  .  .  .  .  .  .  .  .  .  .  .  . 
11  .  .  .  .  .  .  .  .  .  .  .  . 
12  0  .  .  .  .  .  .  .  .  .  .  . 
--------------------------------------- 
以下是生成我的网格的示例代码:

for i in range(-1+(coordinate[0])):
   print(length," . "*12)
   length=length+1
print(length," . "*((coordinate[1])-1),counter," . "*(11-coordinate[1]))
length=length+1
for i in range(12-coordinate[0]):
   print(length," . "*12)
   length=length+1
长度指的是行号,行号以1开头,每个循环加1,以便打印新的行号


我想知道是否有一个快速修复,以便,例如,缩小行数,使其适合作为一行;任何这样的修复都可以正常工作。任何关于如何快速修复此压痕的想法都将非常有用。我是一个相对较新的海报,所以任何我可能错过的信息,只需给我留言

简单的答案是使用指定的宽度。例如:

>>> for n in (1, 18, 100):
...     print '---|{:>3}|---'.format(n) # 3 is the width, > is to right justify
...
---|  1|---
---| 18|---
---|100|---
我编写了一个简短的类来封装您的网格:

class SquareGrid(object):
    def __init__(self, size, empty_spot='.'):
        self._size = size
        self._empty_spot = empty_spot
        self._grid = [[empty_spot for _ in range(size)] for __ in range(size)]

    def set_marker(self, row, col, marker):
        self._grid[row-1][col-1] = marker

    def clear_marker(self, row, col):
        self._grid[row-1][col-1] = self._empty_spot

    def display(self):
        label_width = len(str(self._size))
        label_format = '{{:>{}}}'.format(label_width)
        labels = [label_format.format(i+1) for i in range(self._size)]
        print(' ' * (label_width), ' '.join(labels))
        for label, row in zip(labels, self._grid):
            print(label, ' '.join(label_format.format(marker) for marker in row))
这就是它的作用:

>>> grid = SquareGrid(15)
>>> grid.set_marker(15, 15, "x")
>>> grid.set_marker(2, 8, "o")
>>> grid.set_marker(13, 3, "x")
>>> grid.set_marker(3, 10, "o")
>>> grid.display()
    1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
 1  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 2  .  .  .  .  .  .  .  o  .  .  .  .  .  .  .
 3  .  .  .  .  .  .  .  .  .  o  .  .  .  .  .
 4  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 5  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 6  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 7  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 8  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 9  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
10  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
11  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
12  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
13  .  .  x  .  .  .  .  .  .  .  .  .  .  .  .
14  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
15  .  .  .  .  .  .  .  .  .  .  .  .  .  .  x

简单的答案是使用指定的宽度。例如:

>>> for n in (1, 18, 100):
...     print '---|{:>3}|---'.format(n) # 3 is the width, > is to right justify
...
---|  1|---
---| 18|---
---|100|---
我编写了一个简短的类来封装您的网格:

class SquareGrid(object):
    def __init__(self, size, empty_spot='.'):
        self._size = size
        self._empty_spot = empty_spot
        self._grid = [[empty_spot for _ in range(size)] for __ in range(size)]

    def set_marker(self, row, col, marker):
        self._grid[row-1][col-1] = marker

    def clear_marker(self, row, col):
        self._grid[row-1][col-1] = self._empty_spot

    def display(self):
        label_width = len(str(self._size))
        label_format = '{{:>{}}}'.format(label_width)
        labels = [label_format.format(i+1) for i in range(self._size)]
        print(' ' * (label_width), ' '.join(labels))
        for label, row in zip(labels, self._grid):
            print(label, ' '.join(label_format.format(marker) for marker in row))
这就是它的作用:

>>> grid = SquareGrid(15)
>>> grid.set_marker(15, 15, "x")
>>> grid.set_marker(2, 8, "o")
>>> grid.set_marker(13, 3, "x")
>>> grid.set_marker(3, 10, "o")
>>> grid.display()
    1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
 1  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 2  .  .  .  .  .  .  .  o  .  .  .  .  .  .  .
 3  .  .  .  .  .  .  .  .  .  o  .  .  .  .  .
 4  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 5  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 6  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 7  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 8  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 9  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
10  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
11  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
12  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
13  .  .  x  .  .  .  .  .  .  .  .  .  .  .  .
14  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
15  .  .  .  .  .  .  .  .  .  .  .  .  .  .  x

请更正缩进。请注意,
str.format
方法可以帮助您创建固定宽度行标题。请更正缩进。请注意,
str.format
方法可以帮助您创建固定宽度行标题。