首页 > 解决方案 > 请帮我格式化同一行的字符串

问题描述

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

这就是我现在所拥有的。

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="")

输出当前如下所示: 截图 1

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

我无法弄清楚如何在以下数字之前获得平均值总计

标签: arraysstringformattingrow

解决方案


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

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

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

作者提供的显示当前终端输出的屏幕截图

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

作者提供的屏幕截图,显示所需的终端输出

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

Python 中的换行符是\n。它用于指示一行文本的结束。您可以打印字符串而无需使用 end = 添加新行,这是用于分隔行的字符。

我将变量line1avg添加到您的代码中,以便您可以运行和测试它 - 如此处所示,我还添加了行print("Grand Totals", 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="")

结果是:

修改后的终端输出截图

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


推荐阅读