目前编程和尝试学习Python相当新。我有这个代码而且我不明白为什么我没有得到回报价值:(
balance = 3200
annualInterestRate = 0.2
monthlyInterestRate = (annualInterestRate/12 + 1)
def f(x):
m = 0
ba = balance
while m < 12:
ba = (ba - x)*monthlyInterestRate
m += 1
return ba
def bisection():
a = 0
b = balance
c = (a+b)/2
while a != b:
if f(c) == 0:
return c
elif f(c) < 0:
a = c
else:
b = c
c = (a+b)/2
return c
bisection()
答案 0 :(得分:1)
您必须明确使用return
关键字。可能你当前有print c
。
f
需要在while循环后返回ba
。
答案 1 :(得分:0)
你不清楚你期望什么函数返回一个值,但是由于我无法发表评论和刺激,我会提供一个可能的答案。
首先,在此代码中,您实际上从未调用过任何函数。我假设这是在其他地方完成的。
对于f(x)
,没有return value
,因为您没有发表Return
声明。我也不会将变量用作Globals,这通常是不好的做法。相反,如果您要修改MonthlyInterestRate
,请将其作为参数发送到f()
并返回新值。
bisection
仅在f(c) == 0
但f()
没有Return
语句时才会返回,因此永远不会发生。过去,一旦它退出循环,它将只打印c,所以没有返回值。
如果你想比较一个函数,它需要一个Return
语句。
答案 2 :(得分:0)
首先,您应该向return ba
添加f
以使f
返回某些内容:
def f(x):
m = 0
ba = balance
while m < 12:
ba = (ba - x)*monthlyInterestRate
m += 1
retrun ba
然后,在脚本文件的最后一处添加bisection()
来调用它:
bisection()
答案 3 :(得分:0)
首先,在您的函数f
中,如果要使用0检查相等性,则不需要返回语句。
在f
函数中添加return语句后,您必须编写程序正文,因为您只有两个函数,但是您不能调用它们来获取结果值...
我了解您的程序必须使用bisection function
写作
bisection()
答案 4 :(得分:0)
有两个原因。 一,你的函数f(x)没有显式的return语句。如果函数不包含显式返回,则它将具有隐式返回,即&#34;无&#34; (None是python对象)。 其次,调用f(x)的唯一地方是二分(),它本身从不被调用。 因此,由于您的所有函数都没有被调用,因此您的代码不会返回任何内容。 在定义之后尝试调用bisection()