python - trabajar - cómo sacar porcentajes
cómo mostrar el Porcentaje en python (8)
este es mi código:
print str(float(1/3))+''%''
y muestra:
0.0%
pero quiero obtener el 33%
que puedo hacer.
Así es como lo hice:
n = 1.0 / 3
imprimir ''% .0f''% (100 * n) + r ''%''
[Salida] 33%
Entonces querrías hacer esto en su lugar:
print str(int(1.0/3.0*100))+''%''
El .0
denota como flotantes e int()
redondea a números enteros después de nuevo.
Estás dividiendo enteros y luego convirtiéndolos en flotantes. Dividir por flotadores en su lugar.
Como beneficio adicional, utilice los asombrosos métodos de formato de cadenas que se describen a continuación: http://docs.python.org/library/string.html#format-specification-mini-language
Para especificar un porcentaje de conversión y precisión.
>>> float(1) / float(3)
[Out] 0.33333333333333331
>>> 1.0/3.0
[Out] 0.33333333333333331
>>> ''{0:.0%}''.format(1.0/3.0) # use string formatting to specify precision
[Out] ''33%''
>>> ''{percent:.2%}''.format(percent=1.0/3.0)
[Out] ''33.33%''
Una gran joya!
Hay una forma más conveniente de opción de formato de .format()
para el método de formato .format()
:
>>> ''{:.1%}''.format(1/3.0)
''33.3%''
Qué tal algo como esto:
print str( round( float(1.0/3.0) * 100 ) )[:2] + ''%''
Este bit [: 2] cortará el .0 del resultado.
Solo para completar, ya que noté que nadie sugirió este enfoque simple:
>>> print "%.0f%%" % (100 * 1.0/3)
33%
Detalles:
-
%.0f
significa " imprimir un flotante con 0 decimales ", por lo que%.2f
imprimiría33.33
-
%%
imprime un%
literal. Un poco más limpio que tu original+''%''
-
1.0
lugar de1
se encarga de obligar a la división a flotar, por lo que no hay más0.0
Solo ponlo así:
print ''%.2f%%'' % 24.689 # Double percentage sign
format
admite un tipo de porcentaje de precisión de punto flotante :
>>> print "{0:.0%}".format(1./3)
33%
Si no quieres la división de enteros, puedes importar la división de __future__
de __future__
:
>>> from __future__ import division
>>> 1 / 3
0.3333333333333333
# The above 33% example would could now be written without the explicit
# float conversion:
>>> print "{0:.0f}%".format(1/3 * 100)
33%
# Or even shorter using the format mini language:
>>> print "{:.0%}".format(1/3)
33%