数値的に有効だが、物理的に範囲外の関数はどうすればよいですか?Pythonの関数引数の範囲を調べる
なぜなら、物理的に正しい範囲が残っていれば私の教え方は教えてやりたいと思います。
このエラー処理でValueError例外を使用することを考えました。
例:
def return_approximation(T):
#return T only if it is inbetween 0 < T < 100
return T
数値的に有効だが、物理的に範囲外の関数はどうすればよいですか?Pythonの関数引数の範囲を調べる
なぜなら、物理的に正しい範囲が残っていれば私の教え方は教えてやりたいと思います。
このエラー処理でValueError例外を使用することを考えました。
例:
def return_approximation(T):
#return T only if it is inbetween 0 < T < 100
return T
Pythonは、引数の制約この種類のassert
-statementを持っています。
def return_approximation(T):
assert 0 < T < 100, "Argument 'T' out of range"
return T
synatxを伴うassertステートメント:' assert Expression [、Arguments] 'は、式が失敗し、AssertionErrorで引数を使用するとAssertionErrorを発生させます。アサーションは、正しい設定の後に 'python -O my_prog.py'を使って切り替えることができます。 – marou
それはそうのように、他のあなたの条件return None
と一致した場合には、単に、Tに返される値を制限することができます。
>>> def f(T):
return T if 0 < T < 100 else None
>>> f(100)
>>> f(99)
99
>>> f(0)
>>> f(1)
1
EDIT:例外を除いて、解決策:
>>> def f(T):
if 0 < T < 100:
return T
else:
raise ValueError
>>> f(100)
Traceback (most recent call last):
File "<pyshell#475>", line 1, in <module>
f(100)
File "<pyshell#474>", line 5, in f
raise ValueError
ValueError
>>> f(99)
99
>>> f(0)
Traceback (most recent call last):
File "<pyshell#477>", line 1, in <module>
f(0)
File "<pyshell#474>", line 5, in f
raise ValueError
ValueError
>>> f(1)
1
あなたがしても出力することができます
>>> def f(T):
if 0 < T < 100:
return T
else:
raise Exception('T is out of Range')
>>> f(100)
Traceback (most recent call last):
File "<pyshell#484>", line 1, in <module>
f(100)
File "<pyshell#483>", line 5, in f
raise Exception('T is out of Range')
Exception: T is out of Range
この場合、「なし」の使用方法を詳しく説明できますか。たとえば、プログラムの予想される動作。 – marou
*特殊な意味を示すためにNoneを返す関数は、Noneやその他の値(空文字列など)がすべて条件式のFalseに評価されるため、エラーが発生しやすい* 。しかし、この特殊なケースでは、Noneは何の問題も引き起こさないようです。 – tarashypka
@tarashypka、正しいが、それはアプリケーションに依存する、それは次のステップを決定するための戻り条件として使用することができる、私はOPの要件についてテストするために何かを返すか例外を提起するかどうかはっきりしていなかったそれについても何かを追加しようとしています。 –
Tが0未満またはそれ以上の場合はカスタム例外を発生させます漢100? –
どうすれば助けますか? –
「物理的に範囲外」と「数値的に有効」とはどういう意味ですか?いくつかの例を提供し、さらに具体的にする。 –