Download as pdf or txt
Download as pdf or txt
You are on page 1of 36

Variables

• In Python, variables are just names


• Variables do not have data types

>>>planet = ‘Pluto’ variable value


>>>planet = 9 planet ‘Pluto’
>>> 9

integer
Variables
• In Python, variables are just names
• Variables do not have data types

>>>planet = ‘Pluto’ variable value


>>>planet = 9 planet ‘Pluto’
>>> 9

Python collects the garbage and integer


recycles the memory (e.g., ‘Pluto’)
Variables
• You must assign a value to a variable before
using it

>>>planet = ‘Sedna’
>>>
Variables
• You must assign a value to a variable before
using it

>>>planet = ‘Sedna’
>>>print plant #Note the deliberate misspelling
Variables
• You must assign a value to a variable before
using it

>>>planet = ‘Sedna’
>>>print plant #Note the deliberate misspelling
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
print plant
NameError: name 'plant' is not defined
Unlike some languages – Python does not initialize variables with a default value
Values Do Have Types
>>>string = ‘two’
>>>number = 3
>>>print string * number
Values Do Have Types
>>>string = ‘two’
>>>number = 3
>>>print string * number #Repeated concatenation

twotwotwo
>>>
Values Do Have Types
>>>string = ‘two’
>>>number = 3
>>>print string * number #Repeated concatenation

twotwotwo
>>>print string + number
‘two3’ ????
If so, then what is the result of ‘2’ + ‘3’
• Should it be the string ‘23’
• Should it be the number 5
• Should it be the string ‘5’
Values Do Have Types
>>>string = ‘two’
>>>number = 3
>>>print string * number #Repeated concatenation
twotwotwo
>>>print string + number
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
print string + number
TypeError: cannot concatenate 'str' and 'int' objects
Use Functions to Convert Between Types

>>>print int(‘2’) + 3
5
>>>
Arithmetic in Python
Addition 35 + 22 57
+
‘Py’ + ‘thon’ ‘Python’

Subtraction 35 - 22 13
-
Multiplication 3*2 6
*
‘Py’ * 2 ‘PyPy’

Division 3.0 / 2 1.5


/
3/2 1

Exponentiation 2 ** 0.5 1.41421356…


**
Comparisons
>>>3 < 5
True
>>> Comparisons turn
numbers or
strings into True
or False
Comparisons
3<5 True Less than
3 != 5 True Not equal to
3 == 5 False Equal to (Notice double ==)
3 >= 5 False Greater than or equal to
1<3<5 True Multiple comparisons

Single ‘=‘ is assignment


Double ‘==‘ is comparison
Python Lists

• A container that holds a number of other


objects in a given order
• To create a list, put a number of expressions
in square brackets:

>>> L1 = [] # This is an empty list


>>> L2 = [90,91,92] # This list has 3 integers
>>> L3 = [‘Captain America’, ‘Iron Man’, ‘Spider Man’]

• Lists do not have to be homogenous


>>>L4 = [5, ‘Spider Man’, 3.14159]
Accessing Elements in a List
• Access elements using an integer index
item = List[index]
• List indices are zero based

>>> L3 = [‘Captain America’, ‘Iron Man’, ‘Spider Man’]


>>> print ‘My favorite superhero is’ + L3[2]
My favorite superhero is Spider Man

• To get a range of elements from a list use:


>>>L3[0:2] #Get the first two items in a list
['Captain America', 'Iron Man']

>>>len(L3) #Returns the number of elements in a list


3

>>L3[-1] #Get the last item in a list


'Spider Man'
Dictionaries
• A collection of pairs (or items) where each pair
has a key and a value
>>> D = {‘Jeff’: ‘a’, ‘Steve’:‘b’, ‘Jon’:‘c’}
>>> D[‘Jeff’]
‘a’
>>> D[‘Steve’] = ‘d’ #update value for key ‘Steve’
>>> D[‘Steve’]
‘d’
Behold the Power of Programming!
• The real power of programming comes from
the ability to perform:

– Selection – the ability to do one thing rather than


another

– Repetition – the ability to automatically do


