【问题标题】:How do I get the same spacing between the two columns in the result如何在结果中的两列之间获得相同的间距
【发布时间】:2021-06-21 16:47:15
【问题描述】:

我刚刚从手册中复制了这段代码,但是当我编写它时,当 kph > 100 时,显示列之间的间距会变大。

# This program converts the speeds 60 kph
# Throug 130 kph ( in 10 kph increments)
# to mph.

START_SPEED = 60              # Starting Speed
END_SPEED = 131               # Ending speed
INCREMENT = 10                # Increment
CONVERSION_FACTOR = 0.6214    # Conversion Factor

# Print the table headings.
print("KPH\tMPH")
print("--------")
for kph in range(60, 131, 10):
    mph = kph * CONVERSION_FACTOR
    print(kph, "\t", format(mph, ".1f"))

当我编写这段代码时,我得到:

KPH  MPH
--------
60   37.3
70   43.5
80   49.7
90   55.9
100      62.1
110      68.4
120      74.6
130      80.8

Process finished with exit code 0

如何使两列之间的空间均匀?

【问题讨论】:

    标签: python formatting spacing


    【解决方案1】:
    1. 对于字符串格式化方法,在打印字符串上使用 str(kph).ljust(7) 方法而不是 \t - 这将添加空格,直到字符串包含指定数量的字符。
    2. 我建议不要使用字符串格式,而是使用pandas.DataFrame,因为它的输出数据结构在视觉上很好。为了便于计算,我还建议使用numpy.arange,因为它允许对操作进行矢量化,而不是使用元素化for-loop
    import numpy as np
    import pandas as pd
    
    kph = np.range(60, 131, 10)
    df = pd.DataFrame.from_dict({"KPH": kph, 
                                 "MPH": kph * CONVERSION_FACTOR})
    print(df)
    

    【讨论】:

      【解决方案2】:

      您可以将打印更改为:

      for kph in range(60, 131, 10):
          mph = kph * CONVERSION_FACTOR
          print(f'{str(kph):<3s}    {mph:.1f}')
      

      关于为什么在小于 100 的数字处没有打印 \t,您可以阅读此说明 https://stackoverflow.com/a/34735246/2126254

      【讨论】:

        猜你喜欢
        • 2019-12-14
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2020-01-12
        • 1970-01-01
        • 2013-12-18
        • 1970-01-01
        • 2012-02-08
        相关资源
        最近更新 更多