- Cal State LA - Instructional Web Server

Download Report

Transcript - Cal State LA - Instructional Web Server

An Introduction to Python – Part II
Dr. Nancy Warter-Perez
Overview

References





Solution to Programming Workshop #1
If tests (PP Ch1, LP Ch 9)
Loops (PP Ch1, LP Ch 10)




Python Programming for the Absolute Beginner (PP)
Learning Python (LP)
for
while
Example amino acid search program
Programming Workshop #2
Introduction to Python – Part II
2
Solution to Programming Workshop 1

#
#
#
#
#
Write a Python program to compute the hydrophobicity of an
amino acid
Program to compute the hydrophobicity of an amino acid
(solution only includes first 3 amino acids)
Written by: Prof. Warter-Perez
Date created: April 15, 2004
Last modified:
hydro = {"A":1.8,"C":2.5,"D":-3.5}
aa = raw_input ("Please enter amino acid: ")
print "The hydrophobicity of %s is %f."% (aa, hydro[aa])
Introduction to Python – Part II
3
Make solution case insensitive
# Program to compute the hydrophobicity of an amino acid
# Written by: Prof. Warter-Perez
# Date created: April 15, 2004
# Last modified: April 20, 2004 - made script case insensitive for
# amino acids
hydro = {"A":1.8,"C":2.5,"D":-3.5}
aa = raw_input ("Please enter amino acid: ")
aa = aa.upper()
print "The hydrophobicity of %s is %f."% (aa, hydro[aa])
Introduction to Python – Part II
4
Python Basics - Comments

Python comments
# line comment

Header comments
#Description of program
#Written by:
#Date created:
#Last Modified:
Introduction to Python – Part II
5
Python Basics - Variables

Python variables are not “declared”.


To assign a variable, just type: identifier=literal
Identifiers

Have the following restrictions:





Must start with a letter or underscore (_)
Case sensitive
Must consist of only letters, numbers or underscore
Must not be a reserved word (LP pg 137)
Have the following conventions:


All uppercase letters are used for constants
Variable names are meaningful – thus, often multi-word



Convention 1: alignment_sequence
Convention 2: AlignmentSequence
Python specific conventions:

Avoid _X, __X__, __X, _, (LP pg 138)
Introduction to Python – Part II
6
Numbers

Numbers

Normal Integers –represent whole numbers
Ex: 3, -7, 123, 76

Long Integers – unlimited size
Ex: 9999999999999999999999L

Floating-point – represent numbers with decimal
places
Ex: 1.2, 3.14159,3.14e-10

Octal and hexadecimal numbers
Ex: O177, 0x9ff, Oxff

Complex numbers
Ex: 3+4j, 3.0+4.0j, 3J
Introduction to Python – Part II
7
Python Basics – arithmetic operations
Operators
Example
y=5; z=3
+ add
x=y+z x
- subract
x=y–z x
* multiply
x=y*z x
/ divide
x=y/z x
% modulus/remainder x = y % z x
Introduction to Python – Part II
=
=
=
=
=
8
2
15
1
2
8
Python Basics – arithmetic operations
Operators
<< shift left
>> shift right
** raise to power
Example
y=5; z=3
x = y << 1 x = 10
x = y >> 2 x = 1
x = y ** z x = 125
Introduction to Python – Part II
9
Python Basics – Relational and
Logical Operators

Relational operators
==
!=, <>
>
>=
<
<=
equal
not equal
greater than
greater than or
equal
less than
less than or equal

Logical operators
and
or
not
Introduction to Python – Part II
and
or
not
10
Python Basics – Relational
Operators

Assume x = 1, y = 4, z = 14
Expression
Value
Interpretation
x<y+z
1
True
y == 2 * x + 3
0
False
z <= x + y
0
False
z>x
1
True
x != y
1
True
Introduction to Python – Part II
11
Python Basics – Logical
Operators

