No se puede descubrir cómo funciona la sustitución de cadenas en Python 3.x

En Python 2.x se te permitió hacer algo como esto:

>>> print '%.2f' % 315.15321531321 315.15 

Sin embargo, no puedo hacer que funcione para Python 3.x, probé diferentes cosas, como

 >>> print ('%.2f') % 315.15321531321 %.2f Traceback (most recent call last): File "", line 1, in  TypeError: unsupported operand type(s) for %: 'NoneType' and 'float' >>> print ("my number %") % 315.15321531321 my number % Traceback (most recent call last): File "", line 1, in  TypeError: unsupported operand type(s) for %: 'NoneType' and 'float' 

Luego, leí sobre el método .format (), pero tampoco puedo hacer que funcione.

 >>> "my number {.2f}".format(315.15321531321) Traceback (most recent call last): File "", line 1, in  AttributeError: 'float' object has no attribute '2f' >>> print ("my number {}").format(315.15321531321) my number {} Traceback (most recent call last): File "", line 1, in  AttributeError: 'NoneType' object has no attribute 'format' 

¡Me encantaría cualquier consejo o sugerencia!

Intenta enviar toda la cadena con formato para imprimir.

 print ('%.2f' % 6.42340) 

Trabaja con Python 3.2

Además, el formato funciona al proporcionar un índice a los documentos provistos.

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

Observe el ‘0’ delante de las banderas de formato.

El problema con su código es que en Python 3 print ya no es una palabra clave, es una función, por lo que esto sucede:

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

Debido a que imprime la cadena y luego evalúa la parte “% 315.15321531321” y, por supuesto, falla, lo mismo ocurre con los otros ejemplos.

Esto esta bien:

 print(('%.2f') % 315.15321531321)