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
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
ログ呼び出しを 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 を返します
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
あなたのリターンは空です....「リターン」と同じ行に変数名または値がありません。たとえば、値 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)
プログラミングで学んだように、関数には 3 つの部分が必要です。
(1) 入力。関数を「定義」するとき、関数に何を入れたいかを知る必要があります。
例えば:
def function (input1, input2):
これらの入力をparametersとも呼びます。
(2) 出力を表示する必要があります。
たとえば、提供するコードで、変数「結果」が保持する数値を返したい場合は、次のようにします。
return result
または、何も返さない、または出力したくない場合は、次のことができます。
return None
Python では、None は何も意味しません。少なくとも、今のところそのように考えることができます。
(3)関数はあなたに代わって何かをしている。
def function(inputs):
に
return None
入力からリターン(または出力)に変数を変更する必要があるものです。
それが役に立てば幸いです。質問する前に常に作業してください。Pythonで頑張ってください