在 python 中生成圆周率
generating pi in python
我想知道如何修改此代码以在被问及时提供 X 位数的圆周率
因为现在它只是打印一个随机数量
while True:
print("how many digits of pi would you like")
def make_pi():
q, r, t, k, m, x = 1, 0, 1, 1, 3, 3
number = int(input())
for j in range(int(number)):
if 4 * q + r - t < m * t:
yield m
q, r, t, k, m, x = 10 * q, 10 * (r - m * 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 the string:\n %s" % big_string)
print('{:.xf}'.format(math.pi))
其中x
是你要在小数点后打印的圆周率的位数。
编辑:
如果你想按照你的方式去做,那么
big_string = ''.join(my_array[:x])
其中 x 是 个字符的数量,包括前导 3 和小数点。
完整代码如果感兴趣
虽然正确:
打印("how many digits of pi would you like")
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 * (r - m * 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))
number = int(input())+2
my_array = my_array[:1] + ['.'] + my_array[1:]
big_string = "".join(my_array[: number ])
print("here is the string:\n %s" % big_string)
我想知道如何修改此代码以在被问及时提供 X 位数的圆周率 因为现在它只是打印一个随机数量
while True:
print("how many digits of pi would you like")
def make_pi():
q, r, t, k, m, x = 1, 0, 1, 1, 3, 3
number = int(input())
for j in range(int(number)):
if 4 * q + r - t < m * t:
yield m
q, r, t, k, m, x = 10 * q, 10 * (r - m * 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 the string:\n %s" % big_string)
print('{:.xf}'.format(math.pi))
其中x
是你要在小数点后打印的圆周率的位数。
编辑:
如果你想按照你的方式去做,那么
big_string = ''.join(my_array[:x])
其中 x 是 个字符的数量,包括前导 3 和小数点。
完整代码如果感兴趣
虽然正确: 打印("how many digits of pi would you like")
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 * (r - m * 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))
number = int(input())+2
my_array = my_array[:1] + ['.'] + my_array[1:]
big_string = "".join(my_array[: number ])
print("here is the string:\n %s" % big_string)