之前学的生成器
Topic sourceitertools
def pi(n):
odds = itertools.takewhile(lambda x: x < 2 * n, itertools.count(1, 2))
fac = itertools.cycle([1, -1])
sum = 0
for i in odds:
sum += 4 * next(fac) / i
return sum
- 1
itertools
def pi(n):
odds = itertools.takewhile(lambda x: x < 2 * n, itertools.count(1, 2))
fac = itertools.cycle([1, -1])
sum = 0
for i in odds:
sum += 4 * next(fac) / i
return sum
雲☁
import itertools
def pi(N):
odd_gen = [2 * i + 1 for i in range(999999)]
odd_list = []
for n in range(N):
if n % 2:
odd_list.append(4/-odd_gen[n])
else:
odd_list.append(4/odd_gen[n])
return sum(odd_list)
# 测试 #:
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')