所以我想采用分配给它们的变量的各种坐标并将它们放入网格中。
例如:
p = (0,0)
v = (2,3)
t = (5,4)
输出:
|p| | | | | |
| | | | | | |
| | | | | | |
| | |v| | | |
| | | | | |t|
所以显然我可以使用打印并逐行进行,但有没有办法1.更有效地做到这一点2.让我的网格适应更大的坐标?
答案 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|