1

我正在尝试使用 return 语句。如果 y 为负数,则程序将终止。但它显示“ValueError:数学域错误”

import math
y=-5
def df(y):
if y<=0:
        print y, "is negative"
        return
result = math.log(y)
print "The log of y is",result
4

4 回答 4

2

我有这种感觉,你想将你的日志调用包含在 df() 函数中,然后先检查它是否为负。

import math
y=-5
def df(y):
    if y<=0:
        print y, "is negative"
        return
    result = math.log(y)
    return result

print "The log of y is", df(y)

要让你的函数返回一个值,你必须指定它应该返回什么。否则返回无

于 2012-06-21T15:51:38.517 回答
1

Return 将控制权交还给调用者。在这种情况下,如果您想获取函数的值,则需要调用它,并且需要该函数实际返回一些内容。也许是这样的:

import math

def df(v):
    if v <= 0:
        print v, "is negative"
        return

y = -5
df(y)
result = math.log(y)
print "The log of y is",result

尽管我不确定您要做什么。如果你想让你的函数返回一些东西,你可以使用下面的语法:

return [something]

... 将 [something] 替换为要返回其值的值或变量。math.log 返回其参数的对数。您已经知道如何保存函数的返回值:

您希望这会导致程序退出。如果从 main 方法使用,即在任何函数之外,返回只会退出程序。Return 将控制权交还给调用例程(如果没有调用例程,则程序退出)。您可能想改用 exit 调用:

import sys
...
sys.exit(0)

sys.exit将立即终止程序,将提供的值传递回调用程序。如果您不知道这是什么,您可以使用值 0。

result = math.log(y)

至于您的错误消息,您不能取负数的对数,而是尝试正数。(也不是 0)

我想你想要这样的东西:

import math

def df(v):
    if v <= 0:
        print v, "is negative"
        return True # returns true if the value is negative or zero
    return False    # otherwise returns false

y = -5
if df(y):           # test if negative or positive, branch on return value
    return          # if value was negative or zero, return (exit program)
result = math.log(y)
print "The log of y is",result
于 2012-06-21T15:45:53.877 回答
0

你的回报是空的......在“回报”的同一行上没有变量名或值。例如,如果您想返回值 5,您可以输入

return 5

如果你想返回一个变量 foo,你会放

return foo

现在你什么都没有返回。

也许你想要这个?

import math
y=-5
def df(y):
    if y<=0:
        print y, "is negative"
        return "impossible to calculate"
    result = math.log(y)
    return result

print "The log of y is", df(y)
于 2012-06-21T15:47:30.917 回答
0

正如我在编程中学到的那样,任何功能都需要 3 个部分:

(1)输入,当你“定义”一个函数时,你需要知道你想把什么放入函数中。

例如:

def function (input1, input2):

我们还将这些输入称为参数

(2) 你需要显示输出:

例如,在您提供的代码中,如果您想返回变量“result”持有的数字,您可以执行以下操作:

return result

或者,如果您不想返回或输出任何内容,您可以执行以下操作:

return None

在 python 中,None 没有任何意义,至少你现在可以这么想。

(3)功能就是为你做事,所以之间的事

def function(inputs):

return None

是您必须将变量从输入修改为返回(或输出)。

希望它有所帮助,并且总是在提出任何问题之前工作。祝你在 Python 上好运

于 2012-06-21T15:53:38.430 回答