我是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)
答案 0 :(得分:1)
错误消息完全正确:您定义savings
不带参数,但使用参数(high
或guess
)调用它。
答案 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
。