嗨,我是编程新手,并且有一个小问题。
我有一小段代码我试图打印出来的结果。当我打印它时,它给了我一些带小数位的数字,有些只有一个。如果我尝试更改占位符来自'到了' 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
答案 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])