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



Это мой код:



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


и это показывают :



0.0%


но я хочу сделать 33%



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

12271   8  

8 ответов:

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%

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

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

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

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

детали:

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

вы делите целые числа, а затем преобразуете их в 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%'

большой камень!

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

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

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

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

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

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

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

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

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

n=1.0 / 3

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

[выход] 33%

Comments

    Ничего не найдено.