在python 2.x中你被允许做这样的事情:
>>> print '%.2f' % 315.15321531321
315.15
然而,我无法让它为python 3.x工作,我尝试了不同的东西,比如
>>> print ('%.2f') % 315.15321531321
%.2f
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'NoneType' and 'float'
>>> print ("my number %") % 315.15321531321
my number %
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'NoneType' and 'float'
然后,我读到了.format()方法,但我无法使其工作
>>> "my number {.2f}".format(315.15321531321)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'float' object has no attribute '2f'
>>> print ("my number {}").format(315.15321531321)
my number {}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'format'
我会对任何提示和建议感到高兴!
答案 0 :(得分:4)
尝试发送带有格式的整个字符串进行打印。
print ('%.2f' % 6.42340)
适用于Python 3.2
此外,格式的工作原理是为所提供的agruments提供索引
print( "hello{0:.3f}".format( 3.43234 ))
注意格式标志前面的'0'。
答案 1 :(得分:2)
您的代码存在的问题是,在Python 3中,print不再是关键字,而是一个函数,所以会发生这种情况:
>>> print ('%.2f') % 315.15321531321
%.2f
Traceback.... #
因为它打印字符串后来评估“%315.15321531321”部分,当然也失败了,其他例子也是如此。
没关系:
print(('%.2f') % 315.15321531321)