Department of Mathematics, Computer Science, and
                Statistics
St.
                Lawrence University
Zonohedron
 

What is this object?

...

Links
Overview
Schedule
Grading Info
Class Notes

 

CS 140: Introduction to Computer Programming


Arithmetic

Performing numerical computations is one of those things that computers do well.  Python is capable of some pretty impressive feats of arithmetic.  For instance, it will tell you without a moment's hesitation that 2 multiplied by itself 1000 times is exactly

10715086071862673209484250490600018105614048117055336074437503
88370351051124936122493198378815695858127594672917553146825187
14528569231404359845775746985748039345677748242309854210746050
62371141877954182153046474983581941267398767559165543946077062
914571196477686542167660429831652624386837205668069376L
,

a 302-digit number!  By the way, you can just ignore the L at the end; it stands for "long integer."  (Really.)

Recall that there are two different numerical data types: integers and floats.  Arithmetic with floats (decimal numbers) works exactly the way you would expect.  There are occasionally issues with round-off error, but we won't need to worry about this in our course.  Just remember to put a decimal point in a number (as in 5.0) if you want to work with decimals.

We'll take a look at integer arithmetic a bit more carefully.  Addition, subtraction, and multiplication of integers hold no surprises.  Thus the program

a = 17
b = 26
print "The sum of", a, "and", b, "is", a+b
print "The difference", a, "minus", b, "is", a-b
print "The product of", a, "and", b, "is", a*b


gives as its output

The sum of 17 and 26 is 43
The difference 17 minus 26 is -9
The product of 17 and 26 is 442


But integer division ignores anything past the decimal point, which is only reasonable.  Thus Python would compute 42/6 as 7, but would reduce 17/3 to 5, and for 9/10 gives 0.  (Actually, there's some fine print for negatives—Python actually rounds down, so it would reduce -17/3 to -6 rather than -5.  We'll probably avoid these sorts of issues, though.)  Note that if you actually want to compute 5/6 as a decimal, you'll need to type 5.0/6, to which Python responds 0.8333333333333334.  (In case you're wondering why there's a 4 at the end rather than a 3, this is an example of the round-off error mentioned above.)

Python does supply a means for finding the remainder when dividing; we use the % (percent) symbol.  Thus 42%6, 17%3, and 9%10 will evaluate as 0, 2, and 9, respectively.  (The mathematically inclined may wish to verify that -17%3 is equal to 1.  But you don't need to worry about this.)  The % command comes in handy now and again.  For instance, here is a program that checks whether one number is a multiple of another.

a = input("Enter a positive integer: ")
b = input("Enter a smaller positive integer: ")
remainder = a%b
if remainder == 0:
    print "How about that", a, "is a multiple of", b
else:
    print "I'm afraid that", a, "is not a multiple of", b


The last arithmetic operation that we will mention here is exponentiation; that is, raising a number to a power.  To compute 38 squared, for instance one could type 38**2.  The double star means "second power."  Python can also compute 3 to the tenth power via 3**10, which yields 59049.  To obtain the 302-digit number at the top of this page I typed 2**1000.