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))
  • 相关阅读:
    【Python】使用hashlib进行MD5和sha1摘要计算
    【Python】torrentParser1.04 增加获得磁力链URI功能
    day30_Hibernate复习_02
    day30_Hibernate学习笔记_02
    day29_Hibernate复习_01
    day29_Hibernate学习笔记_01
    【重要】Spring在web.xml中的配置原理说明
    HTTP常见错误编号
    一级缓存和二级缓存的理解
    电商网站前台与后台系统架构
  • 原文地址:https://www.cnblogs.com/hamish26/p/12934592.html
Copyright © 2011-2022 走看看