2016-08-02 3 views
2

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

salary = float(input("Enter your salary to taxes calculation: ")) 
base = salary 
taxes = 0 

if base > 3000: 
    taxes = taxes + ((base - 3000) * 0.35) 
    base = 3000 
if base > 1000: 
    taxes = taxes + ((base - 1000) * 0.20) 

Моя проблема в том, когда вход больше, чем 3000, например, если я запускаю код с зарплатой 5000, то результат будет будет 1100. Но когда я делаю «ту же» математику в калькуляторе, результат равен 700, поэтому я потерялся здесь, может кто-нибудь объяснить это, пожалуйста?

+0

Это все, что вы показываете выше? – MaxZoom

+0

Поддерживает ли ваш калькулятор круглые скобки, и вы их использовали? – user2357112

+0

Да, у него просто есть распечатка в конце, чтобы показать зарплату и налоги – Zetto

ответ

3

Хорошо, давайте пройдем через это с вашим примером 5000

salary = float(input("Enter your salary to taxes calculation: ")) 
base = salary 
# base = 5000 
taxes = 0 

if base > 3000: # base is larger than 3000, so we enter the if statement 
    taxes = taxes + ((base - 3000) * 0.35) 
    # taxes = 0 + ((5000 - 3000) * 0.35) 
    # taxes = 0 + 700 
    # taxes = 700 
    base = 3000 # base is set to 3000 
if base > 1000: # base was set to 3000 in the line above, so we enter the if statement 
    taxes = taxes + ((base - 1000) * 0.20) 
    # taxes = 700 + ((3000 - 1000) * 0.20), remember taxes is already 700 from above 
    # taxes = 700 + 400 
    # taxes = 1100 

после него это два оператора if, а не if и else, мы оцениваем оба оператора, когда base установлено больше 3000. Надеюсь, это поможет.

5

Обратите внимание, что в случае оклада 5000 контроль будет передан в оба оператора if. Так получается, что 700 из первых, а 400 из вторых, поэтому ответ составляет 700 + 400. Это также имеет смысл, так как расчет налогов в основном разделен в скобках и не является равным процентом по зарплате.

1

Протекает на второй функции

так, если я суб- в цифрах:

Salary = 5000 
base = 5000 
taxes = 0 

if 5000 > 3000: 
    taxes = 0 + ((5000- 3000) * 0.35) # = 700 
    base = 3000 
if 3000 > 1000: 
    taxes = 700 + ((3000 - 1000) * 0.20) # = 1100 
0

Это экономичное уравнение, которое рассчитывает налог за каждую часть заработной платы. процедура будет следующим образом:

  • Для суммы, превышающей 3000 расчет 35% налога для этой части зарплаты.
  • На сумму более 1000 (и менее 3000) рассчитать налог на 20% за эту часть заработной платы.

Налог на заработную плату будет суммировать эти налоги.

Смежные вопросы