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

如何垂直打印数字列表?求实现整数列表转垂直显示字符串的函数

解决垂直数字字符串转换问题

首先我们明确问题核心:需要把输入的整数列表按右对齐垂直排列,然后从上到下、从左到右读取所有非空格的数字,用空格连接成最终字符串。以你的示例输入[5,69,2090]为例,垂直右对齐后的显示应该是这样:

2
    0
  6 9
5 9 0

按顺序读取后就得到目标结果:2 0 6 9 5 9 0。

你的现有代码逻辑和需求不匹配,还存在未定义变量l的错误,我们重新实现正确的逻辑:

def printstring(mylist):
    # 把每个整数转为字符串,方便处理每一位数字
    str_list = [str(num) for num in mylist]
    # 找到最长数字的长度,用于后续统一右对齐
    max_length = max(len(s) for s in str_list)
    # 将所有字符串右对齐,用前导空格填充到最长长度
    aligned_strings = [s.rjust(max_length) for s in str_list]
    
    result_chars = []
    # 从上到下遍历每一行
    for row in range(max_length):
        # 从左到右检查每个字符串的当前行字符
        for s in aligned_strings:
            current_char = s[row]
            # 只收集非空格的数字字符
            if current_char != ' ':
                result_chars.append(current_char)
    
    # 用空格连接所有字符,得到最终结果
    return ' '.join(result_chars)

# 测试示例
mylist = [5,69,2090]
print(printstring(mylist))  # 输出: 2 0 6 9 5 9 0

代码步骤说明:

  1. 字符串转换:将整数转为字符串,便于拆分每一位数字。
  2. 右对齐处理:用rjust()方法给短字符串补前导空格,让所有字符串长度一致,实现垂直右对齐效果。
  3. 逐行收集数字:从上到下遍历每一行,再从左到右筛选出当前行的非空格数字字符。
  4. 结果拼接:把收集到的数字字符用空格连接,得到目标格式的字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:37:38