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)

関数が値を返すようにするには、何を返すべきかを指定する必要があります。それ以外の場合は None を返します

于 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]

... [何か] を、値を返したい値または変数に置き換えます。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):

これらの入力をparametersとも呼びます。

(2) 出力を表示する必要があります。

たとえば、提供するコードで、変数「結果」が保持する数値を返したい場合は、次のようにします。

return result

または、何も返さない、または出力したくない場合は、次のことができます。

return None

Python では、None は何も意味しません。少なくとも、今のところそのように考えることができます。

(3)関数はあなたに代わって何かをしている。

def function(inputs):

return None

入力からリターン(または出力)に変数を変更する必要があるものです。

それが役に立てば幸いです。質問する前に常に作業してください。Pythonで頑張ってください

于 2012-06-21T15:53:38.430 に答える