@make_install

Python_Как работает выражение форматирования в примере?

Доброе время суток, господа!

Помогите, пожалуйста, разобраться в логике работы выражения форматирования. Написать-то написал, но никак не могу разобраться почему именно так работает выражение. Вкратце, задача была вывести значение константы с заданной точностью.

direct = {'pi':math.pi,'e':math.e,'fi':1.618033988749} # примерный словарь
const = raw_input('enter constant (' example - NAME:ACCUR): ').split(':')  # вывод const - ['fi', '4']
accur = const[1] # достаем необходимую нам точность из списка ввода пользователя
filtr = "%%s = %%.%sf" % (accur,) # после работы выражения получаем %s = %.4f
print filtr % (const[0],direct[const[0]]) 
# после работы выражения получаем fi = 1.6180


Почему в выражении filtr = "%%s = %%.%sf" % (accur,) переменная accur подставляется по-умолчанию ко второму шаблону %%.%sf а не к первому? Неважно даже, если задать передачу accur через кортеж или через единственное значение.

Простите, если сумбурно написал. Мне не важны другие способы и методы решения, меня интересует лишь данная особенность работы выражения форматирования именно в приведенном примере.

Заранее спасибо!
  • Вопрос задан
  • 2626 просмотров
Решения вопроса 1
В этом выражении одиночный символ % — это показатель начала спецификатора. Двойной %% — это просто знак процента %. Строка обрабатывается лишь один раз. То есть обработчик строки превращает %%s в %s и переходит дальше по строке.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы