0

私はPythonでの新しいプログラミングです。最低の支払い (10 から始まる) を取得し、残りの残高 (12 か月の支払い後) を返す関数を作成しようとしています。

関数の外では、関数を呼び出して残高がゼロかゼロ未満かをチェックするループを使用しています。そうでない場合は、最低支払額を +10 ドル増やして、関数を再度呼び出します。残高がゼロまたはゼロ未満の場合、最も低い支払いを出力します。

理論的には、出力は次のようになります。

テスト ケース 1:

balance = 3329
annualInterestRate = 0.2

Result Your Code Should Generate:

******Lowest Payment: 310******

Test Case 2:

balance = 4773
annualInterestRate = 0.2
Result Your Code Should Generate:

**最低支払額: 440* *

Test Case 3:

balance = 3926
annualInterestRate = 0.2
Result Your Code Should Generate:

**最低支払額: 360* *

これまでのところ、これは私が持っているものです:

balance = 100
annualInterestRate = 0.2
per_month = ( annualInterestRate / 12 ) 

# Answer is 0.0166666 but I need it to be 0.01, so figured out to convert to string then to float, not the most elegant , but practical. :)

convert_to_str = str(per_month)[:4]
per_month = float(convert_to_str)
lowest_payment = 0

def main():
    i = 0
    while i < 11:
        global balance
        global lowest_payment
        global per_month
        balance = balance - lowest_payment
        balance = ((balance * per_month) + balance)
        i = i +1
        #print (balance)
main()

if balance <= 0 or balance == 0:
    print "Lowest Payment: " + str(lowest_payment)
else:
    lowest_payment = lowest_payment + 10
    main()

問題は、それが私の機能を実行していないことであり、ループをもう一度繰り返します。if ループと while ループを試してみました。私のwhileループの下で、無限ループを与えます:

while balance >= 0 or balance != 0:
    lowest_payment = lowest_payment + 10
    main()
    if balance <= 0:
        print "Lowest Payment: " + str(lowest_payment)

よろしくお願いいたします。

4

2 に答える 2

0

あなたはこれを行うことができます:

while balance > 0:    
    lowest_payment = lowest_payment + 10
    main()
print "Lowest Payment: " + str(lowest_payment)

問題の必要に応じて変更することができます。

于 2013-11-01T21:26:20.867 に答える