我在使用 python 在圆周率的小数位中寻找手机尾号四位时,发现得到一百位小数部分以后的程序出现了问题
sj=list(input("请输入手机号后四位:"))
B=100
y=0
x=0
while x==0:
n = int(B) #输入字符转换为整数
t = n+10 #多计算10位,防止尾数取舍的影响
b = 10**t #为算到小数点后t位,两边乘以10^t
x1 = b*4//5 #取整求含4/5的首项
x2 = b // -239 #取整求含1/239的首项
s = x1+x2 #求第一大项
n *= 2 #设置下面循环的终点,即共计算n项
for i in range(3, n, 2): #循环初值=3,末值n,步长=2
x1 //= -25 #取整求每个含1/5的项及符号
x2 //= -57121 #取整求每个含1/239的项及符号
x = (x1+x2) // i #求两项之和,除以对应因子,取整
s += x #求总和
pai = s*4 #求出π
pai //= 10**10 #舍掉后十位
pai_decimal=int(pai%(10**100))#π的最远100位小数部分
print(pai_decimal)
pi_leave=[]
t=0
while t==0:
for v in range(0,len(pi_leave)):
pi=[list(str(pai_decimal))].insert(v,pi_leave[v])
pi1=pi[:-3]
u=0
while u==0:
for i,m in enumerate(pi1):
if m==sj[0]:
if pi[i+1]==sj[1]:
if pi[i+2]==sj[2]:
if pi[i+3]==sj[3]:
y=1
u=1
t=1
print(i+1)
else:
pi_leave=pi[-3:]
if y==1:
x=1
print(i+1)
else:
x=0
B=B+100
即使是输入1415,即小数位第一组四位数字,程序也会运行十几分钟仍无结果,还不报错。如图所示。