我正在学习python,我正在尝试制作计算贷款利率的计划。我一直得到*:'function'和'int'不支持的操作数类型。参考第14和第8行。我不确定我做错了什么。这是代码:
from sys import argv
def payment(amt, rate, yrs) :
def p(yrs) :
return 12 * yrs
def r(rate) :
return rate / 100 / 12
return (r * amt) / (1 - ((1 + r) ** (-p)))
if __name__ == "__main__" :
amt = int(argv[1])
rate = float(argv[2])
yrs = int(argv[3])
print("$%.2f" % payment(amt, rate, yrs))
答案 0 :(得分:5)
正如评论中所提到的,你的直接问题是(正如你的例外所说)你试图将一个整数与一个函数相乘,这没有意义。根据穆罕默德的回答,一个天真的解决办法是调用你定义的函数:
return (r(rate) * amt) / (1 - ((1 + r(rate)) ** (-p(yrs))))
但是,您根本不需要这些功能。您payment()
函数的更简单版本可能如下所示:
def payment(amt, rate, yrs) :
p = 12 * yrs
r = rate / 100 / 12
return (r * amt) / (1 - ((1 + r) ** (-p)))
请注意,我们不是在payment()
中定义函数,而是在每种情况下简单地将计算结果分配给变量。
答案 1 :(得分:4)
from sys import argv
def payment(amt, rate, yrs) :
def p(yrs) :
return 12 * yrs
def r(rate) :
return rate / 100 / 12
return (r(rate) * amt) / (1 - ((1 + r(rate)) ** (-p(yrs))))
if __name__ == "__main__" :
amt = int(argv[1])
rate = float(argv[2])
yrs = int(argv[3])
print("$%.2f" % payment(amt, rate, yrs))
在第8行,您应该将参数传递给函数:
r(rate)
p(yrs)
答案 2 :(得分:0)
当您引用一个函数时,您将其命名为括号。但是,在您的情况下,您正在尝试使用该函数,因此您必须使用括号(在您的情况下为变量)来调用它。
以下是您编辑的代码:
from sys import argv
def payment(amt, rate, yrs) :
def p(yrs) :
return 12 * yrs
def r(rate) :
return rate / 100 / 12
return (r(rate) * amt) / (1 - ((1 + r(rate)) ** (-(p(yrs)))))
if __name__ == "__main__" :
amt = int(argv[1])
rate = float(argv[2])
yrs = int(argv[3])
print("$%.2f" % payment(amt, r(rate), p(yrs)))