python进度条百分比_Python之进度条及π的计算

本文介绍了Python中创建文本进度条的三种方法,包括简单输出、单行动态刷新和带刷新的文本进度条,并结合蒙特卡罗法展示了如何在计算π的过程中使用进度条显示计算进度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python之进度条及π的计算

文本进度条

1. 简单的开始

这是利用print()函数来实现简单的非刷新文本进度条。它的基本思想是按照任务执行百分比将整个任务划分为100个单位,每执行N%输出一次进度条。

为了模拟任务处理的时间效果,需要调用Python标准时间库time。

完整代码如下:

importtime

scale=10

print("-----执行开始-----")for i in range(scale+1):

a,b='**'*i,'..'*(scale-i)

c=(i/scale)*100

print("&{:^3.0f}[{}->{}]".format(c,a,b))

time.sleep(0.1)print("-----执行结束-----")

执行效果如下:

1622500-20190320224306477-1518663136.png

2. 单行动态刷新

此进度条相比第一类,区别在于原地输出和动态刷新。它的基本思想是将每一次进度输出都固定在同一行,并不断地用生成的字符串覆盖之前的输出,形成进度条不断刷新的动态效果。

完整代码如下:

importtimefor i in range(101):print("\r{:3}%".format(i),end="")

time.sleep(0.05)

执行效果如下:

1622500-20190320225547073-1899819196.png

3. 带刷新的文本进度条

为了更好地实现带刷新的文本进度条,我们可以将前两个程序进行合并,在为其添加开始和结束提示语。这里需要调用time.clock()函数,主要用来统计程序运行时间,以达到更好的体验效果。

完整代码如下:

importtime

scale=50

print("执行开始".center(scale//2,'-'))

t=time.clock()for i in range(scale+1):

a='*'*1b='.'*(scale-i)

c=(i/scale)*100t=time.clock()print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,-t),end='')

time.sleep(0.05)print("\n")print("\n"+"执行结束".center(scale//2,'-'))

执行效果如下:

1622500-20190320230417504-1335158517.png

以上便是文本进度条的操作。

π的计算

对π的精确求解曾经是数学历史上一直难以解决的问题之一,直到1948年,人类以人工计算方式得到π的808位精确小数。

计算π的方法有许多种,现在我介绍其中一种求π的方法——蒙特卡罗法。

蒙特卡罗方法求解π的基本步骤:随机向的单位正方形和圆结构,抛洒大量“飞镖”点,计算每个点到圆心的距离从而判断该店在圆内或圆外,用圆内的点书除以总点数就是π/4值。

实际上其思想是利用离散点值表示面积,通过面积比例来求解π值。(随机点数量越大,越充分覆盖整个图形,计算得到的π值越精确)

因为计算圆周率的程序需要时间运行,我们可以用进度条来提示程序的完成度。

完整代码如下:

from random importrandomfrom math importsqrtfrom time import *DARTS=10000000hits=0.0

for i in range(1,DARTS+1):

x,y=random(),random()

dist=sqrt(x**2+y**2)if dist <=1.0:

hits=hits+1pi=4*(hits/DARTS)for i in range(101):print("\r{:3}%".format(i),end="")

sleep(0.01)print("pi的值{}.".format(pi))print("运行时间:{:.5f}s".format(clock()))

运行结果如下:

1622500-20190321003601559-1323984383.png

这就是蒙特卡罗法求解圆周率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值