如何处理数值有效但物理上超出范围的函数?
原因是,如果剩下物理上正确的范围,我希望我的程序告诉我并停止。
我考虑过使用ValueError异常进行此错误处理。
示例:
def return_approximation(T):
#return T only if it is inbetween 0 < T < 100
return T
答案 0 :(得分:4)
Python有assert
- 这种参数限制的声明。
def return_approximation(T):
assert 0 < T < 100, "Argument 'T' out of range"
return T
答案 1 :(得分:0)
我不确定physically
的意思。
一般来说,如果超出范围的错误是由外部数据引起的,那么您应该提出异常;如果错误来自您自己的数据,您可以使用assert
中止当前执行。
答案 2 :(得分:0)
您可以简单地将返回值限制为T(如果它符合您的条件return None
),如下所示:
>>> def f(T):
return T if 0 < T < 100 else None
>>> f(100)
>>> f(99)
99
>>> f(0)
>>> f(1)
1
编辑:有例外的解决方案:
>>> 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
答案 3 :(得分:0)
您应该引发一个名为 ValueError 的异常。
if 0 < T < 100:
raise ValueError('T must be in the exclusive range (0,100)')