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

如何基于width、height、depth参数格式化输出指定字符串?

问题需求

编写函数,根据指定的宽度(width)、高度(height)和深度(depth)参数,格式化输出给定字符串:

  • depth代表输出的“块”数量,每个块是width×height的字符矩阵
  • 块与块之间用空行分隔

示例:
输入字符串为 .X.XXX.X..v.vXv.v.,指定width=3、height=3、depth=2时,输出如下:

.X.
XXX
.X.

.v.
vXv
.v.
我的错误尝试

以下代码无法正常工作:

def print_string(s, w, h, d):
    for i in range (0, int(len(s)/D), w):
        print (s[i:i+w])
    for i in range(0, len(s), D):
        print (“ “)
    for i in range (int(len(s)/D), len(s), w):
        print(s[i:i+w])
正确实现方案

逻辑分析

每个块的字符总数是 width × height,总字符串长度需等于 width × height × depth。核心思路是按块拆分字符串,每个块内再按宽度拆分成行输出,块间添加空行分隔。

代码实现

def print_formatted_string(s, width, height, depth):
    block_size = width * height
    # 可选:校验字符串长度是否符合参数要求
    if len(s) != block_size * depth:
        raise ValueError("字符串长度与指定的width、height、depth不匹配")
    
    for block_idx in range(depth):
        # 截取当前块的内容
        block_start = block_idx * block_size
        current_block = s[block_start:block_start + block_size]
        # 逐行输出当前块
        for line_idx in range(height):
            line_start = line_idx * width
            print(current_block[line_start:line_start + width])
        # 块间添加空行(最后一个块不添加)
        if block_idx != depth - 1:
            print()

代码说明

  1. 先计算单个块的字符长度block_size,可选校验字符串长度是否与参数匹配
  2. 循环遍历每个块,通过索引定位并截取当前块的子字符串
  3. 在每个块内部,按高度循环,每次截取width长度的子串作为一行输出
  4. 除最后一个块外,每个块输出完成后打印空行,实现块间分隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:01:02