设s=1+1/2+1/3+…+1/n,求与8最接近的s的值及与之对应的n值

from math import *
s=0
n=1
while s<8:
s+=1/n
n+=1
if fabs(s-1/n-8)<fabs(s-8):
print('s={},n={}'.format(s-1/n,n-2))
elif (s-1/n-8)>fabs(s-8):
print('s={},n={}'.format(s,n-1))
else:
print('s={},n={} or s={},n={}'.format(s-1/n,n-2,s,n-1))

img


格式复制过来有问题
是下面的那组数据吗?我这个编程有错吗?

img

# 与8最接近的s的值及n的值

s = 0
list = []
for i in range(1, 10000):
    s = s + 1 / i
    list.append([i, s])
    if (s >= 8):
        break
print(list[-2:])
# 获取俩个值与8的差值
s_list = [8 - list[-2][1], list[-1][1] - 8]
# 获取差值最小值的下标
index = s_list.index(min(s_list))
print('s=', list[-2 + index][1], 'n=', list[-2 + index][0])