2016-09-24 3 views
1

Ich mag würde wissen, wie dieser Code anzupassen mir X Ziffern von Pi zu geben, wenn gefragt, weil gerade jetzt druckt es nur eine zufällige MengeErzeugungs pi in Python

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) 

Antwort

1
print('{:.xf}'.format(math.pi)) 

Wo x das ist Anzahl der Ziffern von Pi, die nach dem Komma gedruckt werden sollen.

EDIT:

wenn Sie es Sie tun Weg dann

big_string = ''.join(my_array[:x]) 

Wo x die Anzahl der Zeichen ist einschließlich 3 und Komma führt.

+0

nette Antwort, es getestet: https://repl.it/Dgjd –

+0

@Thomas: Wenn du denkst, dass dies eine nette Antwort ist, solltest du sie abstimmen. –

+0

@Thomas Das Problem mit diesem Teil der Antwort ist, dass es zunächst die Frage nicht beantwortete ... – Li357

0

vollständigen Code, wenn interessiert

während True: print ("wie viele Stellen von P würden Sie gerne")

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)