Python程序挂起,可以';我不明白为什么

Python程序挂起,可以';我不明白为什么,python,python-3.x,Python,Python 3.x,所以我试着运行一个相当简单的程序,告诉你根据一个人的年薪,他们工资的百分比,以及房子的总成本,需要多少个月才能支付一所房子的首期付款,下面是代码: annual_salary = float(input("Enter your annual salary: ")) portion_saved = float(input("Enter the percent of your salary to save, as a decimal: ")) total_co

所以我试着运行一个相当简单的程序,告诉你根据一个人的年薪,他们工资的百分比,以及房子的总成本,需要多少个月才能支付一所房子的首期付款,下面是代码:

annual_salary = float(input("Enter your annual salary: "))
portion_saved = float(input("Enter the percent of your salary to save, as a decimal: "))
total_cost = float(input("Enter the cost of your dream home: "))

portion_down_payment = total_cost * 0.25
current_savings = 0.0
monthly_salary = annual_salary / 12
percentage_of_monthly = monthly_salary * portion_saved

months = 0
while current_savings != portion_down_payment:
    current_savings += percentage_of_monthly
    investment_return = current_savings*0.04 / 12
    current_savings += investment_return
    months += 1

print("Number of months:", months)
我以前做过Python编程,对Java相当熟悉,但我对Python有点生疏,所以我不明白为什么会发生这种情况,下面是输出:


正如您所见,在输入“梦想之家”的总成本后,代码没有做任何事情,但是,它也没有提供错误消息。作为一个固执的人,我猜可能是IDE,但事实并非如此,因为我在Spyder上和命令提示符下尝试了相同的程序,但仍然没有成功

您的while语句陷入了循环中-

while current_savings != portion_down_payment:
你在那里做一个直接匹配-如果它小于或大于它将继续,循环只有在当前储蓄正好等于部分首付时才会停止。发生这种情况的可能性非常小,特别是在处理浮点数时


将其设置为
,而当前储蓄
应该可以解决您的问题。

您的while语句陷入了一个循环-

while current_savings != portion_down_payment:
你在那里做一个直接匹配-如果它小于或大于它将继续,循环只有在当前储蓄正好等于部分首付时才会停止。发生这种情况的可能性非常小,特别是在处理浮点数时


将其设置为
,而当前储蓄
应该可以解决您的问题。

您试图实现的逻辑不是很清楚,但请考虑在
当前储蓄>partment\u down\u payment
时是否要继续循环。我会使用一些打印进行调试,例如
打印(活期存款、部分首付)
在每个循环中,检查出了什么问题。但基本上,
部分的首付不会是
==
当前的储蓄
,你的循环将永远持续下去。你试图实现的逻辑不是很清楚,但想想当
当前的储蓄>转移时,你是否想继续循环关于首付
。我会使用一些打印进行调试,例如
打印(当前的储蓄,部分首付)
在每次循环和检查中,都会出现什么问题。但基本上,
部分的首付不会是
==
当前储蓄
,你的循环将永远持续下去。在这篇文章提交后,后天,或后天,我意识到它将永远循环下去,因为当前的vings永远不会等于部分首付。所以我尝试了你推荐的方法,效果很好。谢谢你的帮助!在这篇文章提交后,第二天或第二天,我意识到它将永远循环,因为当前的储蓄永远不会等于部分首付。所以我尝试了你推荐的方法,效果很好.谢谢你的帮助!