【问题标题】:Please help me with formatting a string on same row请帮我格式化同一行上的字符串
【发布时间】:2020-11-21 08:25:04
【问题描述】:

我遇到了连续格式化字符串的问题。

这就是我现在所拥有的。

print(line1)
print("%20s"%"",end="")
for i in range(6):
     print("%-12.2f" %avg[i], end="")
print("%-12.2f" %sum(avg))
print(line1)
print("%-10s"%"","%12s"%"Ranks",end="")

当前的输出如下所示:

但我需要它看起来像这样:

我不知道如何在后面的数字之前有 Ave​​rageTotal

【问题讨论】:

    标签: arrays string formatting row


    【解决方案1】:

    在你的循环中打印 avg[i] 值

    avg = [1154.20, 1205.50, 1213.10, 1244.90, 1207.10, 1180.70 ]
    

    目前您的代码打印出类似于以下内容的内容:

    如屏幕截图所示,在该行文本的开头打印“总计”

    您可以尝试在循环之外打印文本,实际上就在它之前,通常这将需要一个新的文本行,这是您不想要的,这里有一个简单的方法来避免它 - Python New Line and How to Python Print Without a Newline/freecodecamp .

    Python 中的换行符是\n。它用于表示 一行文本的结尾。您可以在不添加新行的情况下打印字符串 与 end = ,这是将 用于分隔行。

    我将变量 line1avg 添加到您的代码中,以便您可以运行和测试它 - 如此处所示,我还添加了行 print("总计", end='');

    line1 = "==========================================================================================="
    avg = [1154.20, 1205.50, 1213.10, 1244.90, 1207.10, 1180.70 ]
    print(line1)
    print("Grand Totals", end='');
    print("%20s"%"",end="")
    for i in range(6):
         print("" + "%-12.2f" %avg[i], end="")
    print("%-12.2f" %sum(avg))
    print(line1)
    print("%-10s"%"","%12s"%"Ranks",end="")
    

    我没有你的其余代码,但我的修改会打印出来

    如果您希望文本标签和第一个数值靠得更近 - 您可以将此行更改为 10,而不是 20

    print("%10s"%"",end="")
    

    结果:

    希望对您有所帮助,并随时发布更多代码,我会看看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多