Python新手和不支持的操作数

Rya*_*ott 1 python

我只是在学习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))
Run Code Online (Sandbox Code Playgroud)

Zer*_*eus 5

正如评论中提到的,你的直接问题是(正如你的例外所说)你试图将一个整数与一个函数相乘,这没有意义.根据穆罕默德的回答,一个天真的解决办法是调用你定义的函数:

return (r(rate) * amt) / (1 - ((1 + r(rate)) ** (-p(yrs))))
Run Code Online (Sandbox Code Playgroud)

但是,您根本不需要这些功能.更简单的payment()函数版本可能如下所示:

def payment(amt, rate, yrs) :
    p = 12 * yrs
    r = rate / 100 / 12
    return (r * amt) / (1 - ((1 + r) ** (-p)))
Run Code Online (Sandbox Code Playgroud)

请注意,我们不是在里面定义函数,而是payment()在每种情况下简单地将计算结果分配给变量.