Assume x = 1, y = 4, z = 14
Expression
Value
Interpretation
x<=1 and y==3
0
False
x<= 1 or y==3
1
True
not (x > 1)
1
True
not x > 1
0
False
not (x<=1 or y==3)
0
False
Introduction to Python – Part II
12
Strings

Enclosed in single or double quotes
Ex: ‘Hello!’ , “Hello!”, “3.5”, “a”, ‘a’

Sequence of characters:
mystring=“hello world!”
mystring[0] -> “h”
mystring[1] -> “e”
mystring[2] -> “l”
mystring[-1] -> “!”
-1 is last,
-2 next to last, etc…
Introduction to Python – Part II
13
String operations
mystring = “Hello World!”
Expression
Value
Purpose
len(mystring)
12
number of characters in
mystring
“hello”+“world”
“helloworld”
Concatenate strings
“%s world”%“hello”
“hello world”
Format strings (like sprintf)
“world” == “hello”
“world” == “world”
0 or False
1 or True
Test for equality
“a” < “b”
“b” < “a”
1 or True
0 or False
Alphabetical ordering
Introduction to Python – Part II
14
Strings (2)

slicing:
mystring = “spoon!”
mystring[2:] -> “oon!”
mystring[:3] -> “spo” #note last element is never included!
mystring[1:3]-> “po”

Many useful built-in functions


mystring.upper() -> “SPOON!”
mystring.replace(‘o’, ‘O’) -> “spOOn!”
Introduction to Python – Part II
15
Strings (3)

“%” operator:
sort of “fill in the blanks” operation:
mystring=“%s has %d marbles” % (“John”,35)
“blanks”
mystring -> “John has 35 marbles”



%s
%d,%i
%f
Values to put
in blanks
replace with string
replace with integer
replace with float
Introduction to Python – Part II
16
Lists
mylist=[“a”,”b”,3.58,”d”,4,0]
mylist[0]
mylist[2]
a
3.58
Indexing
mylist[-1]
mylist[-2]
0
4
Negative indexing
(counts from end)
mylist[1:4]
[“b”,3.58,”d”]
Slicing (like strings)
“b” in mylist
“e” not in mylist
1 or True
1 or True
mylist.append(8)
[“a”,”b”,3.58,”d”,4,0,8]
Introduction to Python – Part II
Add to end of list
17
Tuples

Tuples – sequence of values
like lists, but cannot be changed after it
is created
mytuple=(1,”a”,”bc”,3,87.2)
mytuple[2] -> “bc”
mytuple[1]=“3” Error!

Used when you want to pass several variables
around at once
Introduction to Python – Part II
18
Dictionaries

Dictionaries – map ‘keys’ to ‘values’



like lists, but indices can be of any type
Also, keys are in no particular order
Eg:
mydict={‘b’:3, ’a’:4, 75:2.85}
mydict[‘b’] -> 3
mydict[75] -> 2.85
mydict[‘a’] -> 4
Introduction to Python – Part II
19
Dictionaries
mydict={“r”:1,”g”:2,”y”:3.5,8.5:8,9:”nine”}
mydict.keys()
['y', 8.5, 'r', 'g', 9]
List of the keys
mydict.values()
[3.5, 8, 1, 2, 'nine']
List of the values
mydict[“y”]
3.5
Value lookup
mydict.has_key(“r”)
True or 1
Check for keys
mydict.update({“a”:75}) {8.5: 8, 'a': 75, 'r': 1, 'g':
2, 'y': 3.5, 9: 'nine'}
Introduction to Python – Part II
Add pairs to
dictionary
20
Dictionaries – other
considerations

Slicing not allowed
Referencing invalid key is an error:

>>> mydict={8.5: 8, 'a': 75, 'r': 1, 'g': 2, 'y':
3.5, 9: 'nine'}
>>> mydict["red"]
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
KeyError: 'red‘
Use mydict.get(“red”) instead, it returns None if
key is not found
Introduction to Python – Part II
21
Input/Output



Function raw_input() designed to read a line of input
from the user
1 optional argument: string to prompt user
If int or float desired, simply convert string:
int(mystring)->convert to int (if possible)
float(mystring)->convert to float (if possible)
>>> mystr=raw_input("Enter a string:")
Enter a string:Hello World!
>>> mystr
'Hello World!'
Introduction to Python – Part II
22
Output

Function print


Prints each
argument, followed
by space
After all arguments,
prints newline


Put comma after last
arg to prevent
newline
“add” strings to avoid
spaces
print “a”,”b”,”c”
abc
Newline!
print “a”,”b”,”c”,
No
abc
Newline!
print “a”+”b”+”c”
No
abc
spaces!
Introduction to Python – Part II
23
Output Example
>>> print "hello","world";print "hello","again"
hello world
hello again
>>> print "hello","world",;print "hello","again"
hello world hello again
>>> print "hello %s world" % "cold and cruel"
hello cold and cruel world
>>> print "hello","cold"+ " " + "and","cruel","world"
hello cold and cruel world
Introduction to Python – Part II
24
Python Basics – Relational and
Logical Operators

Relational operators
==
!=
>
>=
<
<=
equal
not equal
greater than
greater than or
equal
less than
less than or equal

Logical operators
and
or
not
Introduction to Python – Part II
and
or
not
25
if Statement

if expression:
action
Example:
a1 = 'A‘; a2 = 'C';
match = 0;
if (a1 == a2) :
match+=1;
Introduction to Python – Part II
26
if-elif-else Statement

if expression:
action 1
elif expression:
action 2
else :
action 3
Example:
a1 = 'A‘; a2 = 'C';
match = 0; gap = 0;
if (a1 == a2) :
match+=1;
elif (a1 > a2):
else:
gap+=1;
Introduction to Python – Part II
27
for Statement
for var in list:


action
Sets var to each item in
list and performs action
range() function
generates lists of
numbers:
range (5) -> [0,1,2,3,4]
Example
mylist=[“hello”,”hi”,”hey”,”!”];
for i in mylist:
print i
Iteration 1 prints: hello
Iteration 2 prints: hi
Iteration 3 prints: hey
Iteration 4 prints: !
Introduction to Python – Part II
28
while Statement
while expression:
action
Example
x = 0;
while x != 3:
x = x + 1/ 2
Infinite loop!
Iteration
Iteration
Iteration
Iteration
Introduction to Python – Part II
1:
2:
3:
4:
x=0+1=1
x=1+1=2
x=2+1=3
don’t exec
29
Example: Amino Acid Search

Write a program to count the number of
occurrences of an amino acid in a
sequence.

The program should prompt the user for



A sequence of amino acids (seq)
The search amino acid (aa)
The program should display the number of
times the search amino acid (aa) occurred
in the sequence (seq)
Introduction to Python – Part II
30
Example: Amino Acid Search (2)
#this program will calculate the number of occurrences of an amino
acid in a
#sequence
#by Bryce Ready
done=0
while (not done):
sequence=raw_input("Please enter a sequence:");
aa=raw_input("Please enter the amino acid to look for:");
Introduction to Python – Part II
31
Example: Amino Acid Search (3)
#compute the number of occurrences using for loop
cnt=0
for i in sequence:
if i == aa:
cnt+=1
if cnt == 1:
print "%s occurs in that sequence once" % aa
else:
print "%s occurs in that sequence %d times" % (aa, cnt)
answer=raw_input("try again? [yn]")
if answer == "n" or answer == "N":
done = 1
Introduction to Python – Part II
32
Programming Workshop #2

Write a sliding window program to compute
the %GC in a sequence of nucleotides.

The program should prompt the user for


The DNA sequence
The window size (assume the window increment is 1)
Introduction to Python – Part II
33