带有进度条的圆周率计算

我们在使用Python运行程序时,遇到较大数据时,运行时间总是会比较长,而又没有什么提示,我们就无法得知此时的程序是否在运行,运行到哪一步了,所以今天,我们尝试将进度条加到计算的程序中,下面以计算圆周率为例。

 

一、准备

这次的进度条我们将用到tqdm,这是一个比较强大的库函数

首先我们应该安装tqdm

第一步,按下Win+R打开命令输入框,并输入cmd,点击确定

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第二步,找到IDLE文件(即平时打代码的程序),右击,点击属性,得到如下界面,再点击打开文件所在的位置

 

 

打开Scripts文件,可以看到pip文件

 

 

将pip文件直接拖至刚才输入cmd打开的界面

在pip.exe后方输入install tqdm(注意以空格为间隔),然后点击回车,这样我们就安装好了tqdm库函数

这时我们可以测试一下tqdm函数绘制出的进度条效果如何,代码如下

1 from tqdm import*
2 import time
3 for i in tqdm(range(10)):
4    time.sleep(0.1)

效果如图

 

二、编写计算圆周率的函数

计算圆周率的方法有很多种,下面我以打靶法为例,代码如下

 1 import time
 2 from random import random
 3 from math import sqrt
 4 
 5 DARTS=1000000
 6 hits=0.0
 7 time.clock()
 8 for i in range(1,DARTS):
 9     x,y=random(),random()
10     dist=sqrt(x**2+y**2)
11     if dist<=1.0:
12         hits=hits+1
13 pi=4*(hits/DARTS)
14 print("Pi值是{}.".format(pi))
15 print("运行时间是:{:.5f}s".format(time.clock()))

三、汇总

将计算圆周率的代码与进度条的代码结合在一起,代码如下

 1 from tqdm import tqdm
 2 import time
 3 from random import random
 4 from math import sqrt
 5 
 6 DARTS=1000000
 7 hits=0.0
 8 time.clock()
 9 for i in range(1,DARTS):
10     x,y=random(),random()
11     dist=sqrt(x**2+y**2)
12     if dist<=1.0:
13         hits=hits+1
14 for i in tqdm(range(1,DARTS//100000+1)):
15     time.sleep(0.05)
16 pi=4*(hits/DARTS)
17 print("Pi值是{}.".format(pi))
18 print("运行时间是:{:.5f}s".format(time.clock()))

最终效果如下

这样我们就完成了带有进度条的圆周率计算方法

posted @ 2019-03-21 09:34  Regan_White_Lin  阅读(662)  评论(0编辑  收藏  举报