我正在制作一个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
上代码段的链接答案 0 :(得分:3)
它没有返回任何内容,因为你不是return
。
return get_tax(income, current_level, total_tax)
。
现在它已经返回了一些东西,你需要对返回的值做一些事情。