Калькулятор комиссионных с продаж

#python #automation #calculator

#python #автоматизация #калькулятор

Вопрос:

Я пытаюсь создать калькулятор комиссионных за продажу. Это роли:

 Tiers |       Amount        | Percentage applied
  1   | £84,000 - £98,000   | 7.50%
  2   | £98,000 - £112,000  | 10.00%
  3   | £112,000 - £126,000 | 12%
  4   | £126,000- £146,000  | 15.00%

minimum amount= 84k
 

Это мой код, но он не возвращает никакого значения

 from bisect import bisect

rates = [0, 7.5, 10, 12, 15]   


brackets = [84000,        # first 84k
            98000,        # next  14k
            112000,       # next  14k
            126000,       # next  14k
            146000]       # next  20k


base_tax = [0,            # 84k * 0%
            14000,        # 14k * 7.5%
            14000,        # 14k * 7.5%   14000
            14000,        # 14k * 7.5%   14000   14000
            20000]        # 20k * 15%   14000   14000   14000

income = 120000

def tax(income):
    i = bisect(brackets, income)
    if not i:
        return 0
    rate = rates[i]
    bracket = brackets[i-1]
    income_in_bracket = income - bracket
    tax_in_bracket = income_in_bracket * rate / 100
    total_tax = base_tax[i-1]   tax_in_bracket

    return total_tax
 

Как я могу реализовать автоматический калькулятор, который учитывает коэффициенты и разные шины?

Ответ №1:

  • Во-первых, вы не импортировали модуль, который содержит функцию bisect .
  • Во-вторых, чтобы вернуть значение, должна быть вызвана функция. Вы должны вызвать эту функцию. Итак, вам нужно выполнить следующие действия:

Добавьте import bisect в начале кода.

В i = bisect(brackets, income) , вы должны написать i = bisect.bisect(brackets, income) . Это способ использования функции bisect модуля bisect. Общий способ использования функции любого модуля таков module.function() .

Чтобы вывести налог, напишите print(total_tax) перед кодом возврата. Вы этого не написали.

И, наконец, вызовите функцию, добавив: tax(income)

PS Извините за этот способ, потому что код не был отформатирован должным образом. Надеюсь, вы понимаете.