В то время как l oop удаляет итерацию, когда переменная повторяется - PullRequest
0 голосов
/ 27 апреля 2020

Я следую вместе с введением MIT к python курсу, чтобы продуктивно заполнить мое время во время этого карантина, и я нашел кое-что, что немного смущает меня.

Я выложу только фрагмент кода, так как я сосредоточен на этом, пока l oop. Если я введу l oop ниже, мне дадут правильный ответ на 159 месяцев:

while current_savings < down_payment:
    current_savings += monthly_savings + (current_savings*0.04)/12
    months += 1

Но если я выполню этот следующий, он даст мне ответ на 158 месяцев:

while current_savings < down_payment:
    current_savings += monthly_savings
    current_savings += (current_savings*0.04)/12
    months += 1

Я просто немного запутался, почему вторая строка кода пропустит месяц. Может кто-нибудь объяснить, может быть, как этот код читается?

1 Ответ

1 голос
/ 27 апреля 2020

Первый :

В этом current_savings in (current_savings*0.04)/12 имеет первое значение current_savings.

while current_savings < down_payment:
    current_savings = current_savings + monthly_savings + (current_savings*0.04)/12
    months += 1

Второй один:

while current_savings < down_payment:
    current_savings = current_savings + monthly_savings
    current_savings = current_savings + (current_savings*0.04)/12 //here current_savings in (current_savings*0.04)/12 has changed after the line above
    months += 1

Я избавился от +=, чтобы они стали более логически понятными.

...