打印时如何格式化输出以在 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
我正在尝试创建如下所示的输出:
在这里可以看到,左边的列空间向左排列,右边的列从右边排列。但是对于我的输出,我将左列排到右侧,右列排到左边。我想反之亦然。这是我尝试使用格式函数的第二个代码实际得到的输出:
它有效,但我只是想学习在字符串输出移动时调整和格式化间距。 如果我有 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