Python如何将垂直输出的ASCII矩形文本改为水平并排打印
ASCII形状水平并排实现方案
问题本质
直接拼接完整形状字符串会得到垂直堆叠效果,是因为每个形状字符串本身自带\n换行符,直接拼接相当于把第二个形状的全部行整体放到第一个形状所有行的末尾,自然是上下排列。
修改print函数的end参数无效,是因为换行符存在于形状字符串的内容里,不是print输出时额外追加的,改end参数根本碰不到这些已经写在字符串里的换行。
实现方法
要实现水平并排,核心逻辑是按行对齐拼接,操作步骤如下:
- 先把单个ASCII形状按换行符拆成逐行组成的列表
- 遍历每一行的索引,把所有要并排的形状对应索引位置的行内容拼接到一起,形状之间可以按需加间隔空格
- 把所有拼接好的行重新用换行符连接,再输出即可
可直接运行的参考代码:
shape = ' _____\n | |\n | |\n |_____|' # 将单个形状拆分为行列表 shape_single_lines = shape.split('\n') parallel_count = 2 output_lines = [] for line_idx in range(len(shape_single_lines)): current_line = '' for _ in range(parallel_count): # 行尾加2个空格作为形状间的间距,可自行调整数值 current_line += shape_single_lines[line_idx] + ' ' output_lines.append(current_line) print('\n'.join(output_lines))
运行后输出效果如下,可实现矩形水平并排:
_____ _____ | | | | | | | | |_____| |_____|
扩展说明
- 如果需要并排多个不同的ASCII形状,只要提前把所有形状拆成行列表,给行数较少的形状补足对应数量的空行,保证所有形状的行数一致,就可以用同样的逐行拼接逻辑实现排版
- 只要是基于行排版的ASCII艺术,都可以用这个逐行拼接的思路做组合,不会出现排版错乱
内容的提问来源于stack exchange,提问作者Parstoukas
相关产品推荐
相关产品推荐

