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

如何使用print函数构造波浪结构 偶数位为正斜率奇数位为负斜率

波浪结构打印实现思路

基础规则

  • 输入为一串数字,按数位的奇偶性决定每一步的斜率方向
  • 偶数位对应正斜率:对应字符的竖直位置逐列向上偏移
  • 奇数位对应负斜率:对应字符的竖直位置逐列向下偏移

实现思路

仅需四步即可完成打印,不需要依赖复杂第三方库:

  • 第一步计算画布高度:先遍历一遍所有数字,模拟走一遍完整路径,记录竖直方向的最大、最小偏移值,总高度就是最大值减最小值加1,避免打印时内容被截断
  • 第二步初始化空画布:创建一个二维列表,行数是刚才算出来的总高度,列数等于输入数字的长度,所有位置初始填充空格
  • 第三步逐列填充内容:初始竖直坐标设为偏移后的中间位置,从左到右遍历每一位数字,把数字填到当前坐标的对应位置,之后根据数字奇偶性调整竖直坐标:偶数减1(向上走),奇数加1(向下走)
  • 第四步逐行输出:遍历二维列表的每一行,把每行的字符拼接成完整字符串,直接调用print()输出即可

参考代码(Python)

def print_wave(num_sequence: str):
    # 先计算路径的竖直坐标范围
    current_y, min_y, max_y = 0, 0, 0
    for num_char in num_sequence:
        current_y += -1 if int(num_char) % 2 == 0 else 1
        min_y = min(min_y, current_y)
        max_y = max(max_y, current_y)
    # 初始化画布
    total_rows = max_y - min_y + 1
    canvas = [[' ']*len(num_sequence) for _ in range(total_rows)]
    # 填充内容
    current_y = -min_y  # 把初始位置对齐到画布的合适位置,避免出现负索引
    for col_idx, num_char in enumerate(num_sequence):
        canvas[current_y][col_idx] = num_char
        current_y += -1 if int(num_char) % 2 == 0 else 1
    # 逐行打印
    for row in canvas:
        print(''.join(row))

# 测试用例
if __name__ == "__main__":
    print_wave("123456789")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 20:39:01