打印时如何格式化输出以在 python 中的两个变量之间创建 space?

How to format output to create space between two variables in python when printing?

我正在尝试创建如下所示的输出:

在这里可以看到,左边的列空间向左排列,右边的列从右边排列。但是对于我的输出,我将左列排到右侧,右列排到左边。我想反之亦然。这是我尝试使用格式函数的第二个代码实际得到的输出:

它有效,但我只是想学习在字符串输出移动时调整和格式化间距。 如果我有 3 个以上的变量,知道如何去做也很好。

print("Kilograms    Pounds")

for kg in range(0, 199): 
    kg += 1 
    lb = 2.2   
    lb = kg * lb   
    lb = round(lb, 2)
    print(format(kg, "4d"), end = '')

    for i in range(1, 2):
        print("        ", lb, end = '')
    print()

这是我尝试这样做的初始代码,但间距被搞砸了,但此处的左列非常好,但在输出增加到两位数后可以在右侧看到间距。

print("Kilograms    Pounds")

for kg in range(0, 199):
    kg += 1 
    lb = 2.2  
    lb = kg * lb   
    print(kg, '          ', round(lb, 2)) 

输出:

我是 python 的新手,所以还是个菜鸟。我真的很感激关于如何处理格式或天气的解释,还有其他选择。 谢谢! 代码:

你可以用这个。

print("Kilograms    Pounds")

for kg in range(0, 100):
    kg += 1 
    lb = 2.2  
    lb = kg * lb 
    space_filler = " " * 10  
    print("%3d %s %.2f" % (kg, space_filler, lb))

值 3 也可以通过使用 format 动态化,这比 % 结构更灵活。

试一试:

between = ' '*4
print('Kilograms{between}Pounds'.format(between=between))

for kg in range(199):
    kg += 1 
    lb = 2.2   
    lb = kg * lb   
    lb = round(lb, 2)

    print('{kg:<{kg_width}}{between}{lb:>{lb_width}}'.format(
        kg=kg, kg_width=len('Kilograms'),
        between=between,
        lb=lb, lb_width=len('Pounds')))

# Output:
# Kilograms    Pounds
# 1               2.2
# 2               4.4
# 3               6.6
# 4               8.8
# 5              11.0
# 6              13.2
# 7              15.4
# 8              17.6
# 9              19.8
# 10             22.0
# 11             24.2
# ...

粗糙的大打印只是因为我试图参数化所有内容。给定固定的列名和间距,您可以这样做:

print('{kg:<9}    {lb:>6}'.format(kg=kg, lb=lb))

编辑

更接近您的原始代码:

print("Kilograms    Pounds")

for kg in range(0, 199):
    kg += 1 
    lb = 2.2   
    lb = kg * lb   
    lb = round(lb, 2)
    print(format(kg, "<4d"), end = '')
    print("        ", end = '')
    print(format(lb, ">7.1f"))

查看The Docs第 7.1.3.1 节

您可以将 format() 一个 width 作为 int 传递,这应该可以解决您的空格问题。

来自文档示例:

>>> for num in range(5,12):
 for base in 'dXob':
     print('{0:{width}{base}}'.format(num, base=base, width=width),end=' ')

产生:

 5     5     5   101
 6     6     6   110
 7     7     7   111
 8     8    10  1000
 9     9    11  1001
10     A    12  1010
11     B    13  1011