Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python';try-except-else';同时处理多个可能的结果_Python_Loops_Exception Handling_Try Catch - Fatal编程技术网

Python';try-except-else';同时处理多个可能的结果

Python';try-except-else';同时处理多个可能的结果,python,loops,exception-handling,try-catch,Python,Loops,Exception Handling,Try Catch,我有一个适合1D数据数组的函数,但是如果数据不合适,这个函数可能会失败,并引发运行时错误 由于我的数据是一个2D数组,如果可能的话,我想在数据的两个轴上都尝试它,否则只需在一个不会抛出错误的轴上运行它 如果我正确理解了表示法,我会尝试在第一个轴的数据上使用myfunc,如果失败,则返回第二个轴,否则返回第一个轴。例如,对于第1列或第1行: def myfunc(data): # some code to do a fit, might crash return fit_param

我有一个适合1D数据数组的函数,但是如果数据不合适,这个函数可能会失败,并引发运行时错误

由于我的数据是一个2D数组,如果可能的话,我想在数据的两个轴上都尝试它,否则只需在一个不会抛出错误的轴上运行它

如果我正确理解了表示法,我会尝试在第一个轴的数据上使用
myfunc
,如果失败,则返回第二个轴,否则返回第一个轴。例如,对于第1列或第1行:

def myfunc(data):
    # some code to do a fit, might crash
    return fit_params

data = np.random.random((5,5))

try:
    results_y = myfunc(data[0,:])

except RuntimeError:
    results_x = myfunc(data[:,0])
    # some math on the results

else:
    results_y = myfunc(data[0,:])
    # some math on the results
但是,在某些情况下,它可以在两种情况下都工作,不会出现错误,并且可以查看/比较两种结果。我如何编写这个循环,使它在可能的情况下同时执行这两个循环,否则只执行一个有效的循环?我想要么把它全部放在一个
if
循环中,要么有多个
try
语句


提前谢谢

只需两个独立的
尝试..除了
条款

try:
    results_y = myfunc(data[0,:])
except RuntimeError:
    pass

try:
    results_x = myfunc(data[:,0])
except RuntimeError:
    pass

然而,没有必要这样做。这完全取决于数组的维数,因此最好检查
my\u数组.ndim
my\u数组.shape
以决定要做什么。

只需两个独立的
try..except
子句

try:
    results_y = myfunc(data[0,:])
except RuntimeError:
    pass

try:
    results_x = myfunc(data[:,0])
except RuntimeError:
    pass

然而,没有必要这样做。这完全取决于数组的维数,因此最好检查
my\u数组.ndim
my\u数组.shape
来决定要做什么。

这里的
else
块中似乎没有任何点。如果没有异常,则执行它,但只是重复在
try
块中执行的操作;如果没有异常,那么
results\u y
已经存在。这里的
else
块中似乎没有任何点。如果没有异常,则执行它,但只是重复在
try
块中执行的操作;如果没有例外,那么
results\u y
已经存在。谢谢你的回答,我想得太多了!谢谢你的回答,我想得太多了!