Python从列表中打印浮点数

时间:2015-01-30 19:33:27

标签: python python-2.7

嗨,我是编程新手,并且有一个小问题。

我有一小段代码我试图打印出来的结果。当我打印它时,它给了我一些带小数位的数字,有些只有一个。如果我尝试更改占位符来自'到了' d'或者' f'它告诉我它必须是一个不是列表的数字。

无论如何要打印出2位小数的数字?

以下是代码:

ftp = 230
zones = []

def zone(n): 
    return   ftp * n

multipliers = (.55,.56,.75,.76,.85,.86,.95,.96, 1.05, 1.06, 1.20, 1.21, 1.50,1.51)

for i in (multipliers):
   zones.append(zone(i))

format = ('%-*s%*s')
header_format = '%-*s%*s'
print '=' * 65
print header_format % (45, 'Zone', 10, 'Range')
print '-' * 65

print format % (45,'Active Recovery               Below ==>> ',10, zones[:1])
print format % (45,'Endurance',10, zones[1:3])
print format % (45,'Tempo',10, zones[3:5])
print format % (45,'Sweet Spot',10, zones[5:7])
print format % (45,'Threshhold',10, zones[7:9])
print format % (45,'VO2',10, zones[9:11])
print format % (45,'Anaerobic',10, zones[11:13])
print format % (45,'Neuromuscular                 Above ==>>',5, zones[12])
print '=' * 65

2 个答案:

答案 0 :(得分:2)

是的,您只需要相应地调整format字符串。

现在,你有(带有多余的括号,正如你在其他地方一样,BTW):

format = ('%-*s%*s')

这格式化了两个具有给定宽度和对齐的字符串 - 因此,您作为zones的切片获得的浮动列表将是"只是字符串化"无法控制格式化细节。

有时你会发射一个浮子,有时是两个。为两个不同的目的使用两个单独的格式字符串会更好。

所以对于一个浮动

format1 = '%-*s%*.2f'

和其中两个

format2 = '%-*s%*.2f%*.2f'

现在,相应地编辑各种print语句,例如最后一个语句将成为

print format1 % (45,'Neuromuscular                 Above ==>>',5, zones[12])

和它之前的那个

print format2 % (45,'Anaerobic',5,zones[11],5,zones[12])

(这里的括号多余,因为您需要%运算符的RHS上的元组。

顺便说一下,新的format字符串方法比旧的%格式化操作符更具可读性,我建议切换到它...

答案 1 :(得分:1)

您可以将数字与字符串的其余部分分开格式化:

two_numbers_format = '(%.2f - %.2f)'

然后:

print format % (45,'Endurance',10, two_numbers_format % zones[1:3])

对于一个数字:

one_number_format = '%.2f'
print format % (45,'Active Recovery               Below ==>> ',10, one_number_format % zones[:1])