Как манипулировать числовым выводом с переменными свойствами на основе пользовательского ввода - PullRequest
1 голос
/ 30 мая 2019

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

Python не позволяет изменять числовой вывод, насколько я знаю, используя:

результат = 3.14159 ...

а = 50

b = 48

print('result = %a.bf' % result')

Но, исходя из количества итераций, точности ракет Пи Скай, но для небольшого количества итераций (1, 2, ...) требуется не так много десятичных знаков.

Я хотел бы, чтобы произошло следующее:

while True:

   k = int(input("How many iterations do you want? "))

   num_digits = k * 10
   a = num_digits
   b = num_digits - 2

   result = calculate_pi(k)

   print('result = %a.bf' % result')
   .
   . 
   .

Я понимаю, что это не то, как работает числовое форматирование Python, но я не знаю, как перевести то, что я хочу, чтобы произошло на английском языке, в сценарий.

1 Ответ

2 голосов
/ 30 мая 2019

python3.6 +:

print(f'result = %{a}.{b}f' % result)

старый питон:

print(('result = %%%d.%df' % (a, b)) % result) # %% is used to escape '%'
print('results = %{}.{}f'.format(a, b) % a)

В обоих случаях идея состоит в том, чтобы сначала создать строку с нужным вам заполнителем (%X.Yf), а затем использовать ее во втором проходе.

...