def fancy_divide(numbers, index):
try:
denom = numbers[index]
for i in range(len(numbers)):
numbers[i] /= denom
except IndexError:
fancy_divide(numbers, len(numbers) - 1)
except ZeroDivisionError:
print("-2")
else:
print("1")
finally:
print("0")
fancy_divide([0, 2, 4], 4)
我希望输出为1, 0
,但实际输出为1, 0, 0
。
答案 0 :(得分:1)
def被调用两次,所以最终被调用两次,输出为1 0 0。 因此,如果您希望输出为1 0,则可以编写如下代码,
def fancy_divide(numbers, index):
try:
denom = numbers[index]
for i in range(len(numbers)):
numbers[i] /= denom
except IndexError:
try:
fancy_divide(numbers, len(numbers) - 1)
finally:
print("0")
except ZeroDivisionError:
print("-2")
else:
print("1")
fancy_divide([0, 2, 4], 9)
但是我认为,在下面写会是正确的方法,
def fancy_divide(numbers, index):
try:
denom = numbers[index]
for i in range(len(numbers)):
numbers[i] /= denom
except IndexError:
try:
fancy_divide(numbers, len(numbers) - 1)
finally:
print("0")
except ZeroDivisionError:
print("-2")
else:
print("1")
finally:
print("0")
fancy_divide([0, 2, 4], 9)
但是这里的输出将是1 0 0 0。