Я недавно начала изучать Python. На одном из онлайн-курсов мне попалась следующая задача(см.картинку)
Собственно само разложение дроби достаточно подробно и понятно описано в Википедии (
https://ru.wikipedia.org/wiki/Непрерывная_дробь)
Я написала следующую программу:
n=input().split('/')
a=int(n[0])//int(n[1])
b=(int(n[0])/int(n[1]))-a
s=[]
k=0
while b!=0:
s.append(a)
a=1//b
k=1/b-int(a)
b=k
print(*s)
При попытке проверить пример из задания, искомые коэффициенты (7,1,29) выводятся правильно, однако цикл становится бесконечным и почему-то не останавливается, несмотря на то, что в определенный момент b становится равным нулю. Я, если честно, сломала всю голову в попытке понять, почему так происходит.. может, кто-нибудь мне сможет объяснить, что я упускаю?
Еще я написала программу с использованием функции divmod, однако в ней, аналогично, несмотря на равенство b нулю, цикл продолжается( и в списке коэффициентов вместо 29 получается 30..
В общем, буду очень благодарна, если кто-то поможет советом начинающему)