用户设置的功能中的可变小数位限制?

时间:2013-05-13 23:00:26

标签: python

我刚开始学习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)

2 个答案:

答案 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