Использование формата () для выравнивания по центру и установки точности, которые задаются в качестве входных данных - PullRequest
0 голосов
/ 26 октября 2018

это моя проблема: рассмотрим число, подобное 29.8245, учитывая количество для точности, сначала это число должно быть округлено, например, для precision =0 это будет 30. Теперь это число должно быть выровнено по центру в строке с заданным значением.ширина.например, если width = 10, то конечный результат будет: ' 30 ' Для этого конкретного примера я придумал:

"{:^10}".format("{0:.0f}".format(29.8245))

проблема в том, что теперь числа жестко запрограммированы, и я не знаю,как это исправить, чтобы получить входные данные в мой код. Я знаю, что:

"{}".format()

- это то, что мы используем в обычных случаях, но в этой проблеме я не знаю, как объединить эти два кода (я недаже не знаю, возможно это или нет).Также есть ли лучший подход для решения проблемы?

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Именно поэтому строки формата поддерживают вложение:

>>> width = 10
>>> precision = 0
>>> num = 29.825
>>> f'{num:^{width}.{precision}f}'
'    30    '
0 голосов
/ 26 октября 2018

Вот еще одно возможное решение, которое не зависит от f-строк

>>> '{0:^{width}.{precision}f}'.format(12.34, width=10, precision=0)
'    12    '
0 голосов
/ 26 октября 2018

Вот один из способов сделать это, он будет работать в «старых» версиях Python (до 3.6) и будет продолжать работать в нем:

res = "{:^{width}.{precis}f}".format(29.8245, precis=2, width=15)
print(repr(res))

Как видите, форматируйте синтаксис строкиподдерживает вложение.

Вывод:

'     29.82     '

Значения, используемые для precis и width, являются выражениями, поэтому могут включать вычисления, а не жестко закодированные константы, как показано.

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