Python迭代问题 导入数学 导入系统 def计算值(loanAmt,numYears): 对于范围(4,9)内的月氯酸盐: 月氯酸盐=月氯酸盐/100 月付款=贷款*月付款/(1-数学功率(1/(1+月付款),努迈尔斯*12)) 总付款=每月付款*单位*12 返回月付款、月付款、总付款 def打印付款(月付款、月付款、总付款、贷款、货币): 打印(“费率-每月付款-总付款”) 对于范围(4,9)内的月氯酸盐: 计算值(loanAmt,numYears) 打印(“{0}%${1:0.2f}${2:0.2f}”。格式(月付款、月付款、总付款)) def repeat(): question=str(输入(“您想创建一个新表吗?(输入y表示是):”) 如果(问题==“y”): main() 其他: sys.exit() def getPositiveFloat(): loanAmt=int(输入(“输入贷款金额:”) numYears=int(输入(“输入年数:”) 如果(loanAmt
当该程序运行时,monthlyRate变量(在printPayments中定义)将迭代,但CalculateValue中计算的值不会迭代。我发现我需要给Monthyrate以calculateValues作为参数,但我不确定如何在不破坏所有内容的情况下做到这一点。如果您的代码与您在那里键入的代码相同,则返回语句缩进过多,这很容易Python迭代问题 导入数学 导入系统 def计算值(loanAmt,numYears): 对于范围(4,9)内的月氯酸盐: 月氯酸盐=月氯酸盐/100 月付款=贷款*月付款/(1-数学功率(1/(1+月付款),努迈尔斯*12)) 总付款=每月付款*单位*12 返回月付款、月付款、总付款 def打印付款(月付款、月付款、总付款、贷款、货币): 打印(“费率-每月付款-总付款”) 对于范围(4,9)内的月氯酸盐: 计算值(loanAmt,numYears) 打印(“{0}%${1:0.2f}${2:0.2f}”。格式(月付款、月付款、总付款)) def repeat(): question=str(输入(“您想创建一个新表吗?(输入y表示是):”) 如果(问题==“y”): main() 其他: sys.exit() def getPositiveFloat(): loanAmt=int(输入(“输入贷款金额:”) numYears=int(输入(“输入年数:”) 如果(loanAmt,python,loops,for-loop,arguments,iteration,Python,Loops,For Loop,Arguments,Iteration,当该程序运行时,monthlyRate变量(在printPayments中定义)将迭代,但CalculateValue中计算的值不会迭代。我发现我需要给Monthyrate以calculateValues作为参数,但我不确定如何在不破坏所有内容的情况下做到这一点。如果您的代码与您在那里键入的代码相同,则返回语句缩进过多,这很容易 import math import sys def calculateValues(loanAmt, numYears): for monthlyRate
import math
import sys
def calculateValues(loanAmt, numYears):
for monthlyRate in range (4, 9):
monthlyRate = monthlyRate / 100
monthlyPayment = loanAmt * monthlyRate / (1 - math.pow(1 / (1 + monthlyRate), numYears * 12))
totalPayment = monthlyPayment * numYears * 12
return monthlyRate, monthlyPayment, totalPayment
def printPayments(monthlyRate, monthlyPayment, totalPayment, loanAmt, numYears):
print("Rate Monthly Payment Total Payment")
for monthlyRate in range (4, 9):
calculateValues(loanAmt, numYears)
print("{0}% ${1:0.2f} ${2:0.2f}".format( monthlyRate, monthlyPayment, totalPayment))
def repeat():
question = str(input("Would you like to create a new table? (Enter y for yes): "))
if (question == "y"):
main()
else:
sys.exit()
def getPositiveFloat():
loanAmt = int(input("Enter the amount of the loan: "))
numYears = int(input("Enter the number of years: "))
if (loanAmt < 0) or (numYears < 0):
print("Please enter a positive number for both questions")
main()
return loanAmt, numYears
def main():
loanAmt, numYears = getPositiveFloat()
monthlyRate, monthlyPayment, totalPayment = calculateValues(loanAmt, numYears)
printPayments(monthlyRate, monthlyPayment, totalPayment, loanAmt, numYears)
repeat()
main()
在第一次迭代后返回的代码应该与上面的代码类似
def calculateValues(loanAmt, numYears):
myAnswer = []
for monthlyRate in range (4, 9):
monthlyRate = monthlyRate / 100
monthlyPayment = loanAmt * monthlyRate / (1 - math.pow(1 / (1 + monthlyRate), numYears * 12))
totalPayment = monthlyPayment * numYears * 12
thisRound = (monthlyRate, monthlyPayment, totalPayment)
myAnswer.append(thisRound)
return myAnswer
我在这里只是猜测,如果您想要从每次迭代中获得结果,您需要将它们保存在某个容器中。我个人会把它们保存在字典里,但在你的目标更明确之前,我还没有准备好
<>你应该考虑到你更舒服的是在你的函数中添加一些打印语句,这样你就可以看到每次迭代中的值
def calculateValues(loanAmt, numYears):
myAnswer = []
for monthlyRate in range (4, 9):
monthlyRate = monthlyRate / 100
monthlyPayment = loanAmt * monthlyRate / (1 - math.pow(1 / (1 + monthlyRate), numYears * 12))
totalPayment = monthlyPayment * numYears * 12
thisRound = (monthlyRate, monthlyPayment, totalPayment)
myAnswer.append(thisRound)
return myAnswer
问题是,当代码第一次命中“return”语句时,它将返回值并离开函数。看起来您正在printpayments中循环使用monthlyRate(monthlyRate=[4,5,6,7,8])。那很好。现在,对于calculateValues函数,您需要将monthlyPayment和totalPayment返回给调用函数。您还需要将monthlyRate作为参数传入
def testFunction(somevalue):
for x in range(0, somevalue):
print 'hello'
return x
y = testFunction(2)
hello
hello
>>>y
1
一般来说,您需要阅读和思考如何在计算机编程中编写函数,尤其是在程序执行过程中可以看到变量的地方。这里有一个潜在的有用链接,可供阅读:
希望这能有所帮助。代码中存在一些问题,通过使用下面的代码执行diff,您可以很容易地看到这些问题
def calculateValues(monthlyRate, loanAmt, numYears):
monthlyRate = monthlyRate / 100
monthlyPayment = loanAmt * monthlyRate \
/ (1 - math.pow(1 / (1 + monthlyRate), numYears * 12))
totalPayment = monthlyPayment * numYears * 12
return (monthlyPayment, totalPayment)
def printPayments(monthlyRate, monthlyPayment, totalPayment, loanAmt, numYears):
print("Rate Monthly Payment Total Payment")
for monthlyRate in range (4, 9):
monthlyPayment, totalPayment = calculateValues(monthlyRate, loanAmt, numYears)
print("{0}% ${1:0.2f} ${2:0.2f}".format( monthlyRate, \
monthlyPayment, totalPayment))
我认为你计算利息的方式有问题:
Enter the amount of the loan: 100
Enter the number of years: 20
Rate Monthly Payment Total Payment
4% $4.00 $960.08
5% $5.00 $1200.01
6% $6.00 $1440.00
7% $7.00 $1680.00
8% $8.00 $1920.00
Would you like to create a new table? (Enter y for yes):
但是这部分我会让你自己解决;)你是说你的代码的格式和我的格式一样吗?你应该更清楚,你是在寻找每个月的工资。让代码完全像那样并不能解决问题。运行程序。每月和总付款应该重复,而不是重复。@user3295439这是因为这只是众多问题中的一个。请参阅我的答案以了解更多详细信息。我尝试了您的代码,但它没有按预期工作。我也不知道你改变了什么。只是提醒一下——如果一个答案很好地解决了你的问题,你应该正式接受它。祝你好运
monthlyPayment = loanAmt * monthlyRate / (1 - math.pow(1 / (1 + monthlyRate), numYears * 12))