簡體   English   中英

控制流程 python

[英]Control flow python

實際上我習慣了 c++ 並且我被困在 python 中。 我似乎無法理解導致無限 while 循環的原因。 該代碼的主要目標是計算需要多少個月才能節省足夠的錢用於預付款。

#*******Initializing all the required variables***********
home_price = float(input("Enter the price of your dream home:")) # cost of the home

down_payment_portion = 0.25 # initial upfront pay for the home which is 25%
stamp_duty_portion = 0.03 # 3%

annual_salary = float(input("Enter your annual salary:"))

tax_portion = 0.2 # 20%
save_amount = 0

save_portion = float(input("Enter the amount of money you want to save after tax-cut:"))

annual_return = 0.05 # 5%
months = 0

#*********************************************************
#------------Calculating all the necessary values---------

down_payment_portion = down_payment_portion * home_price # calculating the down payment for the dream home

stamp_duty_portion = stamp_duty_portion * home_price # calculating the stamp duty for the home

tax_portion = tax_portion * annual_salary # calculating the tax cut

save_portion = save_portion * save_amount # calculating the portion of tax-cut income to be put into savings

annual_return = (save_amount * annual_return) / 12

upfront_payment = down_payment_portion + stamp_duty_portion

while(save_amount < upfront_payment):
   save_amount = save_amount + annual_return
   save_amount = save_amount + (annual_salary - tax_portion) * save_portion / 12
   months = months + 1

print(f'You will need {months} month to save enough for your upfront payment{upfront_payment}.')
  1. 你初始化save_amount = 0
  2. 你得到annual_returnannual_return = (save_amount * annual_return) / 12 ,這將是
  3. 你還得到save_portion作為save_portion = save_portion * save_amount再次為零
  4. 因此,您在while 循環中的save_amount永遠不會增加它也保持為零save_amount < upfront_payment始終為 true ==> 無限循環

在您的代碼中

while(save_amount < upfront_payment):
   save_amount = save_amount + annual_return # 0 + 0 = 0

   # 0 + (some value * 0)/12 = 0
   save_amount = save_amount + (annual_salary - tax_portion) * save_portion / 12 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM