#
def check_d_value(d):
# здесь вам неплохо бы обработать граничные значения D
return True
def gen_sequence():
a1 = 1
a2 = 2
yield abs(a2 - a1), a2, a1
while True:
a = (a1 + a2) / 2
a1 = a2
a2 = a
yield abs(a2 - a1), a2, a1
d = float(input('D?: '))
if check_d_value(d):
a_difference_sequence = gen_sequence()
for i, a_tuple in enumerate(a_difference_sequence, start=2):
a_diff, a_i, a_i_prev = a_tuple
if a_diff < d:
print(i, a_i, a_i_prev)
break
Ну как-то так, например.
Только сами сделайте проверку граничных значений для D