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