как показать процент в питоне - PullRequest
143 голосов
/ 15 марта 2011

это мой код:

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

и оно показывает:

0.0%

но я хочу получить 33%

что я могу сделать.

Ответы [ 8 ]

227 голосов
/ 15 марта 2011

format поддерживает процент тип точности с плавающей запятой :

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

Если вам не нужно целочисленное деление, вы можете импортировать деление Python3 из__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%
149 голосов
/ 20 мая 2014

Для метода форматирования .format() есть более удобный вариант форматирования в процентах:

>>> '{:.1%}'.format(1/3.0)
'33.3%'
55 голосов
/ 15 августа 2013

Просто для полноты, поскольку я заметил, что никто не предложил этот простой подход:

>>> print("%.0f%%" % (100 * 1.0/3))
33%

Детали:

  • %.0f означает " printчисло с плавающей запятой с 0 десятичными знаками", поэтому %.2f будет печатать 33.33
  • %% печатает литерал %.Чуть чище, чем ваш оригинал +'%'
  • 1.0 вместо 1 обеспечивает принудительное разделение для плавания, поэтому не более 0.0
34 голосов
/ 15 марта 2011

Вы делите целые числа, а затем конвертируете в число с плавающей точкой. Вместо этого делите на поплавки.

В качестве бонуса используйте удивительные методы форматирования строк, описанные здесь: http://docs.python.org/library/string.html#format-specification-mini-language

Чтобы указать процент преобразования и точность.

>>> 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%'

Великолепная жемчужина!

4 голосов
/ 15 марта 2011

Тогда вы захотите сделать это вместо:

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

.0 обозначает их как числа с плавающей точкой, а int() снова округляет их до целых чисел.

0 голосов
/ 12 апреля 2018

Вот как я это сделал:

п = 1,0 / 3

print '% .0f'% (100 * n) + r '%'

[Вывод] 33%

0 голосов
/ 02 февраля 2018

Просто поставь вот так:

print '%.2f%%' % 24.689 # Double percentage sign
0 голосов
/ 15 марта 2011

Как насчет этого:

print str( round( float(1.0/3.0) * 100 )  )[:2] + '%'

Этот бит [: 2] отрежет 0 от результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...