你的循环条件有问题,其次,你的累加计算公式有问题,把4提出来,剩余的部分就是1-1/3+1/5-1/7。。。 分子是1,分母为奇数,再次,e表示的是精度,意识就是最后一项的大小不超过e,因此e越小,精度越高,修改代码如下:
e = float(input('输入自然数e:'))
# 请根据 e 计算 pi 的近似值
pi=0
i=1
f=1
t=1
while True:
v = f*t/(2*i-1) #当前项的值= -1或1 乘以 1/(2*i-1)
pi += v
f = -f #更换符号 由1变-1 或-1变1
if abs(v) < e: #如果当前项的绝对值小于e则跳出循环 计算结束
break
i = i + 1
print("{:.5f}".format(4*pi))
运行结果:
while f/t>e:
不是小于e,否则死循环
到最后一项的绝对值小于e为止,
那就是如果绝对值大于等于e执行while循环语句,
while abs(f/t ) >= e: