没有很多尝试/例外,有没有办法做到这一点? 我有30多个分区,并且所有try / except的代码都很长
def test():
a = 12
b = 0
c = 43
d = 0
try:
w = a / b
except Exception:
w = 'cant'
try:
x = b / c
except Exception:
x = 'cant'
try:
y = c / d
except Exception:
y = 'cant'
print(w)
print(x)
print(y)
答案 0 :(得分:2)
当您要使用不同的值执行三次相同的操作时,请将其分解为一个函数。请注意,您无需在此处捕获错误。您可以在执行此操作之前使用if
/ else
来测试该部门是否可以工作:
def divide_or_cant(p, q):
if q == 0:
return 'cant'
else:
return p / q
def test():
a = 12
b = 0
c = 43
d = 0
w = divide_or_cant(a, b)
x = divide_or_cant(b, c)
y = divide_or_cant(c, d)
print(w)
print(x)
print(y)
如果要执行此操作 30次,那么最好将数据放入列表并编写循环:
def test():
nums = [12, 0, 43, 0]
for a, b in zip(nums, nums[1:]):
r = divide_or_cant(a, b)
print(r)
答案 1 :(得分:1)
根据您的情况,您可以定义一个函数来实现此目的:
def divide(a, b):
try:
return a / b
except:
return 'cant'
def test():
a = 12
b = 0
c = 43
d = 0
w = divide(a, b)
x = divide(b, c)
y = divide(c, d)
print(w)
print(x)
print(y)
答案 2 :(得分:1)
代码:
def try_or_error(supplier, msg):
try:
return supplier()
except:
return msg
def test():
a = 12
b = 0
c = 43
d = 0
w = try_or_error(lambda: a / b, 'cant')
x = try_or_error(lambda: b / c, 'cant')
y = try_or_error(lambda: c / d, 'cant')
print(w)
print(x)
print(y)
if __name__ == '__main__':
test()