SlideShare a Scribd company logo
1 of 30
File input and output
if-then-else
Genome 559: Introduction to Statistical
and Computational Genomics
Prof. William Stafford Noble
File input and output
Opening files
• The open() command returns a file object.
<filehandle> = open(<filename>, <access type>)
• Python can read, write or append to a file:
– 'r' = read
– 'w' = write
– 'a' = append
• Create a file called “hello.txt” containing one line:
“Hello, world!”
>>> myFile = open("hello.txt", "r")
Reading the whole file
• You can read the contents of the file into a
single string.
>>> myString = myFile.read()
>>> print myString
Hello, world!
>>> Why is there a
blank line here?
Reading the whole file
• Now add a second line to your file (“How ya
doin’?”) and try again.
>>> myFile = open("hello.txt", "r")
>>> myString = myFile.read()
>>> print myString
Hello, world!
How ya doin'?
>>>
Reading the whole file
• Alternatively, you can read the file into a
list of strings.
>>> myFile = open("hello.txt", "r")
>>> myStringList = myFile.readlines()
>>> print myStringList
['Hello, world!n', "How ya doin'?n"]
>>> print myStringList[1]
How ya doin'?
Reading one line at a time
• The readlines() command puts all the lines into a list
of strings.
• The readline() command returns the next line.
>>> myFile = open("hello.txt", "r")
>>> myString = myFile.readline()
>>> print myString
Hello, world!
>>> myString = myFile.readline()
>>> print myString
How ya doin'?
>>>
Writing to a file
• Open the file for writing or appending.
>>> myFile = open("new.txt", "w")
• Use the <file>.write() method.
>>> myFile.write("This is a new filen")
>>> myFile.close()
>>> ^D
> cat new.txt
This is a new file
Always close a file after you
are finished reading from or
writing to it.
Print vs write
• <file>.write() does not automatically
append an end-of-line character.
• <file>.write() requires a string as input
>>> newFile.write("foo")
>>> newFile.write(1)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: argument 1 must be string or read-only
character buffer, not int
if-then-else
The if statement
>>> if (seq.startswith("C")):
... print "Starts with C"
...
Starts with C
>>>
• A block is a group of lines of code that belong together.
if (<test evaluates to true>):
<execute this block of code>
• In the Python interpreter, the ellipse indicates that you are inside a
block.
• Python uses indentation to keep track of blocks.
• You can use any number of spaces to indicate blocks, but you must
be consistent.
• An unindented or blank line indicates the end of a block.
The if statement
• Try doing an if statement without indentation.
>>> if (seq.startswith("C")):
... print "Starts with C"
File "<stdin>", line 2
print "Starts with C"
^
IndentationError: expected an
indented block
Multiline blocks
• Try doing an if statement with multiple lines in
the block.
>>> if (seq.startswith("C")):
... print "Starts with C"
... print "All right by me!"
...
Starts with C
All right by me!
Multiline blocks
• What happens if you don’t use the same number
of spaces to indent the block?
>>> if (seq.startswith("C")):
... print "Starts with C"
... print "All right by me!"
File "<stdin>", line 4
print "All right by me!"
^
SyntaxError: invalid syntax
Comparison operators
• Boolean: and, or, not
• Numeric: < , > , ==, !=, <>, >=,
<=
• String: in
Examples
seq = 'CAGGT'
>>> if ('C' == seq[0]):
... print 'C is first'
...
C is first
>>> if ('CA' in seq):
... print 'CA in', seq
...
CA in CAGGT
>>> if (('CA' in seq) and ('CG' in seq)):
... print "Both there!"
...
>>>
Beware!
= versus ==
• Single equal assigns a variable
name.
>>> myString == "foo"
Traceback (most recent
call last):
File "<stdin>", line 1,
in ?
NameError: name
'myString' is not
defined
>>> myString = "foo"
>>> myString == "foo"
True
• Double equal tests for equality.
>>> if (myString = "foo"):
File "<stdin>", line 1
if (myString = "foo"):
^
SyntaxError: invalid syntax
>>> if (myString == "foo"):
... print "Yes!"
...
Yes!
if-else statements
if <test1>:
<statement>
else:
<statement>
• The else block executes only if <test1> is false.
>>> if (seq.startswith('T')):
... print 'T start'
... else:
... print 'starts with', seq[0]
...
starts with C
>>>
Evaluates to
FALSE: no print.
if-elif-else
if <test1>:
<statement>
elif <test2>:
<statement>
else:
<statement>
• elif block executes if <test1> is false and
then performs a second <test2>
Example
>>> base = 'C'
>>> if (base == 'A'):
... print "adenine"
... elif (base == 'C'):
... print "cytosine"
... elif (base == 'G'):
... print "guanine"
... elif (base == 'T'):
... print "thymine"
... else:
... print "Invalid base!“
...
cytosine
• <file> = open(<filename>, r|w|a>
• <string> = <file>.read()
• <string> = <file>.readline()
• <string list> = <file>.readlines()
• <file>.write(<string>)
• <file>.close()
if <test1>:
<statement>
elif <test2>:
<statement>
else:
<statement>
• Boolean: and, or,
not
• Numeric: < , > , ==,
!=, <>, >=, <=
• String: in, not in
Sample problem #1
• Write a program read-first-line.py
that takes a file name from the command
line, opens the file, reads the first line, and
prints the result to the screen.
> python read-first-line.py hello.txt
Hello, world!
>
Solution #1
import sys
filename = sys.argv[1]
myFile = open(filename, "r")
firstLine = myFile.readline()
myFile.close()
print firstLine
Sample problem #2
• Modify your program to print the first line
without an extra carriage return.
> python read-first-line.py hello.txt
Hello, world!
>
Solution #2
import sys
filename = sys.argv[1]
myFile = open(filename, "r")
firstLine = myFile.readline()
firstLine = firstLine[:-1]
myFile.close()
print firstLine
Sample problem #3
• Write a program add-two-numbers.py
that reads one integer from the first line of
one file and a second integer from the first
line of a second file and then prints their
sum.
> add-two-numbers.py nine.txt four.txt
9 + 4 = 13
>
Solution #3
import sys
fileOne = open(sys.argv[1], "r")
valueOne = int(fileOne.readline())
fileTwo = open(sys.argv[2], "r")
valueTwo = int(fileTwo.readline())
print valueOne, "+", valueTwo, "=", valueOne + valueTwo
Sample problem #4
• Write a program find-base.py that takes as
input a DNA sequence and a nucleotide. The
program should print the number of times the
nucleotide occurs in the sequence, or a
message saying it’s not there.
> python find-base.py A GTAGCTA
A occurs at position 3
> python find-base.py A GTGCT
A does not occur at all
Hint: S.find('G') returns -1 if it can't find the requested sequence.
Solution #4
import sys
base = sys.argv[1]
sequence = sys.argv[2]
position = sequence.find(base)
if (position == -1):
print base, "does not occur at all"
else:
print base, "occurs at position", position
Reading
• Chapter 13 of
Learning Python (3rd
edition) by Lutz.

More Related Content

What's hot

Python tutorialfeb152012
Python tutorialfeb152012Python tutorialfeb152012
Python tutorialfeb152012
Shani729
 
Python tutorial
Python tutorialPython tutorial
Python tutorial
Rajiv Risi
 

What's hot (20)

Biopython
BiopythonBiopython
Biopython
 
Testing in Python: doctest and unittest
Testing in Python: doctest and unittestTesting in Python: doctest and unittest
Testing in Python: doctest and unittest
 
Testing in Python: doctest and unittest (Updated)
Testing in Python: doctest and unittest (Updated)Testing in Python: doctest and unittest (Updated)
Testing in Python: doctest and unittest (Updated)
 
Python tutorialfeb152012
Python tutorialfeb152012Python tutorialfeb152012
Python tutorialfeb152012
 
Python - Lecture 9
Python - Lecture 9Python - Lecture 9
Python - Lecture 9
 
Python tutorial
Python tutorialPython tutorial
Python tutorial
 
Getting started in Python presentation by Laban K
Getting started in Python presentation by Laban KGetting started in Python presentation by Laban K
Getting started in Python presentation by Laban K
 
Python in 30 minutes!
Python in 30 minutes!Python in 30 minutes!
Python in 30 minutes!
 
Python Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayPython Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard Way
 
programming with python ppt
programming with python pptprogramming with python ppt
programming with python ppt
 
Learn 90% of Python in 90 Minutes
Learn 90% of Python in 90 MinutesLearn 90% of Python in 90 Minutes
Learn 90% of Python in 90 Minutes
 
[Java] #7 - Input & Output Stream
[Java] #7 - Input & Output Stream[Java] #7 - Input & Output Stream
[Java] #7 - Input & Output Stream
 
Python language data types
Python language data typesPython language data types
Python language data types
 
Python
PythonPython
Python
 
Introduction to Python programming
Introduction to Python programmingIntroduction to Python programming
Introduction to Python programming
 
Python
PythonPython
Python
 
python codes
python codespython codes
python codes
 
Python-The programming Language
Python-The programming LanguagePython-The programming Language
Python-The programming Language
 
Python course
Python coursePython course
Python course
 
Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!
 

Similar to 4 b file-io-if-then-else

Python Exception handling using Try-Except-Finally
Python Exception handling using Try-Except-FinallyPython Exception handling using Try-Except-Finally
Python Exception handling using Try-Except-Finally
Vinod Srivastava
 

Similar to 4 b file-io-if-then-else (20)

Introduction to Python for Bioinformatics
Introduction to Python for BioinformaticsIntroduction to Python for Bioinformatics
Introduction to Python for Bioinformatics
 
PYTHON
PYTHONPYTHON
PYTHON
 
Unit-4 PPTs.pptx
Unit-4 PPTs.pptxUnit-4 PPTs.pptx
Unit-4 PPTs.pptx
 
Functions and modules in python
Functions and modules in pythonFunctions and modules in python
Functions and modules in python
 
Python File functions
Python File functionsPython File functions
Python File functions
 
GE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python ProgrammingGE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python Programming
 
Python Exception handling using Try-Except-Finally
Python Exception handling using Try-Except-FinallyPython Exception handling using Try-Except-Finally
Python Exception handling using Try-Except-Finally
 
ENGLISH PYTHON.ppt
ENGLISH PYTHON.pptENGLISH PYTHON.ppt
ENGLISH PYTHON.ppt
 
python1.ppt
python1.pptpython1.ppt
python1.ppt
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
manish python.pptx
manish python.pptxmanish python.pptx
manish python.pptx
 
1B-Introduction_to_python.ppt
1B-Introduction_to_python.ppt1B-Introduction_to_python.ppt
1B-Introduction_to_python.ppt
 
python1.ppt
python1.pptpython1.ppt
python1.ppt
 
python1.ppt
python1.pptpython1.ppt
python1.ppt
 
Python Basics
Python BasicsPython Basics
Python Basics
 
python1.ppt
python1.pptpython1.ppt
python1.ppt
 
Lenguaje Python
Lenguaje PythonLenguaje Python
Lenguaje Python
 
pysdasdasdsadsadsadsadsadsadasdasdthon1.ppt
pysdasdasdsadsadsadsadsadsadasdasdthon1.pptpysdasdasdsadsadsadsadsadsadasdasdthon1.ppt
pysdasdasdsadsadsadsadsadsadasdasdthon1.ppt
 
coolstuff.ppt
coolstuff.pptcoolstuff.ppt
coolstuff.ppt
 
python1.ppt
python1.pptpython1.ppt
python1.ppt
 

Recently uploaded

VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
dharasingh5698
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
dollysharma2066
 

Recently uploaded (20)

22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf22-prompt engineering noted slide shown.pdf
22-prompt engineering noted slide shown.pdf
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdf
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 

4 b file-io-if-then-else

  • 1. File input and output if-then-else Genome 559: Introduction to Statistical and Computational Genomics Prof. William Stafford Noble
  • 2. File input and output
  • 3. Opening files • The open() command returns a file object. <filehandle> = open(<filename>, <access type>) • Python can read, write or append to a file: – 'r' = read – 'w' = write – 'a' = append • Create a file called “hello.txt” containing one line: “Hello, world!” >>> myFile = open("hello.txt", "r")
  • 4. Reading the whole file • You can read the contents of the file into a single string. >>> myString = myFile.read() >>> print myString Hello, world! >>> Why is there a blank line here?
  • 5. Reading the whole file • Now add a second line to your file (“How ya doin’?”) and try again. >>> myFile = open("hello.txt", "r") >>> myString = myFile.read() >>> print myString Hello, world! How ya doin'? >>>
  • 6. Reading the whole file • Alternatively, you can read the file into a list of strings. >>> myFile = open("hello.txt", "r") >>> myStringList = myFile.readlines() >>> print myStringList ['Hello, world!n', "How ya doin'?n"] >>> print myStringList[1] How ya doin'?
  • 7. Reading one line at a time • The readlines() command puts all the lines into a list of strings. • The readline() command returns the next line. >>> myFile = open("hello.txt", "r") >>> myString = myFile.readline() >>> print myString Hello, world! >>> myString = myFile.readline() >>> print myString How ya doin'? >>>
  • 8. Writing to a file • Open the file for writing or appending. >>> myFile = open("new.txt", "w") • Use the <file>.write() method. >>> myFile.write("This is a new filen") >>> myFile.close() >>> ^D > cat new.txt This is a new file Always close a file after you are finished reading from or writing to it.
  • 9. Print vs write • <file>.write() does not automatically append an end-of-line character. • <file>.write() requires a string as input >>> newFile.write("foo") >>> newFile.write(1) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: argument 1 must be string or read-only character buffer, not int
  • 11. The if statement >>> if (seq.startswith("C")): ... print "Starts with C" ... Starts with C >>> • A block is a group of lines of code that belong together. if (<test evaluates to true>): <execute this block of code> • In the Python interpreter, the ellipse indicates that you are inside a block. • Python uses indentation to keep track of blocks. • You can use any number of spaces to indicate blocks, but you must be consistent. • An unindented or blank line indicates the end of a block.
  • 12. The if statement • Try doing an if statement without indentation. >>> if (seq.startswith("C")): ... print "Starts with C" File "<stdin>", line 2 print "Starts with C" ^ IndentationError: expected an indented block
  • 13. Multiline blocks • Try doing an if statement with multiple lines in the block. >>> if (seq.startswith("C")): ... print "Starts with C" ... print "All right by me!" ... Starts with C All right by me!
  • 14. Multiline blocks • What happens if you don’t use the same number of spaces to indent the block? >>> if (seq.startswith("C")): ... print "Starts with C" ... print "All right by me!" File "<stdin>", line 4 print "All right by me!" ^ SyntaxError: invalid syntax
  • 15. Comparison operators • Boolean: and, or, not • Numeric: < , > , ==, !=, <>, >=, <= • String: in
  • 16. Examples seq = 'CAGGT' >>> if ('C' == seq[0]): ... print 'C is first' ... C is first >>> if ('CA' in seq): ... print 'CA in', seq ... CA in CAGGT >>> if (('CA' in seq) and ('CG' in seq)): ... print "Both there!" ... >>>
  • 17. Beware! = versus == • Single equal assigns a variable name. >>> myString == "foo" Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'myString' is not defined >>> myString = "foo" >>> myString == "foo" True • Double equal tests for equality. >>> if (myString = "foo"): File "<stdin>", line 1 if (myString = "foo"): ^ SyntaxError: invalid syntax >>> if (myString == "foo"): ... print "Yes!" ... Yes!
  • 18. if-else statements if <test1>: <statement> else: <statement> • The else block executes only if <test1> is false. >>> if (seq.startswith('T')): ... print 'T start' ... else: ... print 'starts with', seq[0] ... starts with C >>> Evaluates to FALSE: no print.
  • 19. if-elif-else if <test1>: <statement> elif <test2>: <statement> else: <statement> • elif block executes if <test1> is false and then performs a second <test2>
  • 20. Example >>> base = 'C' >>> if (base == 'A'): ... print "adenine" ... elif (base == 'C'): ... print "cytosine" ... elif (base == 'G'): ... print "guanine" ... elif (base == 'T'): ... print "thymine" ... else: ... print "Invalid base!“ ... cytosine
  • 21. • <file> = open(<filename>, r|w|a> • <string> = <file>.read() • <string> = <file>.readline() • <string list> = <file>.readlines() • <file>.write(<string>) • <file>.close() if <test1>: <statement> elif <test2>: <statement> else: <statement> • Boolean: and, or, not • Numeric: < , > , ==, !=, <>, >=, <= • String: in, not in
  • 22. Sample problem #1 • Write a program read-first-line.py that takes a file name from the command line, opens the file, reads the first line, and prints the result to the screen. > python read-first-line.py hello.txt Hello, world! >
  • 23. Solution #1 import sys filename = sys.argv[1] myFile = open(filename, "r") firstLine = myFile.readline() myFile.close() print firstLine
  • 24. Sample problem #2 • Modify your program to print the first line without an extra carriage return. > python read-first-line.py hello.txt Hello, world! >
  • 25. Solution #2 import sys filename = sys.argv[1] myFile = open(filename, "r") firstLine = myFile.readline() firstLine = firstLine[:-1] myFile.close() print firstLine
  • 26. Sample problem #3 • Write a program add-two-numbers.py that reads one integer from the first line of one file and a second integer from the first line of a second file and then prints their sum. > add-two-numbers.py nine.txt four.txt 9 + 4 = 13 >
  • 27. Solution #3 import sys fileOne = open(sys.argv[1], "r") valueOne = int(fileOne.readline()) fileTwo = open(sys.argv[2], "r") valueTwo = int(fileTwo.readline()) print valueOne, "+", valueTwo, "=", valueOne + valueTwo
  • 28. Sample problem #4 • Write a program find-base.py that takes as input a DNA sequence and a nucleotide. The program should print the number of times the nucleotide occurs in the sequence, or a message saying it’s not there. > python find-base.py A GTAGCTA A occurs at position 3 > python find-base.py A GTGCT A does not occur at all Hint: S.find('G') returns -1 if it can't find the requested sequence.
  • 29. Solution #4 import sys base = sys.argv[1] sequence = sys.argv[2] position = sequence.find(base) if (position == -1): print base, "does not occur at all" else: print base, "occurs at position", position
  • 30. Reading • Chapter 13 of Learning Python (3rd edition) by Lutz.