Discuss / Python / 作业,按着老师的步骤一条一条写下来还是很顺的

作业,按着老师的步骤一条一条写下来还是很顺的

Topic source

Gonathan佳

#1 Created at ... [Delete] [Delete and Lock User]

def pi(N):

     # step 1: 创建一个奇数序列: 1, 3, 5, 7, 9, ...

     ns=itertools.count(1,2)

     # step 2: 取该序列的前N项: 1, 3, 5, 7, 9, ..., 2*N-1.

     num=itertools.takewhile(lambda x:x<2*N,ns)

     # step 3: 添加正负符号并用4除: 4/1, -4/3, 4/5, -4/7, 4/9, ...

     sum=0

     for n in num:

        if n%4==1:

           n=4/n

        else:

           n=-4/n

        # step 4: 求和:

        sum=sum+n

     return  sum

Gonathan佳

#2 Created at ... [Delete] [Delete and Lock User]

在第一条的基础上改善下,更简洁~

def pi(N):

     # step 1: 创建一个奇数序列: 1, 3, 5, 7, 9, ...

     ns=itertools.count(1,2)

     # step 2: 取该序列的前N项: 1, 3, 5, 7, 9, ..., 2*N-1.

     num=list(itertools.takewhile(lambda x:x<2*N,ns))

     # step 3: 添加正负符号并用4除: 4/1, -4/3, 4/5, -4/7, 4/9, ...

     num1=[4/(-i) for i in num[1::2]]+[4/i for i in num[::2]]

     return sum(num1)


  • 1

Reply