Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我得到一个错误,我';I’我的标点符号正确_Python_Typeerror_Callable - Fatal编程技术网

Python 我得到一个错误,我';I’我的标点符号正确

Python 我得到一个错误,我';I’我的标点符号正确,python,typeerror,callable,Python,Typeerror,Callable,我已经给出了上面的代码,计算贷款细节是一个简单的问题(我只是在学习python,这是一个作业)。当我运行它时,我得到以下信息: ## Loan problem def mon_pay( prin, an_i, dur ) : n = dur * 12 r = (an_i/100)/12 numerator = r*(1+r)**n dinominator = (1+r)**n - 1 if an_i == 0 : mon_pay = pr

我已经给出了上面的代码,计算贷款细节是一个简单的问题(我只是在学习python,这是一个作业)。当我运行它时,我得到以下信息:

## Loan problem

def mon_pay( prin, an_i, dur ) :
    n = dur * 12
    r = (an_i/100)/12
    numerator = r*(1+r)**n
    dinominator = (1+r)**n - 1
    if an_i == 0 :
        mon_pay = prin/n
    else :
        mon_pay = prin * (numerator/dinominator)
    return mon_pay

def rem_pay( prin, an_i, dur, num_pay) :
    n = (dur * 12)
    r = (an_i/100)/12
    numerator = ((1+r)**n - (1+r)**num_pay)
    dinominator = ((1+r)**n - 1)
    if an_i == 0 :
        rem_pay = (prin * (1-num_pay/n))
    else :
        rem_pay = (prin * (numerator/dinominator))
    return rem_pay

prin = float ( input ("Enter the Principal of loan: "))
an_i = float ( input ("Enter the annual interest rate: "))
dur = int (input ("Enter the duration of loan: "))
mon_pay = mon_pay(prin, an_i, dur)
print("LOAN AMOUNT:",prin,"INTEREST RATE(PERCENT):",an_i)
print("DURATION(YEARS):",dur,"MONTHLY PAYMENT:",int(mon_pay))

for yr in range (1, dur+1) :
    total_pay = mon_pay*12*yr
    _yr = yr*12
    rem_pay = rem_pay(prin, an_i, dur, _yr)
    print("YEAR:",yr,"BALANCE:",rem_pay//1,"TOTAL PAYMENT",total_pay//1)
第一次运行,但第二次运行时会出现上述错误
我不明白为什么,任何人都请帮忙

不要对变量和函数使用相同的名称


在这种情况下,
rem\u pay
同时用作函数和浮动变量。

第一次运行函数时,您将浮动结果分配给变量
rem\u pay

它只是发生在
rem\u pay
是为了得到浮动结果而执行的函数的名称

因此,与其将浮动结果分配给函数
rem\u pay
, 您应该考虑替换变量< /p>的名称。
rem_pay = rem_pay(prin, an_i, dur, _yr)

请注意,
rem\u pay
行中的
payment\u restinent

已更改为
rem\u pay=rem\u pay(prin,an\u i,dur,_yer)
您正在用浮点覆盖
rem\u pay
函数定义。不要对函数和变量使用相同的名称。我不完全理解它。变量rem_pay和函数rem_pay()能以某种方式相互作用吗?python不允许您单独使用它们吗?而且“它只是为了得到浮点结果而执行的函数名为rem_pay。”~Mike请再解释一下。@VibinNarayanan当您定义一个名为
rem_pay
的函数时,函数本身与任何其他对象一样存储在该变量中。将浮点值指定给它时,将使用新值覆盖先前存储的函数,从而“删除”函数对象。
rem_pay = rem_pay(prin, an_i, dur, _yr)
payment_remainder = rem_pay(prin, an_i, dur, _yr)
print("YEAR:",yr,"BALANCE:",payment_remainder //1,"TOTAL PAYMENT",total_pay//1)