Here's a Python program that implements the requirements:
def getData():
marital_status = input("Enter marital status (single/married): ")
gross_salary = float(input("Enter gross salary: "))
pension_contribution_rate = float(input("Enter percentage of gross income contributed to a pension fund: "))
if marital_status.lower() == "married":
children_under_14 = int(input("Enter number of children under age 14: "))
personal_exemption = 1500 * (2 + children_under_14)
else:
personal_exemption = 1500
return marital_status, gross_salary, pension_contribution_rate, personal_exemption
def taxAmount(marital_status, gross_salary, pension_contribution_rate, personal_exemption):
if marital_status.lower() == "married":
standard_exemption = 7000
else:
standard_exemption = 4000
taxable_income = gross_salary * (1 - pension_contribution_rate/100) - standard_exemption - personal_exemption
if taxable_income <= 15000:
tax = taxable_income * 0.15
elif taxable_income <= 40000:
tax = 2250 + (taxable_income - 15000) * 0.25
else:
tax = 8460 + (taxable_income - 40000) * 0.35
return tax
# Main program
marital_status, gross_salary, pension_contribution_rate, personal_exemption = getData()
tax = taxAmount(marital_status, gross_salary, pension_contribution_rate, personal_exemption)
print("Tax owed: $%.2f" % tax)
The getData() function prompts the user for the relevant information and returns it as a tuple. The taxAmount() function takes in the data provided by getData() and calculates the tax owed based on the provided formula. The main program calls getData() and taxAmount() and prints the result.
Note that the program assumes that the input values are valid and does not perform any error checking. It also assumes that the user enters the percentage of gross income contributed to the pension fund as a decimal number (e.g., 6% is entered as 0.06).