something many times
Selection – if, elif, and else
moons = 3
if moons < 0: Always starts with if and a condition

print ‘less’ There can be 0 or more elif clauses

elif moons == 0: The else clause has no condition


and is executed if nothing else is
print ‘equal’ done

else: Tests are always tried in order

print ‘greater’ Since moons is not less than 0 or


equal to zero, neither of the first
two blocks is executed
Selection – if, elif, and else
>>>moons = 3
>>>if moons < 0:
print ‘less’
elif moons == 0:
print ‘equal’
else:
print ‘greater’

greater
>>>
Indentation
• Python uses indentation to show which
statements are in an if, elif, else statement

• Any amount of indentation will work, but the


standard is 4 spaces (and you must be
consistent)
Repetition - Loops
• Simplest form of repetition is the while loop

numMoons = 3
while numMoons > 0:
print numMoons
numMoons -= 1
Repetition - Loops
• Simplest form of repetition is the while loop

numMoons = 3
while numMoons > 0: While this is true
print numMoons
Do this
numMoons -= 1
Repetition - Loops
>>>numMoons = 3
>>>while numMoons > 0:
print numMoons
numMoons -= 1
3
2
1
>>>
Combine Looping and Selection
numMoons = 0
while numMoons < 5:
if numMoons > 0:
print numMoons
numMoons += 1
Combine Looping and Selection
>>>numMoons = 0
>>>while numMoons < 5:
if numMoons > 0:
print numMoons
numMoons += 1
1
2
3
4
>>>
Saving and Executing Code
• Writing and executing complex code is too
difficult to do line by line at the command line
• As soon as you close the Python interpreter,
all of your work is gone…
• Instead
– Write code using a text editor
– Save the code as a text file with a “.py” extension
– Execute code in the file from the command line
Using a Script File
• Start a new Python text file in Idle. You can write Python in
Notepad, but if you use a formal editor, you get color coding!
• Click “File/New File”. This will open the script editor.
• Write your script and save it as a “*.py” file. Then click
“Run/Run Module” to test it….
Results appear in the “shell” window.
Modules
• You may want to reuse a function that you have
written in multiple scripts without copying the
definition into each one
• Save the function(s) as a module
• Import the module into other scripts
• It’s like an “extension” or “plug-in”

• In the interpreter type, help(‘modules’) to


get a list of all currently installed modules.
Import a Module into a Script
Some Python Resources
• Python 2.7.8 documentation:
https://docs.python.org/2/index.html
• Software Carpentry: http://software-
carpentry.org/index.html
• Python in Hydrology:
http://www.greenteapress.com/pythonhydro/
pythonhydro.html

And many others…


Coding Challenge
Get the Data

http://waterdata.usgs.gov/nwis/uv?cb_00060=on&forma
t=rdb&site_no=10109000&period=&begin_date=2014-
08-18&end_date=2014-08-25
Coding Challenge
1. Divide into small groups of no more than 3-4 people
2. Choose a real-time streamflow gage from the USGS
that you are interested in. It could be a nearby gage
or one that is near and dear to your heart. To see an
interactive map of gage locations, go to:
http://maps.waterdata.usgs.gov/mapper/index.html
3. Create a Python script that does the following:
a. Download the most recent data from the USGS website
b. Read the file
c. Extract the most recent streamflow value from the file
d. Print the most recent streamflow value and the date at
which it occurred to the screen
Example Solution

“The most recent streamflow value for


USGS Gage 10109000 was 109 cfs on
2014-08-25 3:15.”
Some Hints
• Develop your solution as a script so you can save it as a
file.
• The USGS website returns the data as a file, but you
have to request it using a URL in your code. The
Python module called “urllib2” is one option for
downloading a file using a URL.
• The data are returned in a text file where each new line
represents a new date/time and data value. The
Python module called “re” is one option for splitting a
string using delimiters such as tabs or new-line
characters.
• Also – check out the Python “split” method
Credits
• Some instructional materials adapted from
the Software Carpentry website
http://software-carpentry.org
Copyright © Software Carpentry

Support:
EPS 1135482

You might also like