1000 цифр pi в python

Я думал об этой проблеме, и я не могу понять это. Возможно, ты поможешь мне. Проблема в том, что мой код не работает для вывода 1000 цифр pi на языке кодирования python.

Вот мой код:

def make_pi(): q, r, t, k, m, x = 1, 0, 1, 1, 3, 3 while True: if 4 * q + r - t < m * t: yield m q, r, t, k, m, x = (10*q, 10*(rm*t), t, k, (10*(3*q+r))//t - 10*m, x) else: q, r, t, k, m, x = (q*k, (2*q+r)*x, t*x, k+1, (q*(7*k+2)+r*x)//(t*x), x+2) digits = make_pi() pi_list = [] my_array = [] for i in range(1000): my_array.append(str("hello, I'm an element in an array \n" )) big_string = "".join(my_array) print "here is a big string:\n %s" % big_string 

Я знаю, что этот код можно исправлять, но я не уверен, что исправить … Оператор печати, говорящий здесь, представляет собой большую строку и my_array.append(str("hello, im an element in an array \n)) на данный момент является наполнителем. Я знаю, как весь код используется для работы, но, как я уже говорил, я не могу заставить его снимать этот код.

6 Solutions collect form web for “1000 цифр pi в python”

Запустите это

 def make_pi(): q, r, t, k, m, x = 1, 0, 1, 1, 3, 3 for j in range(1000): if 4 * q + r - t < m * t: yield m q, r, t, k, m, x = 10*q, 10*(rm*t), t, k, (10*(3*q+r))//t - 10*m, x else: q, r, t, k, m, x = q*k, (2*q+r)*x, t*x, k+1, (q*(7*k+2)+r*x)//(t*x), x+2 digits = make_pi() pi_list = [] my_array = [] for i in make_pi(): my_array.append(str(i)) my_array = my_array[:1] + ['.'] + my_array[1:] big_string = "".join(my_array) print "here is a big string:\n %s" % big_string 

И читайте здесь о операторе yield : что делает ключевое слово «yield» в Python?

Вот ответ:

 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337 

Если вы не хотите реализовать свой собственный алгоритм, вы можете использовать mpmath .

 try: # import version included with old SymPy from sympy.mpmath import mp except ImportError: # import newer version from mpmath import mp mp.dps = 1000 # set number of digits print(mp.pi) # print pi to a thousand places 

Справка

Обновление: код поддерживает устаревшие и более новые установки SymPy (см. Комментарий ). *

Здесь вы можете проверить, правильно ли ваша программа выводит 1000 цифр: http://spoj.com/CONSTANT

Конечно, вы можете использовать diff или tc, но вам придется копировать эти 1000 цифр откуда-то, и там вы просто отправляете свою программу и проверяете, больше ли очков, чем 999.

Вы можете попробовать распечатать еще больше цифр и тем самым получить больше очков. Возможно, вам понравится.

Я не знаком с вашим алгоритмом. Это реализация BBP?

В любом случае ваш make_pi является генератором. Попробуйте использовать его в цикле for:

 for digit in make_pi(): print digit 

Обратите внимание, что этот цикл бесконечен: make_pi() никогда не выбрасывает StopIteration

Делает ли это то, что вы хотите?

 i = 0; pi_str = "" for x in make_pi(): pi_str += str(x) i += 1 if i == 1001: break print "pi= %s.%s" % (pi_str[0],pi_str[1:]) 

Здесь я нашел другой способ -> расчет Python pi? для приближения питона, основанного на формуле братьев Чудновских для генерации Pi, который я изменил для своей программы.

 def pifunction(): numberofdigits = int(input("please enter the number of digits of pi that you want to generate")) getcontext().prec = numberofdigits def calc(n): t = Decimal(0) pi = Decimal(0) deno = Decimal(0) k = 0 for k in range(n): t = (Decimal(-1)**k)*(math.factorial(Decimal(6)*k))*(13591409+545140134*k) deno = math.factorial(3*k)*(math.factorial(k)**Decimal(3))*(640320**(3*k)) pi += Decimal(t)/Decimal(deno) pi = pi * Decimal(12)/Decimal(640320**Decimal(1.5)) pi = 1/pi return str(pi) print(calc(1)) 

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

  • ImportError: невозможно импортировать имя Pubnub
  • pySerial write () отлично работает в интерпретаторе Python, но не в скрипте Python
  • Вычисление Pi с десятичной точкой на Python
  • Использование селена на малине Pi без головы
  • выполнение бесконечного цикла в ожидании ввода
  • Использование Python для запуска браузера (Chromium) и изменения URL-адреса
  • Большой номер итераций Python
  • Скрипт сценария Upstart python
  • Python - лучший язык программирования в мире.