试图计算抵押贷款的节省百分比

时间:2017-03-16 20:36:10

标签: python

我是python的新手。通过麻省理工学院OCW 6.001计算机科学和Python编程入门。需要创建一个脚本来计算收入的一部分,以支付抵押贷款。我需要使用二分法来找到要留出的部分。当我运行我的脚本时,我得到一堆愤怒的文字,关于我的函数'储蓄'如何获得0位置参数但是给出了1。我不知道这意味着什么。请帮忙!

以下是代码:

"""
Created on Thu Mar 16 12:51:41 2017

@author: [redacted]
"""

num_guesses = int(0)
current_savings = int(0)
annual_salary = input('enter your annual salary:')
r = float(.04)
raise_pct = float (.07)
high = pct_saved = float(1.0)
low = 0 
def savings (): 
    total_savings = 0 
    num_months = 0
    monthly_salary = int(annual_salary)/12
    portion_saved = pct_saved*monthly_salary
    for num_months in range(0,35): 
        num_months += 1
        total_savings += (current_savings*r)/12 + portion_saved
        if (num_months%6) == 0 :
            monthly_salary += monthly_salary*raise_pct
            portion_saved = monthly_salary*pct_saved
        return total_savings
cost = 250000
epsilon = float(.001)
guess = (low + high)/2.0
if savings(high) < cost:
    num_guesses += 1
    print ('You cannot afford this house.')
while abs(savings(guess))-cost >= epsilon: 
    if savings(guess) < cost: 
        low = guess
    else: 
        high = guess
    guess = (high + low)/2.0
    num_guesses += 1
print ('Number of guesses:', num_guesses)
print ('Savings percent is near:', pct_saved)

3 个答案:

答案 0 :(得分:1)

错误消息完全正确:您定义savings不带参数,但使用参数(highguess)调用它。

答案 1 :(得分:1)

您收到错误是因为省钱功能没有采取任何参数。以下是函数的工作原理:

# no arguments
def function():
    return 1

print function() # prints 1

# one argument
def function2(arg):
    return arg

a = 2
print function2(a) # prints 2

答案 2 :(得分:0)

if savings(high) < cost:
num_guesses += 1
print ('You cannot afford this house.')

这是您的错误来自哪里。根据此特定代码段,您调用function节省并为其提供一个变量。

但是,你明确地定义了不带参数的节约。

def savings ():
# your other code down here.

要解决此问题,您需要按照

的方式执行某些操作
def savings(amountOfSavings):
# your other code down here

我还想指出函数名和包含参数的括号之间没有空格。

我还建议您使用解释器,以便了解函数的工作原理和调用方式。为此,请在命令行中运行python。 python并做一些简单的事情,例如add(2, 2)。如果命令行发出错误,您可能需要将Python放在命令行中(有许多关于如何执行此操作的YouTube视频)。

之后,您可以在交互模式下运行脚本来使用您的功能。为此,请执行python -i yourScriptName.py