python格式问题,试图打印,但出现问题

python格式问题,试图打印,但出现问题,python,Python,执行此操作的我的代码: print(count,"\t",monthlyPayment,"\t",interest,"\t",loanAmount) 我不知道为什么它们没有对齐,如何才能使它更整洁、更干净?请导游?希望以表格形式使用。例如: print('{:7d} {:10d} {:15.2f} {:15.2f}'.format(count, monthlyPayment, interest, loanAmount)) 这里d代表十进制整数,f代表浮点数。数字就是宽度。例如

执行此操作的我的代码:

        print(count,"\t",monthlyPayment,"\t",interest,"\t",loanAmount)
我不知道为什么它们没有对齐,如何才能使它更整洁、更干净?请导游?希望以表格形式使用。例如:

print('{:7d} {:10d} {:15.2f} {:15.2f}'.format(count, monthlyPayment, interest, loanAmount))
这里d代表十进制整数,f代表浮点数。数字就是宽度。例如,7d生成一个七位宽的整数:

    3000
和15.2f总宽度为15和2位小数的浮点数:

         1000.00
以下内容的输出示例:

print('{:7d} {:10d} {:15.2f} {:15.2f}'.format(1, 300, 416.67, 99915.67))
是:


按制表符格式化在历史上是很棘手的。一旦其中一个字段的长度超过tabstep,整个格式就会中断。在这种情况下,该字段是标题付款

您可以不使用制表符,而是以字符为单位计算列宽,并创建匹配的str.format格式。我假设你有这样的数据

data = [(1, 500, 416.67, 99916.67),
        (2, 500, 416.32, 99832.99),
        ...]
header = [("month", "payment", "interest", "balance")]
并正在打印:

for line in header + data:
    print("\t".join(line))
相反,您需要额外运行一次数据。一次确定列宽,然后一次打印

colwidths = []
for column in zip(*(header + data)):
    colwidths.append(len(str(max, column, key=lambda s: len(str(s)))) + 1)
    # the `+ 1` in this case being the column margin

formatting = "".join(r"{{:{}}}".format(width for width in colwidths))

for line in header + data:
    print(formatting.format(*line))
或者,你也可以用表格为你做这项工作。这是保存在pypi包管理器中的第三方模块。安装它与

pip install tabulate
然后使用如下代码:

import tabulate

data = [(1, 500, 416.67, 99916.67),
        (2, 500, 416.32, 99832.99),
        ...]
header = [("month", "payment", "interest", "balance")]

print(tabulate.tabulate(data, headers=*header))

单词payment足够长,可以突破下一个tabstep,通常为8个字符。使用空格代替制表符。如果你不想写自己的制表逻辑,你可以顺便来帮你写。pip安装表格你能解释一下使用的不同的格式化数字吗?谢谢你干净完美!
import tabulate

data = [(1, 500, 416.67, 99916.67),
        (2, 500, 416.32, 99832.99),
        ...]
header = [("month", "payment", "interest", "balance")]

print(tabulate.tabulate(data, headers=*header))