[英]Return First Iteration in a Loop
I have created a calculator that determines the tax for a given income. 我创建了一个计算器,用于确定给定收入的税金。 I use a for-loop to produce this output.
我使用for循环来生成此输出。 I need to write a piece of code that extracts the top rate that applies to income, and I have been unable to do this.
我需要编写一段代码来提取适用于收入的最高税率,而我一直无法做到这一点。 Right now, my calculator just returns the last tax rate in the loop, which for my print statement is .10.
现在,我的计算器仅返回循环中的最后一个税率,对于我的打印语句,该税率为.10。 I need it to return .15 in this case.
在这种情况下,我需要它返回.15。
#import TaxReturn class
from TaxReturn import TaxReturn
#Define tax brackets for each filing status
class TaxCalculator:
def __init__(self):
self.brackets = {
'single': (
(0, 0.10),
(8025, 0.15),
(32550, 0.25),
(78850, 0.28),
(164550, 0.33),
(357700, 0.35),
(371815, 0.396)
),
'married_jointly': (
(0, 0.10),
(16050, 0.15),
(65100, 0.25),
(131450, 0.28),
(200300, 0.33),
(357700, 0.35),
(418292, 0.396)
),
'married_separately': (
(0, 0.10),
(8025, 0.15),
(32550, 0.25),
(65725, 0.28),
(100150, 0.33),
(178850, 0.35),
(209146, 0.396)
),
'head_of_household': (
(0, 0.10),
(11450, 0.15),
(43650, 0.25),
(112650, 0.28),
(182400, 0.33),
(357700, 0.35),
(395054, 0.396)
)
}
#calculate tax liability
def TaxLiability (self, taxReturn):
tax_liability = 0
top_tax_rate = 0
taxable_income = taxReturn.taxComp.taxable_inc
for bracket in reversed(self.brackets[taxReturn.taxComp.filing_status]):
if taxable_income > bracket[0]:
tax_liability += (taxable_income - bracket[0]) * bracket[1]
taxable_income -= taxable_income - bracket[0]
top_tax_rate = bracket[1]
#round tax to two decimal places
tax_liability = round(tax_liability, 2)
return tax_liability, top_tax_rate
#assign name to TaxReturn class and update TaxReturn
tr = TaxReturn()
tc = TaxCalculator()
tax_liability = tr.taxComp.inc_tax_before_credits
top_tax_rate = tr.Misc.top_tax_rate
#test statements, output income tax before credits
tr.taxComp.filing_status = 'single'
tr.taxComp.taxable_inc = 25000
print('Unit Test for Tax Calulcator Module:')
print('///////////////////////////////////////////////////////////')
print("Single: ")
print("Income tax before credits: " + str(tc.TaxLiability(tr)[0]))
print("Top marginal rate: " + str(tc.TaxLiability(tr)[1]))
Simply break
once you've found the tax rate. 找到税率后,只需
break
即可。 This allows you to escape from the loop early, once your if
condition has been met. 一旦
if
条件,您if
尽早退出循环。
def TaxLiability (self, taxReturn):
tax_liability = 0
top_tax_rate = 0
taxable_income = taxReturn.taxComp.taxable_inc
for bracket in reversed(self.brackets[taxReturn.taxComp.filing_status]):
if taxable_income > bracket[0]:
tax_liability += (taxable_income - bracket[0]) * bracket[1]
taxable_income -= taxable_income - bracket[0]
top_tax_rate = bracket[1]
break
#round tax to two decimal places
tax_liability = round(tax_liability, 2)
return tax_liability, top_tax_rate
You can also take a look at the documentation on break
clauses within a loop. 您也可以查看循环中关于
break
子句的文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.