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

时间:2016-07-20 07:59:20

标签: python python-3.x spacing

我试图创建一个看起来像这样的输出:

enter image description here

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

enter image description here

它有效但我只是在字符串输出移动时学习调整和格式化间距。  如果我有超过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)) 

输出:

enter image description here

我是python的新手,所以仍然是一个完整的菜鸟。我真的很感激如何处理格式或天气有其替代品的解释。 谢谢! 代码:

3 个答案:

答案 0 :(得分:3)

尝试一下:

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

答案 1 :(得分:1)

你可以使用这个。

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

使用format可以使值3动态化,%@interface FoodMeal : NSObject<NSCoding,NSCopying> @property (nonatomic,strong) NSString *mealType; @property (nonatomic,strong) NSString *mealName; @property (nonatomic,strong) NSArray *mealItems; @property (nonatomic,strong) NSDate *mealDate; @end 构建更灵活。

答案 2 :(得分:1)

查看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