Python 为什么当可变月薪在while循环中与外部声明时,我会得到不同的输出?

Python 为什么当可变月薪在while循环中与外部声明时,我会得到不同的输出?,python,loops,while-loop,Python,Loops,While Loop,在python中,当我在while循环中包含monthly_salary变量时,得到的输出与在循环之前声明的不同。当它被放置在循环中时,输出为142。当它放在while循环之前时,答案是183。为什么会这样?对不起,我犯了错误,我才刚刚开始。感谢您的任何见解 total_cost = 500000 #float(input()) downpayment = total_cost * .25 current_savings = 0 investment = (current_savings * .

在python中,当我在while循环中包含monthly_salary变量时,得到的输出与在循环之前声明的不同。当它被放置在循环中时,输出为142。当它放在while循环之前时,答案是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')

首先,Python没有变量声明。您已经在循环中指定了它的值。原因很简单,可以通过
print
语句进行跟踪

在发布的版本中,在每次循环迭代开始时更改值。由于
月薪
依赖于
年薪
,并且您在每次循环迭代中都会更改后者,因此前者会相应地更改


如果在循环之前仅分配一次该值,则在迭代算法的月份时,该值保持不变。

当在while循环中声明
月薪时,会在每个循环中修改该值,从而更改该值。当它被声明在循环之外时,它不会改变Hi Prune,谢谢你的回答!因此,为了确认-最好在循环内部而不是在循环之前分配要迭代的变量?这完全取决于值的处理方式。告诉你它属于哪里。例如,您所需的首期付款在整个计划中不会发生变化,因此您只需设置一次,然后将其保留。您的储蓄每月都会发生变化,因此您会在每次迭代中更新它。你每年都会加薪,所以你每12个月就要换一次。看到没有通用规则了吗?