Перебирая последовательность вычислений и печатая количество итераций - PullRequest
0 голосов
/ 10 июня 2019

Я хочу просмотреть цикл, используя следующее уравнение:

Equation image

, где альфа - это положительное число, которое контролирует скорость роста, а К - положительное число, которое определяет емкость, то есть максимальное количество бактерий в популяции.

Скрипт должен моделировать рост бактерий час за часом и останавливаться, когда количество бактерий превышает некоторое фиксированное число N. Ваша программа должна возвращать время t, в которое население впервые превышает N.

Я немного растерялся и думаю, использовать ли для или в то время как loop.

Моя отправная точка - следующий шаблон:

def bacteriaGrowth(n0, alpha, K, N):

 return tN

Я ожидаю, что вывод будет одним целым числом, как видно из следующего примера:

Example image

Надеюсь, это имеет смысл.

1 Ответ

0 голосов
/ 10 июня 2019

Вот код, который делает то, что вы хотите, вместе с контрольным примером, приведенным на вашем втором рисунке.Результат 7, как и должно быть.Выполнение кода через отладчик показывает, что nt получает соответствующее значение в каждом цикле (с округлением до одного десятичного знака), как показано на этом втором графике.

Вы используете цикл while, когда незнать, сколько раз цикл будет выполнен.Поскольку ваш цикл обновляет значение nt и вы хотите узнать, сколько раз цикл будет выполняться, пока nt не станет больше, чем N, вы не знаете количество циклов, поэтому вы используете цикл while.

def bacteriaGrowth(n0, alpha, K, N):
    tN = 0
    nt = n0
    while nt <= N:
        nt = (1 + alpha * (1 - nt / K)) * nt
        tN += 1
    return tN

print(bacteriaGrowth(100.0, 0.4, 1000.0, 500.0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...