4

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'

ヒントや提案があればうれしいです!

4

2 に答える 2

4

文字列全体を書式付きで送信して印刷してみてください。

print ('%.2f' % 6.42340)

Python 3.2 で動作

さらに、この形式は、提供された引数にインデックスを提供することによって機能します。

print( "hello{0:.3f}".format( 3.43234 ))

フォーマット フラグの前の「0」に注目してください。

于 2013-02-11T15:47:06.843 に答える
2

コードの問題は、Python 3 では print がキーワードではなく、関数であるため、次のようになることです。

>>> print ('%.2f') % 315.15321531321
%.2f
Traceback....  # 

文字列を出力し、後で「% 315.15321531321」の部分を評価してもちろん失敗するため、他の例でも同じことが起こります。

これで結構です:

print(('%.2f') % 315.15321531321)
于 2013-02-11T17:20:20.453 に答える