如何移动所有数字以与列对齐

时间:2014-10-07 23:26:29

标签: python python-3.x

CANOEING = 3.5068
HIKING = 6
ROLLER_BLADING = 7.5068
TAE_KWON_DO = 10.3014
TAI_CHI = 3

body_mass = float(input("Enter your body mass: "))
canoeing = 0
hiking = 0
roller_blading = 0
tae_kwon_do = 0
tai_chi = 0 
print("                      Canoeing       Hiking         Rollerblading       Tae Kwon Do           Tai Chi              ")
print("15")
print("30")
print("45")
print("60")
print("75")
print("90")    
for x in range(15,95,15):
    canoeing = CANOEING+body_mass+(x/60) + canoeing
    hiking = HIKING+body_mass+(x/60) + hiking
    roller_blading = ROLLER_BLADING+body_mass+(x/60) + roller_blading
    tae_kwon_do = TAE_KWON_DO+body_mass+(x/60) + tae_kwon_do
    tai_chi = TAI_CHI+body_mass+(x/60) + tai_chi
    print("{0:>31.2f}".format(canoeing))
    print("{0:>36.2f}".format(hiking))
    print("{0:>51.2f}".format(roller_blading))
    print("{0:>61.2f}".format(tae_kwon_do))
    print("{0:>71.2f}".format(tai_chi))

如何将所有答案与列对齐,即远足和15分钟的时间。 我尽我所能,但所有的答案都搞砸了。

2 个答案:

答案 0 :(得分:0)

您只能从左到右,从上到下打印。因此,您无法先打印所有行标题,然后打印所有数据;你必须打印每个行标题及其数据。

此外,每个print语句都会打印一个换行符。您需要添加end=''以防止这种情况发生。

所以,这应该让你开始:

print("                      Canoeing       Hiking         Rollerblading       Tae Kwon Do           Tai Chi              ")
for x in range(15,95,15):
    print('{0:>2}'.format(x), end='')
    canoeing = …
    …
    print("{0:>31.2f}".format(canoeing), end='')
    …
    print()

这仍然不会看起来正确,因为您的格式宽度比您尝试适应它们的列宽得多,宽得多。 (另外,由于您的标题宽度为115个字符,因此在典型的80x25终端窗口中它看起来不会很好......)但希望您可以自己修复该部分。

答案 1 :(得分:0)

您还可以将所有值提取为一种打印/格式,如:

print("                      Canoeing       Hiking         Rollerblading       Tae Kwon Do           Tai Chi")
for x in range(15, 95, 15):
    canoeing = ...
    ...
    print("{}{:>28.2f}{:>13.2f}{:>22.2f}{:>18.2f}{:>18.2f}"
          .format(x, canoeing, hiking, roller_blading, tae_kwon_do, tai_chi))