我需要输出4个不同的浮点数到小数点后两位。
这就是我所拥有的:
print '%.2f' % var1,'kg =','%.2f' % var2,'lb =','%.2f' % var3,'gal =','%.2f' % var4,'l'
这是非常不干净的,看起来很糟糕。是否有办法在输出'%.2f'中进行浮动?
注意:使用Python 2.6。
Answers:
格式字符串语法。
https://docs.python.org/3/library/string.html#formatstrings
from math import pi
var1, var2, var3, var4 = pi, pi*2, pi*3, pi*4
'{:0.2f}, kg={:0.2f}, lb={:0.2f}, gal={:0.2f}'.format(var1, var2, var3, var4)
输出为:
'3.14, kg=6.28, lb=9.42, gal=12.57'
如果只想将值转换为漂亮的字符串,请执行以下操作:
twodecimals = ["%.2f" % v for v in vars]
另外,您也可以像问题中一样打印出单位:
vars = [0, 1, 2, 3] # just some example values
units = ['kg', 'lb', 'gal', 'l']
delimiter = ', ' # or however you want the values separated
print delimiter.join(["%.2f %s" % (v,u) for v,u in zip(vars, units)])
Out[189]: '0.00 kg, 1.00 lb, 2.00 gal, 3.00 l'
第二种方法使您可以轻松更改定界符(制表符,空格,换行符等)以轻松满足您的需要;分隔符也可以是函数参数,而不是硬编码的。
编辑:要使用“名称=值”语法,只需在列表理解范围内更改按元素操作:
print delimiter.join(["%s = %.2f" % (u,v) for v,u in zip(vars, units)])
Out[190]: 'kg = 0.00, lb = 1.00, gal = 2.00, l = 3.00'
如果要使打印操作自动将浮点数更改为仅显示小数点后两位,请考虑编写一个函数来替换“打印”。例如:
def fp(*args): # fp means 'floating print'
tmps = []
for arg in args:
if type(arg) is float: arg = round(arg, 2) # transform only floats
tmps.append(str(arg))
print(" ".join(tmps)
使用fp()代替打印...
fp("PI is", 3.14159)
... 代替 ... print "PI is", 3.14159
print '%.2f kg = %.2f lb = %.2f gal = %.2f l' % (var1, var2, var3, var4)