将坐标输出到网格python上

时间:2018-06-01 04:06:31

标签: python python-3.x

所以我想采用分配给它们的变量的各种坐标并将它们放入网格中。

例如:

p = (0,0)
v = (2,3)
t = (5,4)

输出:

|p| | | | | |
| | | | | | |
| | | | | | |
| | |v| | | |
| | | | | |t|

所以显然我可以使用打印并逐行进行,但有没有办法1.更有效地做到这一点2.让我的网格适应更大的坐标?

1 个答案:

答案 0 :(得分:1)

这是一种用于分隔每个任务的函数的方法:

首先需要构建一个将名称与值相关联的数据结构,以便以后可以将它们放在网格上 然后你必须建立一个正确大小的网格 然后将标签放在值所指示的位置 最后组装一个可以打印的网格表示。

构建一个类来封装工作可能更合适,但作为第一步,这可能更清楚。

def make_grid(items):
    max_col = max(x for x, _ in items) + 1
    max_row = max(y for _, y in items) + 1
    return [[' ' for dummy_col in range(max_col)] for dummy_row in range(max_row)]


def place_on_grid(grid, val, key):
    col, row = val
    grid[row][col] = key


def repr_grid(grid):
    return '\n'.join('|' + '|'.join(sub + ['']) for sub in grid)


def place_items_on_grid(data):
    grid = make_grid(data.values())
    for k, v in data.items():
        place_on_grid(grid, v, k)
    print(repr_grid(grid))


p = (0,0)
v = (2,3)
t = (5,4)
data = {k: val for k, val in zip(('p', 'v', 't'), (p, v, t))}

place_items_on_grid(data) 

输出:

|p| | | | | |
| | | | | | |
| | | | | | |
| | |v| | | |
| | | | | |t|