У меня есть программа, которая работает в двух режимах - целочисленном и десятичном - определяется аргументом командной строки.
При работе в целочисленном режиме операторы печати выглядят следующим образом
print(f'{next:,.0f}')
тогда как в десятичном режиме операторы печати выглядят следующим образом
print(f'{next:,.2f}')
Так что если next = 21234.9234
, то результат равен 21 234 в целочисленном режиме и 21 234,92 в десятичном режиме.
Прямо сейчас каждый оператор печати кодируется следующим образом:
if imode:
print(f'{next:,.0f}')
else:
print(f'{next:,.2f}')
Поскольку этот код появляется много раз в большой программе, было бы неплохо иметь один оператор печати, который дает правильный результат в зависимости от режима.
Если бы я не использовал разделение запятыми в качестве требования, то следующее будет делать то, что я хочу.
Я мог бы выполнить
if imode:
fmt='%.0f'
else
fmt='%.2f'
один раз, и тогда каждый оператор печати будет выглядетькак
print(fmt %next)
Поскольку формат, используемый для разделения запятых, не так прост, как форматирование без разделения запятых, я не могу заставить работать подобный прием.
Есть ли какой-нибудь другой трюк, который сделает то, что я хочу?