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))
# 与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])