Я работаю над фрагментом кода, в котором говорится, что это должно работать в Python 3:

"{0:.{?}f}".format(t, precision).center(width)

Где: t - число с плавающей запятой, ширина - целое число, точность - целое число.

Я все время получаю это сообщение об ошибке:

return "{0:. {?} f}". format (t, precision) .center (width) KeyError: '?'

Может кто-нибудь указать мне в правильном направлении?

2
Noble Bell 20 Июн 2017 в 06:21
Откуда у вас этот вопросительный знак?
 – 
user2357112 supports Monica
20 Июн 2017 в 06:25
Единственный способ использовать ? в качестве идентификатора - это сделать его ключом в dict, а затем использовать оператор распаковки dict, **, чтобы передать его в format в качестве ключевого слова. аргумент. Например, "{0:.{?}f}".format(123.456, **{'?':7}).center(20).
 – 
unutbu
20 Июн 2017 в 06:42

1 ответ

Лучший ответ

Вместо того:

"{0:.{?}f}".format(t, precision).center(width)

Пытаться:

"{0:.{1}f}".format(t, precision).center(width)

Просто измените это ? на 1, потому что то, что находится внутри внутренних фигурных скобок, используется как ключ или индекс.

(Упрощенный) пример

.center() просто создаст отступы с обеих сторон, я проигнорировал это здесь.

"{0:.{1}f}".format(14.6, 10)
# Outputs: '14.6000000000'

#Be careful with floating point, though
"{0:.{1}f}".format(14.6, 50)
#'14.59999999999999964472863211994990706443786621093750'
3
Juan T 20 Июн 2017 в 06:45