源码:
1 from math import fabs #导入数学模块 2 3 from time import perf_counter #导入时间模块 4 5 from numba import jit 6 7 @jit 8 9 10 def Bar(i): #动态文本条 11 12 N = pow(10,level) 13 14 a = int((i/N)*50) 15 16 b = 50 - a 17 18 Y , N = ‘*‘ * a , ‘.‘ * b 19 20 print("\r计算中:{:3.0f}% [{}->{}] {:.2f}s" 21 22 .format(2*a,Y,N,perf_counter()),end=‘‘) 23 24 while True: 25 26 27 level = eval(input(‘计算Pi精确到小数点后几位数(最后一位不精准):‘)) 28 29 print(‘\n{:=^70}‘.format(‘计算开始‘)) 30 31 a,b,pi,tmp = 1,1,0,1 32 33 i = 0 34 35 ‘‘‘ 36 37 a 分子 | b 分母 | pi 圆周率 38 39 tmp 存储a/b的值 | i 执行进度 40 41 ‘‘‘ 42 43 perf_counter() #开始计时 44 45 while (fabs(tmp) >= pow(10,-level)): #计算Pi 46 47 pi += tmp 48 49 b += 2 50 51 a = -a 52 53 tmp = a/b 54 55 i += 2 56 57 Bar(i) #调用函数,实时显示计算进度 58 59 60 61 print(‘\n{:=^70}‘.format(‘计算完成‘)) 62 63 print(‘\nPi的计算值为:{}‘.format(round(pi*4,level))) #输出计算结果 64 print() 65 print() 66 print() 67
因为太慢所有用了jit加速详情见:python可以提高程序执行速度N倍你知道吗? - _天枢 - 博客园