算π加进度条

一、算π的思路

首先构造一个单位正方形和一个四分之一圆,然后随机想其中抛洒大量的点,每个点可能在圆内也可能在圆外,当点数足够多时圆内点将构成圆的面积,全部点将构成矩形面积,用圆内点数量除以全部点数量,就得到了π/4。

二、程序实现

输入:抛点的数量。

处理:对于每个点,计算点到圆心的距离,通过距离判断点在圆内还是圆外,然后统计圆内点的数量。

输出:π的值。

 

三、

当测试次数足够大时程序运行的就特别慢,就需要加入进度条

(1)文本进度条

源代码如下:

import time
import sys
for i in range(31):
sys.stdout.write('\r')
sys.stdout.write("%s%%|%s"%(int(i/30*100),int(i/30*100)*'#'))
sys.stdout.flush()
time.sleep(0.3)

运行后如下:

将此代码插入算π中代码如下:

from random import random
from math import sqrt
from time import clock
import time
import sys
darts=int(input())
hits=0
clock()
for i in range(1,darts):
    x,y=random(),random()
    dist=sqrt(x**2+y**2)
    if dist<=1.0:
        hits=hits+1
    pi=4*(hits/darts)
for i in range(darts+1):
    sys.stdout.write('\r')
    sys.stdout.write("%s%%|%s"%(int(i/darts*100),'#'))
    sys.stdout.flush()
    time.sleep(0.3)
print("\n")
print("pi的值是%s"%pi)
print("程序运行的时间%-5.5ss"%clock())

效果如下:

 

posted @ 2019-03-20 22:51  屁屁蛇  阅读(262)  评论(0)    收藏  举报