###大家是否还记得读书时用谐音记忆法背过的圆周率π,“山巅一寺一壶酒(3.14159),尔乐苦煞吾(26535),把酒吃(897),酒杀尔(932),杀不死(384),乐尔乐(626)”。圆周率π是精确计算圆周长、圆面积、球体积等几何形状的关键值。溯古追今,圆周率有着很长的计算历史。德国数学家莱布尼茨(Leibniz)于 1674 年曾提出 Gregory-Leibniz 公式来计算π:
∏/4=1-1/3+1/5-1/7+1/9+…
其中,每一项的分母都为奇数,项数累积的越多,π的计算结果会收敛的更加准确。
pi = 4*(1-1/3+1/5-1/7+1/9)
当我们算到 1/9 时,π值约为 3.339682… ;
pi = 4*(1-1/3+1/5-1/7+1/9-1/11+1/13-1/15+1/17-1/19+ 1/21-1/23+1/25-1/27+1/29-1/31+1/33-1/35+1/37-1/39+ 1/41-1/43+1/45-1/47+1/49-1/51+1/53-1/55+1/57-1/59)
当我们算到 1/59 时,π值约为 3.108268… 。
Python 循环嵌套
Python 语言允许在一个循环体里面嵌入另一个循环,针对for循环和while循环的语法如下所示:
for循环嵌套语法:
for i in s1:
for j in s2:
# do something
# do something else
上述代码示例是for循环嵌套for循环。首先执行外层循环,然后执行内层循环。
整个代码执行过程中,外层循环每执行一次,嵌套的内层循环全部执行一遍。假设外层循环需要执行 x 次,内层循环需要执行 y 次,则整个代码需要执行 x*y 次。
while循环嵌套语法:
while expression1:
while expression2:
# do something
# do something else
while嵌套循环同for嵌套循环类似,首先执行外层循环,然后执行内层循环。整个代码执行过程中,外层循环每执行一次,嵌套的内层循环全部执行一遍。假设外层循环需要执行 x 次,内层循环需要执行 y 次,则整个代码需要执行 x*y 次。
此外,还可以在循环体内嵌入其他的循环体,比如在while循环中可以嵌入for循环,反之也可以在for循环中嵌入while循环。
###编程要求
观察莱布尼茨公式,我们想要更加准确的计算出π值,则需要累积更多的项数,计算公式会越来越长。为了避免重复的计算操作,请你仔细观察该公式是否存在计算规律,并设计出循环结构来简化冗长的代码。
本关卡给出了一个列表N_list,其中存储的是计算π最后一项的分母值(比如算到1/59时,存储的值为59)。
请编写程序,返回算到N_list中每一项时的π值,π值需保留八位小数(字符串形式),并用列表存储,最终输出列表结果。
##我的答案
N_list = [int(i) for i in input().split(',')]
list2=[]
s=0
# 请在此添加实现代码 #
# ********** Begin *********#
for i in N_list:
for j in range(1,i+1,2):
s=(-1)**(j+1)/j+s
list2.append(4*s)
print(["{:.8f}".format(x) for x in list2])
错在哪里呢?