Я знаю, в чем причина проблемы. Когда я прохожу оператор if/else, функция вызывается снова и снова задает вопрос. Со строки 10 – 35.
Я действительно не знаю, как попросить о помощи с этим. Я знаю, почему он сломан, но понятия не имею, как попросить его починить.
Вот весь код. Просто отказ от ответственности. Я очень новичок в разработке.
def tax_calc(tax: float, tax_perc: int):
tax_pay = tax * (tax_perc / 100)
return tax_pay
def income_bracket_calc(user_sal: float):
def benefit_calc():
user_child_input = input("Do you have any children? (y/n): ")
if user_child_input == "y":
return 1
elif user_child_input == "n":
return 2
else:
return 3
if user_sal <= 0:
print("Invalid input. Please Select y/n only.")
elif 1 <= user_sal <= 5000:
benefit_calc()
if benefit_calc() == 1:
print("You have qualified for free medical aid and a 100% school bursary for your children.")
print("You do not have to pay income tax.")
print()
elif benefit_calc() == 2:
print("You have qualified for free medical aid.")
print("You do not have to pay income tax.")
print()
elif benefit_calc() == 3:
print("Invalid input. Please use y/n only.")
print()
elif 5001 <= user_sal <= 10000:
print()
elif user_sal > 10000:
print()
while True:
user_income_input = float(input("Please enter your income: "))
income_bracket_calc(user_income_input)
kill_prg = input("Would you like to exit the program? y/n: ")
if kill_prg == "y":
break
elif kill_prg == "n":
continue
else:
print("Invalid input. Use y/n only.")
Я бы хотел, чтобы операторы if в «income_bracket_calc» (строки 23–38) работали без повторного вызова функции «benefit_calc()».
Как я уже сказал, я действительно не знаю, как задать этот вопрос. Или возможно ли то, что я хочу сделать
Попробуйте изменить функцию дохода_брекет_кальк следующим образом:
def income_bracket_calc(user_sal: float):
def benefit_calc():
user_child_input = input("Do you have any children? (y/n): ")
if user_child_input == "y":
return 1
elif user_child_input == "n":
return 2
else:
return 3
if user_sal <= 0:
print("Invalid input. Please Select y/n only.")
elif 1 <= user_sal <= 5000:
result = benefit_calc()
if result == 1:
print("You have qualified for free medical aid and a 100% school bursary for your children.")
print("You do not have to pay income tax.")
print()
elif result == 2:
print("You have qualified for free medical aid.")
print("You do not have to pay income tax.")
print()
elif result == 3:
print("Invalid input. Please use y/n only.")
print()
elif 5001 <= user_sal <= 10000:
print()
elif user_sal > 10000:
print()
Вы можете использовать оператор match case. Вам также понадобится один обратный вызов.