2017-02-28 90 views
0

第二個循環不起作用。當我編譯它不輸出任何文本,它只是要求對輸入和停在那裏爲什麼第二個循環不起作用

這意味着正在執行第二循環的心不是,只是第一個,但我不知道爲什麼

balance0 = float(input("balance = ")) 
annualInterestRate = float(input("annualInterestRate = ")) 
monthlyPayment = 10 
balance = 0 


month = 1 
while (0): 
balance = balance0 
while month <= 12: 
    balance1= (balance + annualInterestRate * balance/12) 
    balance1 = balance1 - (monthlyPayment) 
    print("Remaining balance month " , month, " is ", balance1) 
    balance = balance1 
    month += 1 
if balance < 0: 
     print("Lowest payment: ", monthlyPayment) 
     break 

else: 
    monthlyPayment += 10 

環路

 while month <= 12 

does not make it run,why?

+6

因爲你具備的條件'而(0)',轉化爲'而FALSE',這絕不會允許你輸入下面的語句。你不想要,而是,「while balance!= 0」或類似的東西? – blacksite

+0

'while(0)'從不爲真,因此不會被執行。 – Cleb

+3

看起來像兩個迴路,如果你問我 – RSon1234

回答

2

它實際上是你的外循環不運行。您有:

while (0): 

由於(0)是從來沒有一個真正的條件,即循環將不會執行。基於這樣的事實,你有在那裏後來就break終止它,當一些條件得到滿足,你大概的意思:

while (1): 

順便說一句,while True:generally equivalent,而且可能更地道。

+0

我覺得這麼愚蠢,現在,我不知道爲什麼我想起它就像哈哈 – rachuism

+0

@rachuism一個很好的技術文件,以備將來參考暫時補充一些微量'print'不工作s在調試時的關鍵位置,因此您可以快速查看程序通過代碼執行的路徑。您通常可以縮小問題的來源,並通過這種方式快速發現問題(如您的外循環未執行)。 –

0

其他人已經發現了主要問題。您也忽略重置您的月份計數器。結果是,如果10美元/月沒有還清貸款,你會陷入無限循環。試試這個:

while (True): 
    balance = balance0 
    for month in range(1, 12+1): 

當你知道你需要多少次迭代,使用聲明。

此外,你可能會使用更好的客戶提示:annualInterestRate是一個可變的風險,很難爲一個世俗的人閱讀。將其更改爲「年利率;例如0.12意味着12%的利息」。

相關問題