Почему этот цикл while выполняется, но выдает неправильный ответ? - PullRequest
0 голосов
/ 14 февраля 2019

Кобальт-60, радиоактивная форма кобальта, используемая в терапии рака, распадается в течение определенного периода времени.Каждый год 12% от суммы, представленной в начале года, будут приходить в упадок.Если контейнер с кобальтом-60 изначально содержит 10 граммов, определите количество, оставшееся после пяти лет.

Я использовал следующий код:

year = 0
cobalt_life = 10
while cobalt_life == 10:
      cobalt_life -= 0.12*cobalt_life
      year +=5
print(cobalt_life)

Выход составляет 8,8когда я запускаю это.Это должно быть 5.28.Чего мне не хватает?

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

На втором проходе цикла while значение cobalt_life больше не равно 10 (поскольку при первом проходе оно изменило его). Вы хотите сделать условие вашего цикла годом, и только увеличивать его на 1 в каждом цикле.

0 голосов
/ 14 февраля 2019

Сразу после вашей первой итерации cobalt_life больше не равен 10.При условии False цикл завершается.Если вы хотите цикл, вы должны увеличивать year, пока он не достигнет 5.

Хотя, обратите внимание, что вычисление, которое вы пытаетесь выполнить, вообще не требует цикла, но вместо этого должно быть достигнутоиспользуя возведение в степень.

n_years = 5
cobalt_life = 10 * 0.88 ** 5 #  5.277319168
0 голосов
/ 14 февраля 2019

Вместо этого используйте петлю for:

n_years = 5
cobalt_life = 10
for _ in range(n_years):
    cobalt_life *= 0.88
print(cobalt_life)
# 5.277319168

Отредактировано

Если вы хотите использовать петлю while:

n_years = 5
cobalt_life = 10
while n_years:
    cobalt_life *= 0.88
    n_years -= 1
print(cobalt_life)
# 5.277319168
...