我刚开始学习python,目前正在编写一个脚本,将Celsius转换为Fahrenheit,反之亦然。我已完成主要部分但现在我希望能够让用户设置输出中显示的小数位数...第一个函数包含我失败的尝试,第二个函数设置为2个小数位。
def convert_f_to_c(t,xx):
c = (t - 32) * (5.0 / 9)
print "%.%f" % (c, xx)
def convert_c_to_f(t):
f = 1.8 * t + 32
print "%.2f" % f
print "Number of decimal places?"
dec = raw_input(">")
print "(c) Celsius >>> Ferenheit\n(f) Ferenheit >>> Celcius"
option = raw_input(">")
if option == 'c':
cel = int(raw_input("Temperature in Celcius?"))
convert_c_to_f(cel)
else:
fer = int(raw_input("Temperature in Ferenheit?"))
convert_f_to_c(fer,dec)
答案 0 :(得分:5)
num_dec = int(raw_input("Num Decimal Places?")
print "%0.*f"%(num_dec,3.145678923678)
在%格式字符串中,您可以使用*
来使用此功能
afaik '{}'.Format
方法
>>> import math
>>> print "%0.*f"%(3,math.pi)
3.142
>>> print "%0.*f"%(13,math.pi)
3.1415926535898
>>>
答案 1 :(得分:1)
这有效:
>>> fp=12.3456789
>>> for prec in (2,3,4,5,6):
... print '{:.{}f}'.format(fp,prec)
...
12.35
12.346
12.3457
12.34568
12.345679
就像这样:
>>> w=10
>>> for prec in (2,3,4,5,6):
... print '{:{}.{}f}'.format(fp,w,prec)
...
12.35
12.346
12.3457
12.34568
12.345679
甚至:
>>> align='^'
>>> for prec in (1,2,3,4,5,6,7,8,9):
... print '{:{}{}.{}f}'.format(fp,align,15,prec)
...
12.3
12.35
12.346
12.3457
12.34568
12.345679
12.3456789
12.34567890
12.345678900
在使用自动字段选择变得太毛茸茸之前,您也可以使用手册并交换字段:
>>> for prec in (2,3,4,5,6):
... print '{2:{0}.{1}f}'.format(w,prec,fp)
...
12.35
12.346
12.3457
12.34568
12.345679
最好的文档确实在PEP 3101
中