如何垂直打印数字列表?求实现整数列表转垂直显示字符串的函数
解决垂直数字字符串转换问题
首先我们明确问题核心:需要把输入的整数列表按右对齐垂直排列,然后从上到下、从左到右读取所有非空格的数字,用空格连接成最终字符串。以你的示例输入[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
代码步骤说明:
- 字符串转换:将整数转为字符串,便于拆分每一位数字。
- 右对齐处理:用
rjust()方法给短字符串补前导空格,让所有字符串长度一致,实现垂直右对齐效果。 - 逐行收集数字:从上到下遍历每一行,再从左到右筛选出当前行的非空格数字字符。
- 结果拼接:把收集到的数字字符用空格连接,得到目标格式的字符串。
内容的提问来源于stack exchange,提问作者alex108
相关产品推荐
相关产品推荐

