Почему я получаю другой вывод, когда переменная month_salary объявлена ​​в то время как l oop, а не снаружи? - PullRequest
1 голос
/ 18 марта 2020

В python, когда я включаю переменную month_salary в то время как l oop, я получаю другой вывод, чем если бы он был объявлен до l oop. Когда он помещается в l oop, вывод равен 142. Когда он помещается раньше, чем l oop, ответ 183. Почему это? Извините за любые ошибки - я только начинаю. Спасибо за понимание!

total_cost = 500000 #float(input())
downpayment = total_cost * .25
current_savings = 0
investment = (current_savings * .04) / 12
annual_salary = 120000 #float(input())
portion_save = .05 #float(input())
month_count = 0
semi_annual_raise = .03#float(input())


while downpayment >= current_savings:
    **monthly_salary = annual_salary / 12**
    current_savings += (portion_save*monthly_salary) + (current_savings * .04) / 12
    month_count += 1
    if month_count % 6== 0:
        annual_salary += (annual_salary*semi_annual_raise)
print(month_count, 'months')

1 Ответ

1 голос
/ 18 марта 2020

Прежде всего, Python не имеет объявлений переменных. Вам присвоено значение внутри l oop. Причина проста, прослеживается с помощью операторов print.

В опубликованной версии вы меняете значение в начале каждой итерации l oop. Поскольку monthly_salary зависит от annual_salary, и вы меняете последнее на каждой итерации l oop, то первое изменяется соответствующим образом.

Когда вы присваиваете это значение только один раз, до l oop, затем он остается неизменным, пока вы повторяете месяцы своего алгоритма.

...