Python在递归调用

时间:2016-09-13 18:26:50

标签: python recursion return-value

我正在制作一个python脚本,根据收入计算个人税。

税收制度要求人们根据他们的富裕程度或赚取的收入来征税。

第一个 1000 不征税,
下一个 9000 的税率为10% 下一个 10200 的税率为15% 下一个 10550 的税率为20% 下一个 19250 的税率为25% 在上述任何事项之后留下的任何东西都要征收30%的税。

我已经运行并运行了代码,并且我能够使用递归来使代码工作以遵循上述条件。

但是,我在返回total_tax时遇到问题,该total_tax应该是函数的返回值。

例如, 20500 的收入应征税 2490.0

以下是我的代码段:

def get_tax(income, current_level=0, total_tax=0,):
    level = [0, 0.1, 0.15, 0.2, 0.25, 0.3]
    amount = [1000, 9000, 10200, 10550, 19250, income]

    if income > 0 and current_level <=5:
        if income < amount[current_level]:
            this_tax = ( income * level[current_level] )
            income -= income

        else:    
            this_tax = ( level[current_level] * amount[current_level] )
            income -= amount[current_level]
            current_level += 1

        total_tax += this_tax
        print total_tax    
        get_tax(income, current_level, total_tax)

    else:
        final =  total_tax
        return final

get_tax(20500)

正如您从代码片段中看到的那样,当我将return语句放在else块中时它不起作用,我也尝试在没有else块的情况下执行它,但它仍然不起作用。

以下是Repl.it

上代码段的链接

1 个答案:

答案 0 :(得分:3)

它没有返回任何内容,因为你不是return

return get_tax(income, current_level, total_tax)

现在它已经返回了一些东西,你需要对返回的值做一些事情。