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之进度条及π的计算的更多相关文章

  1. 自主学习python文本进度条及π的计算

    经过自己一段时间的学习,已经略有收获了!在整个过程的进行中,在我逐渐通过看书,看案例,做题积累了一些编程python的经验以后,我发现我渐渐爱上了python,爱上了编程! 接下来,当然是又一些有趣的 ...

  2. Python字符进度条

    Python字符进度条 看看这个神奇的module from tqdm import trange from time import sleep for r in trange(10, 1, -1): ...

  3. Python实现进度条功能

    Python实现进度条功能 import sys, time def progress(percent, width=50): # 设置进度条的宽度 if percent >= 100: # 当 ...

  4. Python实现进度条和时间预估的示例代码

    一.前言 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...

  5. 用python进行有进度条的圆周率计算

    一.安装tqdm函数库 tqdm是一个强大的终端进度条工具,我利用pip获取tqdm函数库. 1.打开运行,输入“cmd” 2.2:输入pip install   你要安装的库(如 pip insta ...

  6. python实现进度条--主要用在上传下载文件

    在python中进行socket上传文件的时候使用进度条,然后在网上找了好久,找寻相关的进度的条的使用,看了几个,发现总是无法进行调用,主要原因是在进行上传文件的时候,每次传送的数据量是固定的,数据的 ...

  7. 六种酷炫Python运行进度条

    本文介绍了目前6种比较常用的进度条,让大家都能直观地看到脚本运行最新的进展情况 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做 ...

  8. python print 进度条的例子

    def progress(width, percent): print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / ...

  9. python实现进度条

    先说一下文本系统的控制符: \r: 将光标移动到当前行的首位而不换行: \n: 将光标移动到下一行,并不移动到首位: \r\n: 将光标移动到下一行首位. 环境: root@ubuntu16:/ale ...

随机推荐

  1. swiper使用中一些点的总结

    最近做了PC端改版,要求移动端有更好的体验,一些产品滚屏的展示,就用了swiper插件,以方便用户在移动端访问可以滑动翻屏展示. 本次项目中使用的是swiper2.0版本. 首先要引入swiper的j ...

  2. oralce定时任务

    oracle定时任务(dbms_job) author:skate time:2007-09-12 http://publish.it168.com/2006/0311/20060311017002. ...

  3. 泛型--增强for循环--数组和集合转换

    1:List的子类(掌握) (1)List的子类特点 ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector: 底层数据结构是数组,查询快,增删慢 线程安全,效率低 ...

  4. Js函数基本介绍

    1. 函数的创建 在JavaScript里面创建函数的关键字为function 函数名:就是在我们调用函数的时候需要书写的标识符 形参:全称为形式参数,调用函数的时候,这个函数所需要的参数是什么 实参 ...

  5. 杭电ACM1007

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  6. Python常用数据类型

    一 .列表 name = ['zhangshan', 'lishi', 'wangwu']# 列表赋值 name.append('liujun')# 增,默认增加到最后位置 name.insert(1 ...

  7. 剑指offer用位运算实现两个数相加,及python相关的位操作

    题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 代码: # -*- coding:utf-8 -*-class Solution:    def Add(self ...

  8. vue将网页中的特定部分转成pdf并下载(仅供个人学习记录)

    先安装支持 将页面html转换成图片npm install --save html2canvas 将图片生成pdfnpm install jspdf --save 组件引用: import html2 ...

  9. ie9上传后下载json

    1.保持后台控制器返回的数据为字符串格式 2.js:dataType类型保持为html格式 dataType: 'html',//默认就是html类型,不写对火狐有影响 3.将上传后后台返回的字符串转 ...

  10. 利用Django实现webUI展示

    1.说明 最近老大想要做一个webUI界面,为了展示我们数据中心工作内容,需要把各自的工作内容用webUI展示出来.目前我负责的做公司名称归一化的问题. 2.Django实现web 具体实现是完全按照 ...