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

Как использовать форматирование строк, чтобы показать BOTH начальные нули и точность 3?

Я пытаюсь представить число с ведущими и конечными нулями, так что общая ширина равна 7, включая десятичную точку. Например, я хочу представить "5" как "005.000". Кажется, что форматирование строк позволит мне делать то или другое, но не то, и другое. Здесь вывод, который я получил в Ipython, иллюстрирующий мою проблему:

In [1]: '%.3f'%5
Out[1]: '5.000'

In [2]: '%03.f'%5
Out[2]: '005'

In [3]: '%03.3f'%5
Out[3]: '5.000'

Линии 1 и 2 делают именно то, что я ожидаю. Строка 3 просто игнорирует тот факт, что мне нужны ведущие нули. Есть идеи? Спасибо!

4b9b3361

Ответ 1

Первое число - это общее количество цифр, включая десятичную точку.

>>> '%07.3f' % 5
'005.000'

Важное примечание: В число включаются как десятичные точки (.), так и знаки минус (-).

Ответ 2

[Edit: Gah, снова избили]

'%07.3F'%5

Первое число - это полная ширина поля.

Ответ 3

Это заняло у меня секунду, чтобы понять, как сделать @nosklo способом, но с .format() и вложенностью.

Поскольку я не могу найти пример где-либо еще, я делюсь здесь.

Пример использования "{}".format(a)

Python 2

>>> a = 5
>>> print "{}".format('%07.3F' % a)
005.000
>>> print("{}".format('%07.3F' % a))
005.000

Python 3

Более python3, создан из документов, но оба работают так, как задумано.

Обратите внимание на % против :, а формат размещения в python3 отличается.

>>> a = 5
>>> print("{:07.3F}".format(a))
005.000
>>> a = 5
>>> print("Your Number is formatted: {:07.3F}".format(a))
Your Number is formatted: 005.000

Пример использования "{}".format(a) вложенного

Затем расширив это, чтобы соответствовать моему коду, который был вложен в .format():

print("{}: TimeElapsed: {} Seconds, Clicks: {} x {} "
      "= {} clicks.".format(_now(),
                            "{:07.3F}".format((end -
                                               start).total_seconds()),
                            clicks, _ + 1, ((_ + 1) * clicks),
                            )
      )

Который форматирует все так, как я хотел.

Результат

20180912_234006: TimeElapsed: 002.475 Seconds, Clicks: 25 + 50 = 75 clicks.

Важные замечания:

  • @babbitt: первое число - общая ширина поля.

  • @meawoppl: Это также считается минус!...