为什么会打印1,0,0而不是1,0?

时间:2019-04-07 07:04:46

标签: python python-3.x

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

1 个答案:

答案 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。