简体   繁体   中英

I can't understand how this (function?) works

I'm pretty new to Python and I'm going through a starter book. The code isn't written in English so I tried my best to translate, hope you guys understand. It has this exercise where we calculate the taxes from the user salary:

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)

My problem is when the input is bigger than 3000, for example, if I run the code with the salary of 5000, the result will be 1100. But when I do the 'same' math on the calculator the result is 700, so I'm lost in here, could someone explain it please?

Please note that in case of salary 5000, the control will go to both the if statements. So it comes out as 700 from first, and 400 from second, therefore answer is 700+400. This also makes sense, as tax calculation is mostly partitioned in brackets, and is not a flat percentage on salary.

Alright, let's walk through it with your example of 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

since it is two if statements and not an if and an else we evaluate both statements when base is set larger than 3000. I hope that helps.

It flows on to the second function

so if I sub in the numbers:

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

This is an economical equation which calculate tax for every part of salary. the procedure would be this:

  • For amount greater than 3000 calculate 35% tax for this portion of salary.
  • For amount greater than 1000 (and less than 3000 ) calculate 20% tax for this portion of salary.

Tax over salary would be the summation of this taxes.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM