Discuss / Python / 看了别人的代码顿时佩服自己化简为繁的本领啊

看了别人的代码顿时佩服自己化简为繁的本领啊

Topic source

import itertools

def pi(N): natuals = itertools.count(1) ns = itertools.takewhile(lambda x: x<=2*N, natuals) num=[] for x in ns: if x % 2 !=0: num.append(x)

num1 = num[::2]
num2 = num[1::2]
num1 = list(map(lambda x: 4/x, num1))
num2 = list(map(lambda x: -4/x, num2))

num1 = sum(num1)
num2 = sum(num2)

return num1 + num2

print(pi(10)) print(pi(100)) print(pi(1000)) print(pi(10000)) assert 3.04 < pi(10) < 3.05 assert 3.13 < pi(100) < 3.14 assert 3.140 < pi(1000) < 3.141 assert 3.1414 < pi(10000) < 3.1415 print('ok')


  • 1

Reply