为什么我的代码没有返回任何内容

时间:2016-07-22 07:31:39

标签: python return

目前编程和尝试学习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()

5 个答案:

答案 0 :(得分:1)

您必须明确使用return关键字。可能你当前有print c

f需要在while循环后返回ba

答案 1 :(得分:0)

你不清楚你期望什么函数返回一个值,但是由于我无法发表评论和刺激,我会提供一个可能的答案。

首先,在此代码中,您实际上从未调用过任何函数。我假设这是在其他地方完成的。

对于f(x),没有return value,因为您没有发表Return声明。我也不会将变量用作Globals,这通常是不好的做法。相反,如果您要修改MonthlyInterestRate,请将其作为参数发送到f()并返回新值。

bisection仅在f(c) == 0f()没有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()