我想使用格式化字符串舍入整数,但必须通过参数询问。我有以下代码,其中p是要舍入的小数位数。
def fahrenheit_to_celsius(t, p):
celsius = ((t - 32.0) * 5.0 / 9.0)
print "%f "%(celsius)
答案 0 :(得分:4)
def fahrenheit_to_celsius(t, p):
celsius = (t - 32.) * 5. / 9.
return "{0:.{1}f}".format(celsius, p)
print fahrenheit_to_celsius(76.2, 2) # prints "24.56"
print fahrenheit_to_celsius(0, 0) # prints "-18"
答案 1 :(得分:0)
>>> def f_to_c(t, p=0):
... return round(((t - 32.0) * 5.0 / 9.0), p)
...
>>> print("{}".format(f_to_c(10, 2)))
-12.22
答案 2 :(得分:0)
在格式说明符中,在.*
和%
之间添加f
。 '.'
指定小数,'*'
指定要从参数列表中选取的宽度。
def fahrenheit_to_celsius(t, p):
celsius = ((t - 32.0) * 5.0 / 9.0)
print "%.*f"%(p,celsius) ## pick width from argument.
print "%.2f"%(celsius) ## always 2 decimals
来自printf
手册页:
字段宽度
可选的十进制数字字符串(具有非零的第一个数字),指定最小字段宽度。如果转换后的值的字符数少于字段宽度,则会在左侧填充空格(如果已给出左侧调整标记,则填充右侧)。可以写
"*"
或"*m$"
(对于某些十进制整数m)而不是十进制数字字符串来指定字段宽度分别在下一个参数或第m个参数中给出,必须是int类型。负字段宽度被视为'-'
标志,后跟正字段宽度。在任何情况下,不存在或小的字段宽度都不会导致字段截断;如果转换结果宽于字段宽度,则字段将展开以包含转换结果。