有进度条圆周率计算

一、用python计算圆周率pi

(1)蒙特卡罗法

 1 from random import random
 2 from time import perf_counter
 3 DARTS = 1000
 4 hits = 0.0
 5 start = perf_counter()
 6 for i in range(1, DARTS+1):
 7     x, y = random(), random()
 8     dist = pow(x**2 + y**2, 0.5)
 9     if dist <= 1.0:
10         hits = hits + 1
11 pi = 4 * (hits/DARTS)
12 print("圆周率值是: {}".format(pi))
13 print("运行时间是: {:.5f}s".format(perf_counter()-start))

 

(2)公式法

1 pi = 0
2 N = 100
3 for k in range(N):
4      pi += 1/pow(16, k) * (4 / (8 * k + 1) - 2 /(8 * k + 4) - 1/(8 * k + 5) - 1 /(8 * k + 6))
5      print("圆周率值是:{}".format(pi))

二、带进度条

(1)在spyder里运行

 1 import math
 2 import time
 3 scale=20
 4 t=time.process_time()
 5 for i in range(scale+1):
 6   a,b='**'*i,'..'*(scale-i)
 7   c=(i/scale)*100
 8 π=4*(4*math.atan(1/5)-math.atan(1/239))
 9 print("%[{:3}{}->{}]".format(a,b,c))
10 time.sleep(0.1)
11 print(π)
12 print("{:.2f}s".format(t))
13 print("执行结束")

(改变参数可改变进度条长度)

(2)在IDLE里运行

 1 import math
 2 import time
 3 scale=10
 4 print("执行开始")
 5 t=time.process_time()
 6 for i in range(scale+1):
 7     a,b='**'*i,'..'*(scale-i)
 8     c=(i/scale)*100
 9     π=4*(4*math.atan(1/5)-math.atan(1/239))
10     print("%{:3}[{}->{}]".format(a,b,c))
11     time.sleep(0.1)
12 print(π)
13 print("{:.2f}s".format(t))
14 print("执行结束")

posted @ 2020-03-30 18:53  WendyWW  阅读(270)  评论(0)    收藏  举报