如何在多个元素上使用 try except?
How do I use try except on multiple elements?
所以我试图设置几个值除以其他可能为 0 的变量,所以我决定使用 try except:
try:
p = pacific / float(a)
m = mountain / float(b)
c = central / float(c)
e = eastern / float(d)
except ZeroDivisionError:
p = 0
m = 0
c = 0
e = 0
print(p)
print(m)
print(c)
print(e)
因此,由于 a b c 和 d 都可能为零,我想创建一个实例,如果 p m c 或 e 由于 a b c 或 d 为零而最终未定义,那么我只想设置一个特定的undefined variable (p m c or e) to 0 例如,如果p m c 都划分成float,但是d为0,e变成undefined,我想return p,m,c的数值,但是e 为 0。我该如何实现?我上面的代码,如果 p m c 或 e 中只有一个变量未定义,则将 p m c 和 e 全部设置为 0。我知道我可能会蛮力这样做并尝试除了 4 个变量中的每一个,但我正在寻找一种方法来缩短这段代码。
您将需要检查每个条目,但您可以使用最少的代码来完成此操作
p = pacific / float(a) if float(a)!=0 else 0
m = mountain / float(b) if float(b)!=0 else 0
c = central / float(c) if float(c)!=0 else 0
e = eastern / float(d) if float(d)!=0 else 0
print(p)
print(m)
print(c)
print(e)
您可以编写一个函数来尝试除法和 return 默认值。
def mydiv(a, b):
try:
return a/float(b)
except ZeroDivisionError:
return 0
p = mydiv(pacific, float(a))
m = mydiv(mountain, float(b))
c = mydiv(central, float(c))
e = mydiv(eastern, float(d))
您最好使用 numpy 数组,它具有很好的错误处理能力并且涉及的代码少得多。除以零产生无穷大,很容易用零代替。
import numpy as np
pmce = np.array([1,2,3,4]) # numerator
abcd = np.array([5,6,0,8]) # denominator
with np.errstate(divide='ignore'):
pmce_new = pmce/abcd
pmce_new[np.isinf(pmce_new)] = 0
print(pmce_new)
输出:
[0.2 0.33333333 0. 0.5 ]
所以我试图设置几个值除以其他可能为 0 的变量,所以我决定使用 try except:
try:
p = pacific / float(a)
m = mountain / float(b)
c = central / float(c)
e = eastern / float(d)
except ZeroDivisionError:
p = 0
m = 0
c = 0
e = 0
print(p)
print(m)
print(c)
print(e)
因此,由于 a b c 和 d 都可能为零,我想创建一个实例,如果 p m c 或 e 由于 a b c 或 d 为零而最终未定义,那么我只想设置一个特定的undefined variable (p m c or e) to 0 例如,如果p m c 都划分成float,但是d为0,e变成undefined,我想return p,m,c的数值,但是e 为 0。我该如何实现?我上面的代码,如果 p m c 或 e 中只有一个变量未定义,则将 p m c 和 e 全部设置为 0。我知道我可能会蛮力这样做并尝试除了 4 个变量中的每一个,但我正在寻找一种方法来缩短这段代码。
您将需要检查每个条目,但您可以使用最少的代码来完成此操作
p = pacific / float(a) if float(a)!=0 else 0
m = mountain / float(b) if float(b)!=0 else 0
c = central / float(c) if float(c)!=0 else 0
e = eastern / float(d) if float(d)!=0 else 0
print(p)
print(m)
print(c)
print(e)
您可以编写一个函数来尝试除法和 return 默认值。
def mydiv(a, b):
try:
return a/float(b)
except ZeroDivisionError:
return 0
p = mydiv(pacific, float(a))
m = mydiv(mountain, float(b))
c = mydiv(central, float(c))
e = mydiv(eastern, float(d))
您最好使用 numpy 数组,它具有很好的错误处理能力并且涉及的代码少得多。除以零产生无穷大,很容易用零代替。
import numpy as np
pmce = np.array([1,2,3,4]) # numerator
abcd = np.array([5,6,0,8]) # denominator
with np.errstate(divide='ignore'):
pmce_new = pmce/abcd
pmce_new[np.isinf(pmce_new)] = 0
print(pmce_new)
输出:
[0.2 0.33333333 0. 0.5 ]