Variables, Expressions, and Statements: Python For Informatics: Exploring Information
Variables, Expressions, and Statements: Python For Informatics: Exploring Information
Chapter 2
Unless otherwise noted, the content of this course material is licensed under a Creative Commons Attribution 3.0 License. http://creativecommons.org/licenses/by/3.0/. Copyright 2010,2011, Charles R. Severance
Constants
Fixed values such as numbers, letters, and strings are called constants - because their value does not change Numeric constants are as you expect String constants use single-quotes (') or double-quotes (") >>> print 123 123 >>> print 98.6 98.6 >>> print 'Hello world' Hello world
Variables
A variable is a named place in the memory where a programmer can store data and later retrieve the data using the variable name Programmers get to choose the names of the variables You can change the contents of a variable in a later statement
x = 12.2 y = 14 x = 100
x 12.2 100 y 14
Different:
Reserved Words
and del for is raise assert elif from lambda return break else global not try class except if or while continue exec import pass yield def nally in print
Sentences or Lines
x=2 x=x+2 print x
Variable Operator
Assignment Statements
We assign a value to a variable using the assignment statement (=) An assignment statement consists of an expression on the right hand side and a variable to store the result
x = 3.9 * x * ( 1 - x )
x 0.6
0.6 0.6
x = 3.9 * x * ( 1 - x )
0.4 Left side is an expression. Once expression is evaluated, the result is placed in (assigned to) x. 0.93
A variable is a memory location used to store a value. The value stored in a variable can be updated by replacing the old value (0.6) with a new value (0.93).
x 0.6
0.93
x = 3.9 * x * ( 1 - x )
Right side is an expression. Once expression is evaluated, the result is placed in (assigned to) the variable on the left side (i.e. x).
0.93
Numeric Expressions
Operator Operation
Addition Subtraction Multiplication Division Power Remainder
Because of the lack of mathematical symbols on computer keyboards - we use computer-speak to express the classic math operations Asterisk is multiplication Exponentiation (raise to a power) looks different from in math.
+ * / ** %
Numeric Expressions
>>> xx = 2 >>> xx = xx + 2 >>> print xx 4 >>> yy = 440 * 12 >>> print yy 5280 >>> zz = yy / 1000 >>> print zz 5 >>> jj = 23 >>> kk = jj % 5 >>> print kk 3 >>> print 4 ** 3 64 4R3 5 23 20 3
Operator
+ * / ** %
Operation
Addition Subtraction Multiplication Division Power Remainder
Order of Evaluation
When we string operators together - Python must know which one to do rst This is called operator precedence Which operator takes precedence over the others x = 1 + 2 * 3 - 4 / 5 ** 6
Parenthesis are always respected Exponentiation (raise to a power) Multiplication, Division, and Remainder Addition and Subtraction Left to right
Parenthesis Power Multiplication Addition Left to Right
1 + 2 ** 3 / 4 * 5 1+8/4*5 1+2*5 1 + 10 11
1 + 2 ** 3 / 4 * 5 1+8/4*5 1+2*5 1 + 10 11
Operator Precedence
Remember the rules top to bottom When writing code - use parenthesis
When writing code - keep mathematical expressions simple enough that they are easy to understand Break long series of mathematical operations up to make them more clear Exam Question: x = 1 + 2 * 3 - 4 / 5
Integer division truncates Floating point division produces oating point numbers
When you perform an operation where one operand is an integer and the other operand is a oating point the result is a oating point The integer is converted to a oating point before the operation >>> print 99 / 100 0 >>> print 99 / 100.0 0.99 >>> print 99.0 / 100 0.99 >>> print 1 + 2 * 3 / 4.0 - 5 -2.5 >>>
Type Matters
Python knows what type everything is Some operations are prohibited You cannot add 1 to a string We can ask Python what type something is by using the type() function.
>>> eee = 'hello ' + 'there' >>> eee = eee + 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects >>> type(eee) <type 'str'> >>> type('hello') <type 'str'> >>> type(1) <type 'int'> >>>
Integers are whole numbers: -14, -2, 0, 1, 100, 401233 Floating Point Numbers have decimal parts: -2.5 , 0.0, 98.6, 14.0
There are other number types - they are variations on oat and integer
>>> xx = 1 >>> type (xx) <type 'int'> >>> temp = 98.6 >>> type(temp) <type 'oat'> >>> type(1) <type 'int'> >>> type(1.0) <type 'oat'> >>>
Type Conversions
When you put an integer and oating point in an expression the integer is implicitly converted to a oat You can control this with the built in functions int() and oat()
>>> print oat(99) / 100 0.99 >>> i = 42 >>> type(i) <type 'int'> >>> f = oat(i) >>> print f 42.0 >>> type(f) <type 'oat'> >>> print 1 + 2 * oat(3) / 4 - 5 -2.5 >>>
String Conversions
You can also use int() and oat() to convert between strings and integers You will get an error if the string does not contain numeric characters
>>> sval = '123' >>> type(sval) <type 'str'> >>> print sval + 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' >>> ival = int(sval) >>> type(ival) <type 'int'> >>> print ival + 1 124 >>> nsv = 'hello bob' >>> niv = int(nsv) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int()
User Input
We can instruct Python to pause and read data from the user using the raw_input function The raw_input function returns a string
nam = raw_input(Who are you?) print 'Welcome', nam Who are you? Chuck Welcome Chuck
If we want to read a number from the user, we must convert it from a string to a number using a type conversion function Later we will deal with bad input data inp = raw_input(Europe oor?) usf = int(inp) + 1 print US oor, usf Europe oor? 0 US oor 1
Comments in Python
Anything after a # is ignored by Python Why comment?
Describe what is going to happen in a sequence of code Document who wrote the code or other ancillary information Turn off a line of code - perhaps temporarily
# Get the name of the le and open it name = raw_input("Enter le:") handle = open(name, "r") text = handle.read() words = text.split() # Count word frequency counts = dict() for word in words: counts[word] = counts.get(word,0) + 1 # Find the most common word bigcount = None bigword = None for word,count in counts.items(): if bigcount is None or count > bigcount: bigword = word bigcount = count # All done print bigword, bigcount
String Operations
Some operators apply to strings
+ implies concatenation * implies multiple concatenation Python knows when it is dealing with a string or a number and behaves appropriately
>>> print 'abc' + '123' abc123 >>> print 'Hi' * 5 HiHiHiHiHi >>>
Exercise
Write a program to prompt the user for hours and rate per hour to compute gross pay. Enter Hours: 35 Enter Rate: 2.75 Pay: 96.25
Summary
Type Resrved words Variables (mnemonic) Operators Operator precedence Integer Division Conversion between types User input Comments (#)