【问题标题】:How to arrange "string columns" horizontally in python?如何在python中水平排列“字符串列”?
【发布时间】:2021-04-30 12:32:16
【问题描述】:

我在 python 中处理字符串,我需要格式化一个字符串来打印它,所以它最后看起来像这样:

  32         1      9999      523
+  8    - 3801    + 9999    -  49
----    ------    ------    -----
  40     -3800     19998      474
operations = []

for problem in problems:
    parts = problem.split()
    sum_result = str(int(parts[0]) + int(parts[2]))
    sum_width = len(sum_result) + 2
    
    operations.append(f'{parts[0].rjust(sum_width, " ")}\n{parts[1]}{parts[2].rjust(sum_width - 1, " ")}\n{"".ljust(sum_width, "-")}\n{sum_result.rjust(sum_width, " ")}')

但这只会产生一个包含每个格式化总和的列表,现在我不知道如何将每个总和排列为字符串中的水平。

最有效的方法是什么?

【问题讨论】:

  • 您需要在第一行,然后是第二行中积累所有您想要的信息,以此类推。你在哪里坚持订购?
  • @Prune 和你说的我从不同的角度看,我会试试的

标签: python string format


【解决方案1】:

您可以使用 python format 方法为您的要求执行加法和差异,如下所示。我添加了一个循环条件来显示如何处理一组以上的值。

def format_add_sub(a, b):
for i in range(a, b):
    print("{:6d}".format(i),end='')
    print('{0: >8}'.format(i))
    print("+{:5d}".format(i+5),end='')
    print('{0: >4}'.format("-"),end = '')
    print('{0: >4}'.format(i+5))
    print("{:6s}".format("------"),end='')
    print('{0: >8}'.format("------"))
    sum = i + (i+5)
    diff = (i+5) - i
    print("{:6d}".format(sum),end='')
    print('{0: >8}'.format(diff))
    print("{:6s}".format("------"),end ='')
    print('{0: >8}'.format("------"))
n1 = int(input("Enter value 01:-\n"))
n2 = int(input("Enter value 02:-\n"))
format_add_sub(n1, n2)

【讨论】:

    【解决方案2】:

    这是我写的代码:

    print('偶数是', end='') 即使在范围内(0, 51, 2): 打印(偶数,end=' ')

    这是他的输出:

    偶数是 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50

    理论!!!:

    所以我看到 0 到 50 只是水平的,因为我把 end=' ' 放在偶数之后(在最后一行)并让在同一行 我看到将 end='' 放在 final 中,这将数字写在同一行打印中

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 2016-12-06
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      相关资源
      最近更新 更多