初级Python练习

2024-04-28 08:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在解决本页的问题2时遇到问题 Here

这是我的密码:

#Problem set 1 b

out_bal = float(raw_input("Enter the outstanding balance on your credit card: "))
ann_interest = float(raw_input("Enter the annual interest rate as a decimal: "))

min_pmnt = 10
months = 1
prev_bal = out_bal

month_interest = ann_interest / 12.0
updated_bal = prev_bal * (1 + month_interest) - min_pmnt

while out_bal > 0:
        for i in range(1,13):
                out_bal = updated_bal
                prev_bal = out_bal
                months += 1
        if out_bal <= 0:
                break
        else:
            min_pmnt = min_pmnt + 10
            months = 0
            print out_bal

print "RESULT"
print "Monthly payment to pay off debt in 1 year: $", min_pmnt
print "Number of months needed: ", months
print "Balance: ", round(out_bal, 2)

我想分别取1200和.18作为前两个输入。然而,当我这样做时,程序会陷入while循环,并继续打印1208.00。你知道吗

当我自言自语地读代码时,它似乎应该工作了。但我认为我没有正确使用prev\u bal变量。你知道吗

而且,它的运算方式和我期望的一样,它第一次通过循环,但似乎没有加上10分钟,再次通过循环。好像是用了10次又一次。你知道吗

我如何写这个,使它实际上加10,然后再次执行循环?你知道吗

谢谢!你知道吗


Tags: theinputrawfloatoutminprintenter
1条回答
网友
1楼 · 发布于 2024-04-28 08:21:28

你的问题是updated_bal没有改变,但是每次迭代时你都要将out_bal设置为它,然后调节out_bal上的循环值变小。你知道吗

在我看来,您似乎认为每个循环迭代的updated_bal都会根据其组成部分进行更改。为了使其工作,您需要使用一个函数来计算每次更新的余额。你知道吗

相关问题 更多 >