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

Я новичок в python и stackoverflow.Я пытаюсь учиться, работая над небольшими проектами

Проект ориентирован на население: в 2014 году население Китая составляло около 1,37 миллиарда человек и росло со скоростью 0,51% в год.В 2014 году население Индии составляло около 1,26 миллиарда человек и росло со скоростью 1,35% в год.Определите, когда население Индии превзойдет население Китая.Предположим, что темпы роста в 2014 году будут продолжаться

Код, который я использовал:

year = 2014
population_chn = eval(input("Enter the initial China population:")) #1.37
population_ind = eval(input("Enter the initial Indian population:")) #1.26
while population_chn == 1.37:
    population_chn += 0.0051*population_chn
    year +=1
while population_ind == 1.26:
    population_ind += 0.0135*population_ind
    year +=1
if population_ind>population_chn:
    print("Indian population will exceed china population in",year)

Однако, когда я запускаю это, нет вывода.Что мне не хватает?Результат, который я хочу получить:

Население Индии превысит население Китая в 2025 году.

Ответы [ 3 ]

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

Вам не нужны операторы if перед циклом while.Вы можете добавить всю эту логику в цикл while и обновлять параметры населения для каждого года следующим образом:

year = 2014
print("Enter the initial China population:")
population_chn  = eval(input())
print("Enter the initial Indian population:")
population_ind = eval(input())

while population_ind < population_chn:
    population_chn += 0.0051*population_chn
    population_ind += 0.0135*population_ind
    year +=1 
else:
    print("Indian population will exceed china population in", (year))

Вывод, используя 1,37 для населения Chn и 1,24 в качестве населения ind:

Indian population will exceed china population in 2025

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

while population_chn == 1.37:
    population_chn += 0.0051*population_chn
    year +=1
while population_ind == 1.26:
    population_ind += 0.0135*population_ind
    year +=1

Они будут обновляться только один раз, потому что после 1 итерации ваши операторы if больше не соответствуют действительности, и после этого население никогда не обновляется.Таким образом, население Индии всегда меньше, чем население Китая, поэтому это заявление никогда не выполняется.

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

В цикле while вы проверяете равенство 1.37 для pop_chnology, которое может быть допустимо в первом случае, и не будет работать для любой последующей итерации цикла while, поскольку population_chn += 0.0051*population_chn меняет свое значение.То же самое в случае с Population_ind.Вместо этого вы должны сравнить значения pop_chnology и Population_ind в цикле while и использовать только один цикл

while (population_chn>=population_ind):
    population_chn += 0.0051*population_chn
    population_ind += 0.0135*population_ind
    year +=1
0 голосов
/ 13 февраля 2019

в вашем случае population_ind никогда не будет больше, чем population_chn, поэтому вы не будете печатать что-либо

, если хотите решить проблему, которую вы можете попробовать:

population_a = 1.37
population_b = 1.26

growing_rate_a = 0.0051
growing_rate_b = 0.0135

year = 2014
while population_a > population_b:
    year += 1
    population_b += population_b * growing_rate_b
    population_a += population_a * growing_rate_a

print(year)
...