Подтвердить что ты не робот

Как показать процент в python

это мой код:

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

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

0.0%

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

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

4b9b3361

Ответ 1

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%

Ответ 2

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

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

Ответ 3

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

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

Детали:

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

Ответ 4

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

В качестве бонуса используйте описанные здесь методы превосходного форматирования строк: 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%'

Отличный камень!

Ответ 5

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

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

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

Ответ 6

Просто чтобы добавить решение Python 3 f-string

prob = 1.0/3.0
print(f"{prob:.0%}")

Ответ 7

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

print '%.2f%%' % 24.689 # Double percentage sign

Ответ 8

Как насчет чего-то вроде этого:

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

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

Ответ 9

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

п = 1,0/3

напечатать "%.0f"% (100 * n) + r "%"

[Выход] 33%