Доброе время суток, господа!
Помогите, пожалуйста, разобраться в логике работы выражения форматирования. Написать-то написал, но никак не могу разобраться почему именно так работает выражение. Вкратце, задача была вывести значение константы с заданной точностью.
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 через кортеж или через единственное значение.
Простите, если сумбурно написал. Мне не важны другие способы и методы решения, меня интересует лишь данная особенность работы выражения форматирования именно в приведенном примере.
Заранее спасибо!