146 votos

cómo mostrar el porcentaje en Python

este es mi código:

print str(float(1/3))+'%'

y muestra :

0.0%

pero quiero conseguir 33%

¿qué puedo hacer?

gracias

229voto

miku Puntos 63392

format es un built-in desde Python 2.6:

>>> print "{0:.0f}%".format(float(1)/3 * 100)
33%

Si no quieres la división de enteros, puedes importar la división de Python3 desde __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%

150voto

Sebastian Raschka Puntos 1056

Existe una opción de formato más "porcentual" para el .format() método de formato:

>>> '{:.1%}'.format(1/3.0)
'33.3%'

55voto

MestreLion Puntos 1789

Sólo para completar, ya que me he dado cuenta de que nadie ha sugerido este sencillo enfoque:

>>> print "%.0f%%" % (100.0 * 1/3)
33%

Detalles:

  • %.0f significa " imprimir un flotador con 0 decimales ", por lo que %.2f imprimiría 33.33
  • %% imprime un literal % . Un poco más limpio que su original +'%'
  • 100.0 se encarga de obligar a la división a flotar, así que no hay más 0.0

35voto

Yuji 'Tomita' Tomita Puntos 46106

Estás dividiendo enteros y luego los conviertes en flotantes. Divide por flotantes en su lugar.

Como extra, utiliza los increíbles métodos de formateo de cadenas descritos aquí: http://docs.Python.org/library/string.html#format-specification-mini-language

Para especificar una conversión porcentual y una 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!

4voto

Morten Kristensen Puntos 4071

Entonces querrás hacer esto en su lugar:

print str(int(1.0/3.0*100))+'%'

El .0 los denota como flotantes y int() los redondea a enteros después de nuevo.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X