不用本页知识的解答
Topic sourceimport itertoolsdef pi(N): jishu=itertools.count(1)#先创造一个自然数列 ns=itertools.takewhile(lambda x : x<=2*N-1,jishu)#用itertools.takewhile来限定数列的范围 num=[]#用一个空list来存储奇数数列 for i in ns:#利用for循环来筛选出奇数并存到num中 if i %2==1: num.append(i) l=[]#创建一个空list来存储添加正负号后的数列 for j in num: if num.index(j)%2==0: l1=4/j l.append(l1) else: l2=-4/j l.append(l2) total=sum(l)#最后计算PI的值 return totalprint(pi(10))print(pi(100))print(pi(1000))print(pi(10000))assert 3.04<pi(10)<3.05assert 3.13<pi(100)<3.14assert 3.140<pi(1000)<3.141assert 3.1414<pi(10000)<3.1415print('ok')
- 1
Cao Yi
这里贴一个不用本页知识的解答:
实际上如果用 while 循环,range() 函数都不需要了,这样看起来和 C 语言写的差不多。