2017-02-28 10 views
0

2番目のループは機能しません。私はそれが出力に任意のテキストをdoesntのコンパイルすると、それだけの入力を要求し、そこ2番目のループがうまくいかない理由

を停止それはちょうど最初の1、第2のループありえないが実行されていることを意味しますが、私は、なぜ

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 

実行するのはなぜですか?

+6

あなたは 'while(0)'という条件を持っているので、 'while False'に変換されます。これは決して以下のステートメントを入力することを許可しません。あなたは、代わりに、 'balance!= 0'なのか、それとも何かを望んでいないのですか? – blacksite

+0

while(0) 'は決して真ではないため、実行されません。 – Cleb

+3

あなたが私に尋ねると両方のループのようには見えない – RSon1234

答えて

2

実際には実行されない外側のループです。あなたは持っている:(0)以来

while (0): 

は、ループが実行されることはありませんことを、真の条件になることはありません。あなたには、いくつかの条件が満たされたときにそれを終了することが、後に中breakを持っているという事実に基づいて、あなたはおそらく意味:余談として

while (1): 

while True:generally equivalentあり、そしておそらくより慣用的。

+0

私は今、とても馬鹿だと思うのですが、なぜ私はそれを覚えているのか分かりません – rachuism

+0

@rachuism将来の参考のためにファイルを置くのは、デバッグ時に主要な場所に配置されているため、プログラムでコードを使用しているパスをすばやく視覚化できます。このようにして、問題の原因を絞り込み、問題を素早く発見することができます(外側ループが実行されていないなど)。 –

0

他の誰もがすでに主な問題を捉えています。また、あなたは月のカウンタをリセットすることを怠った。その結果、$ 10 /月がローンを返済しなければ、あなたは無限ループに入ります。あなたが反復処理する必要がある回数を知っているとき

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

ためのステートメントを使用します。これを試してみてください。 annualInterestRateは可変アネムであり、平凡な人間が読むのは難しいです。これを「年間利率、例えば0.12は12%の利子を意味する」に変更します。

関連する問題