一个Python问题,不知道要用for循环还是while语句

用Python语言,求s=4*(1-1/3+1/5-1/7+...+1/n,当s前三位数字首次为3.14时的n值。

while循环方便点,一个实现如下,供参考:

参考链接:
https://www.cnblogs.com/xiaozhengzheng/p/15811202.html



def getTwoPoint(s): # 返回保留两位小数的结果
# https://www.cnblogs.com/xiaozhengzheng/p/15811202.html
    dataStr = str(s)
    twoPoint = dataStr[0:4]
    data = float(twoPoint)
    return data
    
up=1  # 分子
n=1  # 分母
flag=1  # 符号位
single=flag*up/n # 第一项的值
s=single  # 括号内和初始赋值为第一项的值
 
data=getTwoPoint(4*s) # 计算第一项结果的两位小数
#print("n=",n,",flag=",flag,"single=",single,"s=",s,"4*s",4*s,"data=",data)

while data!=3.14:  # 如果结果不是3.14,则一直循环

    n=n+2  # 分母每次递增2
    flag=-flag  # 符号位变化
    single=flag*up/n  # 计算当前项的值
    s=s+single  # s累加当前项的值
    data=getTwoPoint(4*s) # 计算当前的结果,保留两位小数
   # print("n=",n,",flag=",flag,"single=",single,"s=",s,"4*s",4*s,"data=",data)

# 打印结果
print(n)
    


img