/ / format (): ValueError: Точність заборонено в специфікаторі цілого формату - python, string, python-3.x

формат (): ValueError: Точність не дозволена в специфікаторі цілого формату - python, string, python-3.x

Я новачок пітона. Я просто знайомлюсь із методом форматування.

З книги, яку я читаю, щоб вивчити пітон

What Python does in the format method is that it substitutes each argument
value into the place of the specification. There can be more detailed specifications
such as:
decimal (.) precision of 3 for float "0.333"
>>> "{0:.3}".format(1/3)
fill with underscores (_) with the text centered
(^) to 11 width "___hello___"
>>> "{0:_^11}".format("hello")
keyword-based "Swaroop wrote A Byte of Python"
>>> "{name} wrote {book}".format(name="Swaroop", book="A Byte of Python")

У інтерпретаторі пітона, якщо я спробую

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

Це дає помилку

 File "", line 24, in
ValueError: Precision not allowed in integer format specifier

Відповіді:

6 за відповідь № 1

Щоб надрукувати номери з плаваючою комою, ви повинні мати принаймні один із входів у вигляді поплавків, як цей

print("{0:.3}".format(1.0/3))

Якщо обидва входи є цілими числами для оператора поділу, повернутий результат також буде в int, з десятковою частиною усічений.

Вихідні дані

0.333

Ви можете конвертувати дані в плаваючий з float функція, як це

data = 1
print("{0:.3}".format(float(data) / 3))

6 для відповіді № 2

Краще додати f:

In [9]: print("{0:.3f}".format(1/3))
0.000

таким чином ви могли це помітити 1/3 дає ціле число а потім виправте це 1./3 або 1/3. .


2 для відповіді № 3

Варто зауважити, що ця помилка трапиться лише в python 2. У python 3 поділ завжди повертає поплавок.

Ви можете повторити це за допомогою from __future__ import division заява в python 2.

~$ python
Python 2.7.6
>>> "{0:.3}".format(1/3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Precision not allowed in integer format specifier
>>> from __future__ import division
>>> "{0:.3}".format(1/3)
"0.333"