【发布时间】:2013-11-13 03:58:51
【问题描述】:
我是 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)
非常感谢您的帮助。
【问题讨论】:
-
预期输出是什么?
-
理论上,余额 = 3329 年利率 = 0.2 代码应生成: 最低付款:310 测试用例 2:余额 = 4773 年利率 = 0.2 应生成:最低付款:440 测试用例 3:余额 = 3926年利率 = 0.2 最低付款:360
-
您确定您使用的公式正确吗?
-
如果您在谈论输出,是的,我确信这是它应该产生的输出。至于公式,我先用一个excel电子表格来理解逻辑,然后把它翻译成代码。我遇到的问题之一是在除以 0.2 / 12 时,它应该给出 0.01666666,并且只允许两位小数。我尝试使用 round(),但它向上舍入到下一个数字,也是 '%.2f',但结果相同。我想通了,转换为 String 然后再转换为 float 应该可以解决问题。
标签: function loops python-2.7 while-loop infinite-loop