Решение задачи с циклом while

Рейтинг: -1Ответов: 1Опубликовано: 22.01.2023

Нужно чтобы код считал пока m не будет равно 95, подскажите мою ошибку пожалуйста

m=0
i=0
k=0
n=0
while (m!=95):
    i=+0.01
    k=i+i/2
    n=k+k/2
    m=n+n/2
    print (m, i)

Задача была такая Задуманное число при сложении этого же числа с его половиной, сложении полученного числа с его треть и сложении нового полученного числа с его четвертью дают 95

Помогите пожалуйста исправить ошибку в цикле

Ответы

▲ 1Принят

Ваша главная ошибка заключается в том, что при выполнении численных расчётов, ни в коем случае нельзя сравнивать на равенство числа с плавающей точкой. Только целые. Число с плавающей точкой - всегда приближённое значение. Точного равенства Вы не получите никогда и цикл надо переписать так:

i = 0
m = 0
while abs(m-95) > 0.0001:
    i = i+0.01
    k = i+i/2
    n = k+k/3
    m = n+n/4
    
print (m, i)

Тогда, после запуска программы, получим:

 95.00000000000253 38.00000000000101

С учётом ошибок округления, ответ 38:

38 + 19 = 57 57 + 19 = 76 76 + 19 = 95