<pre><code>import math
class Counter(object): # mutable object is needed to acces it from tuple
def __init__(self, start_value=0):
self.value = start_value
def __str__(self):
return str(self.value)
response = "yes"
over100 = Counter()
btwn50to100 = Counter()
btwn25to50 = Counter()
below25 = Counter()
totalFederalTax = 0
STATE_TAX_RATE = 0.05
TAX_MAP = {(0, 25000): (0.15, below25),
(25000, 50000): (0.15, btwn25to50),
(50000, 100000): (0.15, btwn50to100),
(100000, math.inf): (0.20, over100)}
def calc_federal_tax(salary):
for compartments, values in TAX_MAP.items():
if compartments[0] <= salary < compartments[1]:
values[1].value += 1
return values[0]
while response.lower() == "yes":
salary = input("Please one persons salary: ")
federalTaxRate = calc_federal_tax(salary)
federalTax = int(salary * federalTaxRate)
stateTax = int(salary * STATE_TAX_RATE)
netSalary = int(salary - federalTax - stateTax)
totalFederalTax += federalTax
print("Your federal tax is :" + str(federalTax))
print("Your state tax is :" + str(stateTax))
print("Your net salary is: " + str(netSalary))
response = input("Would you like to continue?(yes/no): ")
print("*****")
print("The number of pepole who earned more than 100000 is: " + str(over100))
print("The number of pepole who earned More than or equal to 50000 and less than 100000 is: " + str(btwn50to100))
print("The number of pepole who earned More than or equal to 25000 and less than 50000 is: " + str(btwn25to50))
print("The number of pepole who earned Below 25000 is: " + str(below25))
print("The total federal tax is: " + str(totalFederalTax))
</code></pre>