python求pi的方法


Posted in Python onOctober 08, 2014

本文实例讲述了python求pi的方法,是一篇翻译自国外网站的文章,分享给大家供大家参考。

具体实现方法如下:

#_*_ coding=utf-8 *_*
## {{{ http://code.activestate.com/recipes/578130/ (r5)
def pi(places=10):
  """Computes pi to given number of decimal places
    参数places表示要返回的pi的小数点后位数  
    方法:先整体扩大10**8(10的八次方)倍,然后计算完成后再缩小10的八次方倍
  """
  
  # 3 + 3*(1/24) + 3*(1/24)*(9/80) + 3*(1/24)*(9/80)*(25/168)
  # The numerators 1, 9, 25, ... are given by (2x + 1) ^ 2
  # The denominators 24, 80, 168 are given by (16x^2 -24x + 8)
  extra = 8
  one = 10 ** (places+extra)
  t, c, n, na, d, da = 3*one, 3*one, 1, 0, 0, 24
  #这里的n 和d 分别为每一项的分子与分母 ,na 和 da 分别为分子和分分母后一项比前一项增加的数值
  #这里的//可不是C++中的注释,而是除的意思
  while t > 1: 
    n, na, d, da = n+na, na+8, d+da, da+32
    t = t * n // d
    c += t
  return c // (10 ** extra)

def picirc(radius, aspect_ratio=5):
  """Display the digit of pi in a circle of given radius
    radius:显示的半径
    aspect_ratio:调节显示的比率参数
  """
  #display_width为各行的显示长度
  display_width = int(radius * aspect_ratio + 10)
  pi_str = repr(pi(int(2 * radius ** 2 * aspect_ratio)))
  pos = 0
  #cols为每一行中要显示的数字个数
  for i in range(2 * radius):
    cols = int(0.5 + aspect_ratio * (radius**2 - (radius-(i+0.5))**2) ** 0.5)
    print(pi_str[pos:pos+cols].center(display_width)) #将产生的pi数值生成的文本列表中相应的位数取出来显示在当前行
    pos += cols

if __name__ == '__main__':
  
  picirc(16)
## end of http://code.activestate.com/recipes/578130/ }}}

显示的结果为:

31415926535897932384                  
              6264338327950288419716939937510582              
            0974944592307816406286208998628034825342117            
          06798214808651328230664709384460955058223172535940          
         81284811174502841027019385211055596446229489549303819644         
        288109756659334461284756482337867831652712019091456485669234        
       6034861045432664821339360726024914127372458700660631558817488152       
      09209628292540917153643678925903600113305305488204665213841469519415      
     11609433057270365759591953092186117381932611793105118548074462379962749     
    5673518857527248912279381830119491298336733624406566430860213949463952247     
    371907021798609437027705392171762931767523846748184676694051320005681271452    
   63560827785771342757789609173637178721468440901224953430146549585371050792279    
   689258923542019956112129021960864034418159813629774771309960518707211349999998   
   3729780499510597317328160963185950244594553469083026425223082533446850352619311   
   88171010003137838752886587533208381420617177669147303598253490428755468731159562   
   86388235378759375195778185778053217122680661300192787661119590921642019893809525   
   72010654858632788659361533818279682303019520353018529689957736225994138912497217   
   75283479131515574857242454150695950829533116861727855889075098381754637464939319   
   2550604009277016711390098488240128583616035637076601047101819429555961989467678   
   374494482553797747268471040475346462080466842590694912933136770289891521047521   
   62056966024058038150193511253382430035587640247496473263914199272604269922796    
    782354781636009341721641219924586315030286182974555706749838505494588586926    
    9956909272107975093029553211653449872027559602364806654991198818347977535     
     66369807426542527862551818417574672890977772793800081647060016145249192     
      17321721477235014144197356854816136115735255213347574184946843852332      
       3907394143334547762416862518983569485562099219222184272550254256       
        887671790494601653466804988627232791786085784383827967976681        
         45410095388378636095068006422512520511739298489608412848         
          86269456042419652850222106611863067442786220391949          
            4504712371378696095636437191728746776465757            
              3962413890865832645995813390478027              
                  59009946576407895126

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
python使用cookie库操保存cookie详解
Mar 03 Python
Python学习笔记之常用函数及说明
May 23 Python
Python库urllib与urllib2主要区别分析
Jul 13 Python
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
python文件与目录操作实例详解
Feb 22 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 Python
Python之Sklearn使用入门教程
Feb 19 Python
Python访问Redis的详细操作
Jun 26 Python
python实现简单的TCP代理服务器
Oct 08 #Python
python操作CouchDB的方法
Oct 08 #Python
python基于queue和threading实现多线程下载实例
Oct 08 #Python
python实现封装得到virustotal扫描结果
Oct 05 #Python
python解析xml文件操作实例
Oct 05 #Python
python写xml文件的操作实例
Oct 05 #Python
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 #Python
You might like
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
Python学生信息管理系统修改版
2018/03/13 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
用python批量下载apk
2020/12/29 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
二手房买卖协议书
2014/04/10 职场文书
保密工作目标责任书
2014/07/28 职场文书
关于五一放假的通知
2015/08/18 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
php解析非标准json、非规范json的方式实例
2022/05/10 PHP