You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化Python中网格渲染字典的批量打印逻辑?

优化网格打印的冗余代码

问题描述

当前通过手动编写多条print语句逐个指定gridRender字典的坐标键来打印网格,代码冗余度极高,扩大网格规模时工作量剧增。原始代码如下:

grid = {}
coord = {}
gridRender = {}

yCoord = -10

for xGrid in range(-5, 6):
    for yGrid in range(-5, 6):
        gridRender[xGrid, yGrid] = "░░"
        gridRender[0, yGrid] = "▒▒"
        gridRender[xGrid, 0] = "▒▒"

for xCoord in range(-5, 6):
    try:
        yCoord = round(sin(xCoord))
    except:
        yCoord = -10
    gridRender[xCoord, yCoord] = "██"

print(gridRender[-5, 5] + gridRender[-4, 5] + gridRender[-3, 5] + gridRender[-2, 5] + gridRender[-1, 5] + gridRender[0, 5] + gridRender[1, 5] + gridRender[2, 5] + gridRender[3, 5] + gridRender[4, 5] + gridRender[5, 5])
print(gridRender[-5, 4] + gridRender[-4, 4] + gridRender[-3, 4] + gridRender[-2, 4] + gridRender[-1, 4] + gridRender[0, 4] + gridRender[1, 4] + gridRender[2, 4] + gridRender[3, 4] + gridRender[4, 4] + gridRender[5, 4])
print(gridRender[-5, 3] + gridRender[-4, 3] + gridRender[-3, 3] + gridRender[-2, 3] + gridRender[-1, 3] + gridRender[0, 3] + gridRender[1, 3] + gridRender[2, 3] + gridRender[3, 3] + gridRender[4, 3] + gridRender[5, 3])
print(gridRender[-5, 2] + gridRender[-4, 2] + gridRender[-3, 2] + gridRender[-2, 2] + gridRender[-1, 2] + gridRender[0, 2] + gridRender[1, 2] + gridRender[2, 2] + gridRender[3, 2] + gridRender[4, 2] + gridRender[5, 2])
print(gridRender[-5, 1] + gridRender[-4, 1] + gridRender[-3, 1] + gridRender[-2, 1] + gridRender[-1, 1] + gridRender[0, 1] + gridRender[1, 1] + gridRender[2, 1] + gridRender[3, 1] + gridRender[4, 1] + gridRender[5, 1])
print(gridRender[-5, 0] + gridRender[-4, 0] + gridRender[-3, 0] + gridRender[-2, 0] + gridRender[-1, 0] + gridRender[0, 0] + gridRender[1, 0] + gridRender[2, 0] + gridRender[3, 0] + gridRender[4, 0] + gridRender[5, 0])
print(gridRender[-5, -1] + gridRender[-4, -1] + gridRender[-3, -1] + gridRender[-2, -1] + gridRender[-1, -1] + gridRender[0, -1] + gridRender[1, -1] + gridRender[2, -1] + gridRender[3, -1] + gridRender[4, -1] + gridRender[5, -1])
print(gridRender[-5, -2] + gridRender[-4, -2] + gridRender[-3, -2] + gridRender[-2, -2] + gridRender[-1, -2] + gridRender[0, -2] + gridRender[1, -2] + gridRender[2, -2] + gridRender[3, -2] + gridRender[4, -2] + gridRender[5, -2])
print(gridRender[-5, -3] + gridRender[-4, -3] + gridRender[-3, -3] + gridRender[-2, -3] + gridRender[-1, -3] + gridRender[0, -3] + gridRender[1, -3] + gridRender[2, -3] + gridRender[3, -3] + gridRender[4, -3] + gridRender[5, -3])
print(gridRender[-5, -4] + gridRender[-4, -4] + gridRender[-3, -4] + gridRender[-2, -4] + gridRender[-1, -4] + gridRender[0, -4] + gridRender[1, -4] + gridRender[2, -4] + gridRender[3, -4] + gridRender[4, -4] + gridRender[5, -4])
print(gridRender[-5, -5] + gridRender[-4, -5] + gridRender[-3, -5] + gridRender[-2, -5] + gridRender[-1, -5] + gridRender[0, -5] + gridRender[1, -5] + gridRender[2, -5] + gridRender[3, -5] + gridRender[4, -5] + gridRender[5, -5])

优化方案

可以通过循环遍历坐标范围替代手动编写的print语句,同时抽离网格边界参数,方便后续调整规模。优化后的代码如下:

import math

# 抽离网格边界参数,调整大小只需修改这两个值
min_coord = -5
max_coord = 5

gridRender = {}

# 初始化网格
for xGrid in range(min_coord, max_coord + 1):
    for yGrid in range(min_coord, max_coord + 1):
        gridRender[xGrid, yGrid] = "░░"
        gridRender[0, yGrid] = "▒▒"
        gridRender[xGrid, 0] = "▒▒"

# 绘制正弦曲线点
for xCoord in range(min_coord, max_coord + 1):
    try:
        yCoord = round(math.sin(xCoord))
        # 确保坐标在网格范围内,避免键不存在错误
        if min_coord <= yCoord <= max_coord:
            gridRender[xCoord, yCoord] = "██"
    except:
        pass

# 循环打印每一行(y从大到小遍历,保证网格从上到下显示正确)
for y in range(max_coord, min_coord - 1, -1):
    row = "".join([gridRender[x, y] for x in range(min_coord, max_coord + 1)])
    print(row)

优化点说明

  • 参数化边界:将min_coord和max_coord设为变量,调整网格大小无需改动核心逻辑代码。
  • 循环生成打印内容:外层循环遍历y坐标,内层用列表推导式拼接整行字符,一行代码完成整行打印,彻底消除冗余。
  • 越界判断:添加yCoord范围检查,避免因计算出的坐标超出网格导致的字典键不存在错误。
  • 简化代码:删除未使用的grid和coord变量,精简代码结构。

内容的提问来源于stack exchange,提问作者Crossbow4000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:45:41