Python TypeError:';的操作数类型不受支持;int';和';功能';

Python TypeError:';的操作数类型不受支持;int';和';功能';,python,typeerror,Python,Typeerror,我是Python的初学者,正在做作业。我不断得到TypeError:-:'int'和'function'不支持的操作数类型,即使在研究了错误并应用了建议的修复之后。我不想找任何人给我一个解决方案,但我希望再看一眼。我错过了一些东西,但我不知道是什么。这是我遇到问题的代码部分: month = 0 interestYDT = 0 balance = int(raw_input ("Enter balance on credit card: ")) annualInterestRate = floa

我是Python的初学者,正在做作业。我不断得到
TypeError:-:'int'和'function'不支持的操作数类型
,即使在研究了错误并应用了建议的修复之后。我不想找任何人给我一个解决方案,但我希望再看一眼。我错过了一些东西,但我不知道是什么。这是我遇到问题的代码部分:

month = 0
interestYDT = 0
balance = int(raw_input ("Enter balance on credit card: "))
annualInterestRate = float(raw_input ("Enter annual interest rate as a decimal: "))
monthlyPaymentRate = float(raw_input ("Enter minimum monthly payment rate as a decimal: "))
previousbalance = balance
#
def monthlyInterestRate(annualInterestRate):
    return float(annualInterestRate/12)
#
if month <= 12:
    def minimumMonthlyPayment(previousbalance):
        return (previousbalance * monthlyPaymentRate)
    def monthlyInterest(monthlyInterestRate):
        return (1 + monthlyInterestRate)
    minMonPay = minimumMonthlyPayment
    monInt = monthlyInterest
    newbalance = ((previousbalance - minMonPay) * (monInt))
    interestYDT = (interestYTD + montInt)
    previousbalance = (newbalance)
    print ''
    print ('Month:' (month))
    print ('Minimum monthly payment: $ ' (round(minimumMonthlyPayment, 2)))
    print ('Remainging balance: $ ' (round(newbalance, 2)))
    print ' '
    month = (month + 1)
month=0
利息dt=0
余额=整数(原始输入(“在信用卡上输入余额:”)
AnnualInterestate=浮动(原始输入(“以小数形式输入年利率:”)
monthlyPaymentRate=浮动(原始输入(“以小数形式输入最低月付款率:”))
以前的余额=余额
#
def月利率(年利率):
回报浮动(年度利率/12)
#

如果month我认为问题出在这一行
minmondpay=minimumMonthlyPayment
上,在我看来,你是在给一个方法赋值,而不是调用这个方法。

看看你的代码,你是在给一个变量赋值,然后试图从一个值中减去一个函数

定义函数“MinimummMonthlyPayment(previousbalance)”,然后将该函数分配给变量“minMonPay=MinimummMonthlyPayment”。然后你说之前的余额-minMonPay。我想你的意思是:

minMonPay=每月最低付款额(以前的余额)


希望对您有所帮助。

为了调用函数,您必须在函数名后面添加参数以及任何必需的参数

在这两行中

minMonPay = minimumMonthlyPayment
monInt = monthlyInterest
您将函数分配给名称minMonPay、monInt,但实际上并不调用它们。相反,您需要编写以下内容:

minMonPay = minimumMonthlyPayment(previousBalance)
monInt = monthlyInterest(monthlyInterestRate)
这个定义

def minimumMonthlyPayment(previousbalance):
    return (previousbalance * monthlyPaymentRate)
提供一个函数,该函数接受一个参数并调用它。它与您先前在代码中创建的变量无关。事实上,我建议你重新命名它,它只会让你作为初学者感到困惑

此外,您创建的函数非常简单,每个函数只使用一次,因此删除它们并内联代码可能符合您的兴趣

# OLD CODE
def minimumMonthlyPayment(previousbalance):
    return (previousbalance * monthlyPaymentRate)
def monthlyInterest(monthlyInterestRate):
    return (1 + monthlyInterestRate)
minMonPay = minimumMonthlyPayment
monInt = monthlyInterest

# NEW CODE
minMonPay = previousbalance * monthlyPaymentRate
monInt = 1 + monthlyInterestRate
如果您这样做,不要忘记更新错误使用MinimummMonthlyPayment功能的行

# OLD CODE
print ('Minimum monthly payment: $ ' (round(minimumMonthlyPayment, 2)))

# NEW CODE
print ('Minimum monthly payment: $ ' (round(minMonPay, 2)))

我想我不太清楚什么时候该用什么方法。我接受了你的建议并删除了它们,但现在它不需要任何意见。我没有删除所有的旧代码,只是暂时注释掉了。这就是我所拥有的:@KMarciszewski补充了一件事。如果您遇到新问题,请发布错误消息我目前没有收到任何错误。我什么都没有得到。它不是要求输入或其他任何东西。@KMarciszewski我怀疑你的问题已经解决了,所以这个问题得到了回答。您现在在代码的其他地方遇到了一个新问题。谢谢大家的帮助。正如埃克伦所说,我的问题已经解决了。但现在我有了一个新的。对于这篇文章,我还有最后一个问题,你能推荐一些好的Python书籍来帮助我打下更坚实的基础吗?再次感谢。@KMarciszewski很可能是你能买到的最好的免费书。不要忘记点击复选标记接受答案。
# OLD CODE
print ('Minimum monthly payment: $ ' (round(minimumMonthlyPayment, 2)))

# NEW CODE
print ('Minimum monthly payment: $ ' (round(minMonPay, 2)))