Население удвоилось за # лет

#python-2.7

#python-2.7

Вопрос:

Я понятия не имею, что там не так:

 current_pop = 7370000000
print "So the current population is", str(current_pop)
doubled_pop = 14740000000
year_1 = 2
year = 0
while current_pop != doubled_pop:
    if current_pop != doubled_pop:
        current_pop = current_pop * 2
        year  = 1
    else:
        year  = 0
print year
  

Я уже пытался оценить время, которое всплывает к году_1. Но это продолжает давать мне year = 1

Комментарии:

1. Пожалуйста, вставьте свой код и не предоставляйте изображение

2. Это продолжает давать вам результат 1 потому что для удвоения населения требуется ровно один год, когда население удваивается каждый год, как утверждает ваш код!

Ответ №1:

Проблема в вашей программе в том, что вы предполагаете, что население удваивается каждый год! Поэтому, конечно, при таких условиях население удвоится ровно за один год. К счастью, наша ситуация не так ужасна. Согласно данным, предоставленным Всемирным банком, годовой темп прироста населения мира в 2015 году составил 1.182%.

Ваш цикл был излишне сложным, но, что более важно, ваш тест был неправильным. У вас (и предыдущего ответа) было:

 while current_pop != doubled_pop:
  

Но этот тест обычно завершается неудачей, поскольку маловероятно, что население будет расти со скоростью, которая удобно достигает удвоения начальной численности населения при точном делении на год. Вам нужно использовать неравенство:

 while current_pop < doubled_pop:
  

Вот программа, которая работает:

 current_pop = 7370000000
growth_rate = 0.01182
print "So the current population is", str(current_pop)
doubled_pop = 2 * current_pop
year = 0
while current_pop < doubled_pop:
    current_pop = current_pop   (current_pop * growth_rate)
    year  = 1

print year
  

И вот результат:

 So the current population is 7370000000
59