Функции Elif и Range для расчета прогрессивного налогообложения в процентах - PullRequest
0 голосов
/ 18 февраля 2020

Я создаю программу, в которой пользователь вводит годовой доход в качестве входного значения, а ставка подоходного налога будет масштабироваться в соответствии с процентными пороговыми значениями (см. Рисунок в конце этого поста для определения диапазона доходов против процентных порогов). Например, из 100 000 евро доход 50% будет выплачиваться из доходов, превышающих 60001 (как в таблице ниже). 40% между 45000-60000, 20% между 15000-30000 и 10% между 0-10000. Уравнение должно go что-то вроде 0,5 * 40 000 + 0,4 * 150 00 + 0,3 * 15 000 + 0,2 * 15 000 + 0,1 * 10000 = 35 000.

Выходные данные должны быть примерно такими: : 100000 Вы платите налоги 35000.0 евро. Ваш налоговый процент составляет: 35,0%. Дайте свой годовой доход: 54000. Вы платите налоги 12600.0 евро Ваш процент налогообложения составляет: 23,333333333333332%.

Это то, что я пробовал:

yearly = int(input("Tell your yearly income:"))
one = 0.1
two = 0.2
three = 0.3
four = 0.4
five = 0.5 
if yearly in range(1,15000):
    print("You pay taxes in total:",yearly*one)
if yearly in range(15001,30000):
    print("You pay taxes in total:",yearly*two)
if yearly in range(30001,45000):
    print("You pay taxes in total:",yearly*three)
if yearly in range(45001,60000):
    print("You pay taxes in total:",yearly*four)
if yearly > 60000:
    print("You pay taxes in total:",yearly*five)

Процент налога не масштабируется так, как мне бы хотелось. Я предполагаю, что это должно быть сделано с помощью функций elif и range. Может быть, помогут минимальное и максимальное значения процентов, но я не знаю, как превратить выходные данные в проценты. Пожалуйста, обратите внимание, что у меня могут быть некоторые проблемы с пониманием, математика не самая сильная моя игра, но я приложил все усилия, чтобы описать проблему ...

Вот таблица подсчета доходов в сравнении с используемым процентом налогообложения. Процент доходов от налогообложения

1 Ответ

0 голосов
/ 18 февраля 2020

Оптимизированный способ:

Вот более оптимизированный способ сделать это (см. Ниже неоптимизированный способ с перечислением). Я храню проценты и пороговые значения в списках, и taxes увеличивается в течение всего времени oop:

yearly = int(input("Tell your yearly income:"))

percents = [0.1, 0.2, 0.3, 0.4, 0.5]
thresholds = [0, 15000, 30000, 45000, 60000]

taxes = 0
for i in range(len(percents)):
    if i == len(thresholds) - 1 or yearly < thresholds[i+1]:
        taxes += (yearly - thresholds[i]) * percents[i]
        break
    else:
        taxes += (thresholds[i+1] - thresholds[i]) * percents[i]

print("You pay {} taxes".format(taxes))
print("Your taxation percent is: {}%".format(taxes/yearly*100))

Примеры выходных данных:

# Test 1
Tell your yearly income:100000
You pay 35000.0 taxes
Your taxation percent is: 35.0%

# Test 2
Tell your yearly income:54000
You pay 12600.0 taxes
Your taxation percent is: 23.333333333333332%

Неоптимизированный способ :

Здесь ключ должен иметь переменную temp (инициализированную с temp = yearly, которая уменьшается при применении налогов:

yearly = int(input("Tell your yearly income:"))

one = 0.1
two = 0.2
three = 0.3
four = 0.4
five = 0.5

diff = 15000

temp = yearly
taxes = 0
if yearly in range(1,15000):
    taxes += temp * one
else:
    taxes += diff * one
    temp -= diff
if yearly in range(15001,30000):
    taxes += temp * two
else:
    taxes += diff * two
    temp -= diff
if yearly in range(30001,45000):
    taxes += temp * three
else:
    taxes += diff * three
    temp -= diff
if yearly in range(45001,60000):
    taxes += temp * four
else:
    taxes += diff * four
    temp -= diff
if yearly > 60000:
    taxes += temp * five

print("You pay {} taxes".format(taxes))
print("Your taxation percent is: {}%".format(taxes/yearly*100))
...