def add(a, b):
print "ADDING %d + %d" % (a, b)
return a + b
def subtract(a, b):
print "SUBTRACTING %d - %d" % (a, b)
return a - b
def multiply(a, b):
print "MULTIPLYING %d * %d" % (a, b)
return a * b
def divide(a, b):
print "DIVIDING %d / %d" % (a, b)
return a / b
print "Let's do some math with just functions!"
age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)
print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)
print "Here is a puzzle."
# why does the line of code below work in this way?
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
print "That becomes: ", what, "Can you do it by hand?"
The first thing that the line below the comment does is to call the function divide. I’m curious, why does it do that? Is it because python actually understands the order of operations or is it because of the chain structure that this line has?
Think about it. How would you call
add()when you don’t know what the result ofsubtract()is? How would you callsubtract()if you don’t know what the result ofmultiply()is? Finally, how would you callmultiply()if you don’t know what the result ofdivide()is?As with algebraic notation, operations inside parentheses get done first. If there are parentheses inside parentheses, the innermost operations are done first. It can’t work any other way.