Python之进度条及π的计算
Python之进度条及π的计算
文本进度条
1. 简单的开始
这是利用print()函数来实现简单的非刷新文本进度条。它的基本思想是按照任务执行百分比将整个任务划分为100个单位,每执行N%输出一次进度条。
为了模拟任务处理的时间效果,需要调用Python标准时间库time。
完整代码如下:
import time
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("-----执行结束-----")
执行效果如下:

2. 单行动态刷新
此进度条相比第一类,区别在于原地输出和动态刷新。它的基本思想是将每一次进度输出都固定在同一行,并不断地用生成的字符串覆盖之前的输出,形成进度条不断刷新的动态效果。
完整代码如下:
import time
for i in range(101):
print("\r{:3}%".format(i),end="")
time.sleep(0.05)
执行效果如下:

3. 带刷新的文本进度条
为了更好地实现带刷新的文本进度条,我们可以将前两个程序进行合并,在为其添加开始和结束提示语。这里需要调用time.clock()函数,主要用来统计程序运行时间,以达到更好的体验效果。
完整代码如下:
import time
scale=50
print("执行开始".center(scale//2,'-'))
t=time.clock()
for i in range(scale+1):
a='*'*1
b='.'*(scale-i)
c=(i/scale)*100
t=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,'-'))
执行效果如下:

以上便是文本进度条的操作。
π的计算
对π的精确求解曾经是数学历史上一直难以解决的问题之一,直到1948年,人类以人工计算方式得到π的808位精确小数。
计算π的方法有许多种,现在我介绍其中一种求π的方法——蒙特卡罗法。
蒙特卡罗方法求解π的基本步骤:随机向的单位正方形和圆结构,抛洒大量“飞镖”点,计算每个点到圆心的距离从而判断该店在圆内或圆外,用圆内的点书除以总点数就是π/4值。
实际上其思想是利用离散点值表示面积,通过面积比例来求解π值。(随机点数量越大,越充分覆盖整个图形,计算得到的π值越精确)
因为计算圆周率的程序需要时间运行,我们可以用进度条来提示程序的完成度。
完整代码如下:
from random import random
from math import sqrt
from time import *
DARTS=10000000
hits=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+1
pi=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()))
运行结果如下:

这就是蒙特卡罗法求解圆周率。
Python之进度条及π的计算的更多相关文章
- 自主学习python文本进度条及π的计算
经过自己一段时间的学习,已经略有收获了!在整个过程的进行中,在我逐渐通过看书,看案例,做题积累了一些编程python的经验以后,我发现我渐渐爱上了python,爱上了编程! 接下来,当然是又一些有趣的 ...
- Python字符进度条
Python字符进度条 看看这个神奇的module from tqdm import trange from time import sleep for r in trange(10, 1, -1): ...
- Python实现进度条功能
Python实现进度条功能 import sys, time def progress(percent, width=50): # 设置进度条的宽度 if percent >= 100: # 当 ...
- Python实现进度条和时间预估的示例代码
一.前言 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...
- 用python进行有进度条的圆周率计算
一.安装tqdm函数库 tqdm是一个强大的终端进度条工具,我利用pip获取tqdm函数库. 1.打开运行,输入“cmd” 2.2:输入pip install 你要安装的库(如 pip insta ...
- python实现进度条--主要用在上传下载文件
在python中进行socket上传文件的时候使用进度条,然后在网上找了好久,找寻相关的进度的条的使用,看了几个,发现总是无法进行调用,主要原因是在进行上传文件的时候,每次传送的数据量是固定的,数据的 ...
- 六种酷炫Python运行进度条
本文介绍了目前6种比较常用的进度条,让大家都能直观地看到脚本运行最新的进展情况 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做 ...
- python print 进度条的例子
def progress(width, percent): print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / ...
- python实现进度条
先说一下文本系统的控制符: \r: 将光标移动到当前行的首位而不换行: \n: 将光标移动到下一行,并不移动到首位: \r\n: 将光标移动到下一行首位. 环境: root@ubuntu16:/ale ...
随机推荐
- [转] How Bill Gates read books
Bill Gates is one of the most famous figures in the business world. He is one of the richest men in ...
- openssl 检测链路完整
D:\openssl\bin>openssl s_client -connect www.xxxx.com:443
- 剖析一个用C++写的行情交易系统
最近hen ci hen ci用C++写完了一整套证券行情系统,但是不是服务沪深交易所的,是给文交所用的.整个系统涵盖了从DBF文件解析开始到客户端展现这一整条逻辑.想来一年多没有更新博客了,所以趁这 ...
- Java容器解析系列(8) Comparable Comparator
Comparable和Comparator接口是两个用于对对象进行大小比较的接口,在java集合相关类中,也被经常地使用到. 关于其使用,可以参考网络上的其他博客(没什么好说的);这里阐述关于这两个接 ...
- jQuery 命名空间的使用
jQuery 命名空间的使用: 1.利用 trigger 触发子元素带命名空间的事件,那么父元素带相同命名空间的事件也会被触发,而父元素没有命名空间的事件不会被触发. 2.利用 trigger 触发子 ...
- java知识点总结--java开发环境搭建
安装 JDK(Java Development Kit) 和开发工具 如:eclipse,myeclipse,idea等 配置系统环境变量 查看系统环境变量 1.通过 我的电脑--->“属性”- ...
- sdl2在vs2012上的配置
网上关于sdl2的配置教程很多,我尽量将我遇到的问题分享给大家. 首先,打开VS2012: 2.点击新建项目:选择空项目,确定即可 (文件名,保存位置,解决方案名称,可以随便填,(我取名为sdlpla ...
- electron-vue初始桌面应用
1.安装vue-cli脚手架 npm install -g vue-cli 2.创建项目:vue init simulatedgreg/electron-vue my-project 3.安装依赖 : ...
- spring cloud配置高可用eureka时遇到的一些坑
考虑到注册中心的高可用,今天搭建一下eureka集群,并在中途遇到一些小的坑,前前后后花了两个小时来排除,在这里记录一下,以供后面查看. 首先,贴上要达到的效果: 一.起两个eureka模拟集群,在D ...
- 使用RevoUninstaller Pro卸载
使用RevoUninstaller Pro卸载opera浏览器,操作过的注册表 HKEY_CURRENT_USER\SOFTWARE\CLASSES\Local Settings\Mircrosoft ...