需要Python专家解答

img


我编的代码

def m(n):

    sum=0
    for i in range(1,2*n,1):
        sum=sum+((-1)**(i+1))*1/(2*i-1)
    return sum
def main():
    i=int(input())
    print("%.4f"%(4*m(i)))

main()

为什么数据有偏差

img

因为range创建的是左闭右开的数组,所以你需要用 range(1,n+1)才可以创建足够多的项

def m(n):
    sum=0
    for i in range(1,n+1):
        sum += ( (-1)**(i+1) )  / (2*i-1)
    return sum
def main():
    i=int(input())
    print("%.4f"%(4*m(i)))
 
main()

题目告诉你项数是n
你应该写range(1,n+1)啊
2*n是哪冒出来的
另,根据题意,函数m是计算π的,你应该return 4*sum,而不是把4放到函数外面乘


def m(n):
    sum=0
    for i in range(1,n + 1):
        sum=sum+((-1)**(i+1))*1/(2*i-1)
    return sum

def main():
    i=int(input())
    print("%.4f"%(4*m(i)))

main()

--result
901
3.1427