Python, imprime todos los flotantes a 2 decimales en la salida

Necesito mostrar 4 flotantes diferentes a dos decimales.

Esto es lo que tengo:

print '%.2f' % var1,'kg =','%.2f' % var2,'lb =','%.2f' % var3,'gal =','%.2f' % var4,'l' 

Que es muy sucio, y se ve mal. ¿Hay alguna forma de hacer que flote en ese lugar, ponga ‘% .2f’?

Nota: Utilizando Python 2.6.

Bueno, al menos lo limpiaría de la siguiente manera:

 print "%.2f kg = %.2f lb = %.2f gal = %.2f l" % (var1, var2, var3, var4) 

Si solo desea convertir los valores en cadenas de aspecto agradable, haga lo siguiente:

 twodecimals = ["%.2f" % v for v in vars] 

Alternativamente, también puede imprimir las unidades como las que tiene en su pregunta:

 vars = [0, 1, 2, 3] # just some example values units = ['kg', 'lb', 'gal', 'l'] delimiter = ', ' # or however you want the values separated print delimiter.join(["%.2f %s" % (v,u) for v,u in zip(vars, units)]) Out[189]: '0.00 kg, 1.00 lb, 2.00 gal, 3.00 l' 

La segunda forma le permite cambiar fácilmente el delimitador (tabulación, espacios, nuevas líneas, lo que sea) para adaptarlo a sus necesidades fácilmente; El delimitador también podría ser un argumento de función en lugar de estar codificado.

Editar: Para usar su syntax ‘nombre = valor’, simplemente cambie la operación de elementos dentro de la lista de comprensión:

 print delimiter.join(["%s = %.2f" % (u,v) for v,u in zip(vars, units)]) Out[190]: 'kg = 0.00, lb = 1.00, gal = 2.00, l = 3.00' 

Sintaxis de cadena de formato.

https://docs.python.org/3/library/string.html#formatstrings

 from math import pi var1, var2, var3, var4 = pi, pi*2, pi*3, pi*4 '{:0.2f}, kg={:0.2f}, lb={:0.2f}, gal={:0.2f}'.format(var1, var2, var3, var4) 

La salida sería:

 '3.14, kg=6.28, lb=9.42, gal=12.57' 

Si buscas legibilidad, creo que este es el código:

 print '%(kg).2f kg = %(lb).2f lb = %(gal).2f gal = %(l).2f l' % { 'kg': var1, 'lb': var2, 'gal': var3, 'l': var4, } 

Acabo de descubrir la función redonda: está en Python 2.7, no estoy seguro de la versión 2.6. Toma un flotante y el número de dps como argumentos, así que round (22.55555, 2) da el resultado 22.56.

Si lo que desea es hacer que la operación de impresión cambie automáticamente los flotantes para mostrar solo 2 lugares decimales, considere escribir una función para reemplazar ‘imprimir’. Por ejemplo:

 def fp(*args): # fp means 'floating print' tmps = [] for arg in args: if type(arg) is float: arg = round(arg, 2) # transform only floats tmps.append(str(arg)) print(" ".join(tmps) 

Use fp () en lugar de imprimir …

fp("PI is", 3.14159) … en lugar de … print "PI is", 3.14159

No directamente en la forma en que quieres escribir eso, no. Uno de los principios de diseño de Python es “Explícito es mejor que implícito” (vea import this ). Esto significa que es mejor describir lo que desea en lugar de tener el formato de salida dependiendo de alguna configuración de formato global o algo así. Por supuesto, podría dar formato a su código de manera diferente para que se vea mejor:

 print '%.2f' % var1, \ 'kg =' ,'%.2f' % var2, \ 'lb =' ,'%.2f' % var3, \ 'gal =','%.2f' % var4, \ 'l'