zoukankan      html  css  js  c++  java
  • python基础02_使用itertools模块进行求圆周率

    # 计算圆周率可以根据公式:
    # 利用Python提供的itertools模块,我们来计算这个序列的前N项和:
    import itertools
    
    
    def pi(N):
        '计算pi的值'
        #     step1 创建一个奇数序列:
        s1 = itertools.count(start=1, step=2)
        #     step2 取该序列的前N项:
        s2 = list(itertools.takewhile(lambda x: x < 2 * N - 1, s1))
        # print(list(s2))
        #    step3 添加正负符号并用4除:4/1.-4/3.4/5,-4/7,4/9
        l = len(s2)
        s3 = (4 * pow(-1, x) for x in list(range(l)))
        # print(s3)
        result = 0
        count=0
        #  s3 = [4 * pow(-1, x) for x in list(range(l))]
        # for i in range(l):
        #     result += s3[i] / s2[i]
        for i in s3:
            # print(i)
            result += i/s2[count]
            count += 1
        return result
    
    
    print(pi(1000))

    其实可以优化的,是将列出列表,然后使用内置函数sum()进行求和,这样速度会快点。

    # 计算圆周率可以根据公式:
    # 利用Python提供的itertools模块,我们来计算这个序列的前N项和:
    import itertools


    def pi(N):
    '计算pi的值'
    # step1 创建一个奇数序列:
    s1 = itertools.count(start=1, step=2)
    # step2 取该序列的前N项:
    s2 = list(itertools.takewhile(lambda x: x < 2 * N - 1, s1))
    # print(list(s2))
    # step3 添加正负符号并用4除:4/1.-4/3.4/5-4/74/9
    l = len(s2)
    s3 = (4 * pow(-1, x) for x in list(range(l)))
    # print(s3)
    result = 0
    count=0
    # s3 = [4 * pow(-1, x) for x in list(range(l))]
    # for i in range(l):
    # result += s3[i] / s2[i]
    for i in s3:
    # print(i)
    result += i/s2[count]
    count += 1
    return result


    print(pi(1000))
  • 相关阅读:
    Mybatis入门
    java开发七大原则
    常用的一些实用类
    sql语句大全
    jsp中9个隐含对象
    解决POST和GET方式的中文乱码问题
    Servlet跳转页面的重定向和转发
    通用增删改查的方式
    IDEA 部署spring Cloud
    Oracle基础语法
  • 原文地址:https://www.cnblogs.com/hamish26/p/12934592.html
Copyright © 2011-2022 走看看