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

如何并排打印列表项且不改变输出结构?Python算术排版问题

修正算术表达式横向排版的Python函数

原来的函数会将每个算术表达式纵向单独输出,要实现横向排列的目标,我们需要把所有表达式的第一行、运算符行、分隔线分别对齐到同一行,具体修改如下:

def arithmetic_arranger(my_list):
    top_lines = []
    middle_lines = []
    bottom_lines = []
    
    for expr in my_list:
        num1, op, num2 = expr.split()
        # 计算每个表达式的总宽度:最长数字长度 + 2(运算符和一个空格)
        width = max(len(num1), len(num2)) + 2
        # 格式化第一行:数字右对齐
        top = f"{num1:>{width}}"
        # 格式化第二行:运算符+空格,搭配右对齐的第二个数字
        middle = f"{op} {num2:>{width - 2}}"
        # 生成对应宽度的分隔线
        bottom = '-' * width
        
        top_lines.append(top)
        middle_lines.append(middle)
        bottom_lines.append(bottom)
    
    # 用四个空格分隔每个表达式块,逐行打印
    print('    '.join(top_lines))
    print('    '.join(middle_lines))
    print('    '.join(bottom_lines))

arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"])

关键修改说明

  • 拆分存储逻辑:用三个独立列表分别存储所有表达式的第一行、运算符行、分隔线,确保同一行内容可以统一拼接。
  • 简化对齐逻辑:利用f-string的右对齐格式化语法{content:>{width}},替代手动计算空格的复杂操作,排版更精准。
  • 横向拼接输出:通过' '.join()将每行的所有表达式块用四个空格连接,实现横向排列的效果。

运行后输出与期望一致:

32         1      9999      523
+  8    - 3801    + 9999    -  49
----    ------    ------    -----

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:18:30