Download presentation
Presentation is loading. Please wait.
Published byIrwan Kusumo Modified over 5 years ago
1
while loops Genome 559: Introduction to Statistical and Computational Genomics Prof. William Stafford Noble
2
while loop statement1 statement2 while (<test>):
In English: While some logical test is true, continue executing the block of statements.
3
What does this program do?
sum = 0 count = 1 while (count < 3): sum = sum + count count = count + 1 print count print sum
4
What does this program do?
sum = 0 count = 1 while (count < 3): sum = sum + count count = count + 1 print count print sum sum = 0 count = 1 count < 3? TRUE sum = = 1 count = = 2 sum = = 3 count = = 3 count < 3? FALSE 3 3
5
Increment operator (+=)
x = x + y is the same as x += y sum = 0 count = 1 while (count < 3): sum = sum + count count = count + 1 print count print sum sum = 0 count = 1 while (count < 3): sum += count count += 1 print count print sum
6
For versus while loops You will probably use for loops more.
For is natural to loop through a list, characters in a string, etc. (anything of determinate size). While is natural to loop an indeterminate number of times until some condition is met.
7
Examples of for loops for base in sequence:
<do something with each base> for sequence in database: <do something with each sequence> for index in range(5,200): <do something with each index>
8
Examples of while loops
while (error > 0.05): <do something that will reduce error> while (score > 0): <traceback through a DP matrix, each time setting the current score> Warning: if you write a while loop and the conditional test stays True, the loop will run forever (infinite loop).
9
Terminating a loop while loops use continue and break in the same way as for loops: continue : jumps to the top of the enclosing loop break : breaks completely out of the enclosing loop
10
Sample problem #1 Convert the following program to a while loop:
import sys total = 0 for i in range(1, len(sys.argv)): total += int(sys.argv[i]) print total Run both programs with arguments “1 2 3”.
11
Solution #1 import sys total = 0 i = 1 while (i < len(sys.argv)) :
total += int(sys.argv[i]) i += 1 print total
12
Sample problem #2 Write a python program to print all the square numbers up to a user- specified maximum: > python print-squares.py 20 1 4 9 16 My solution has 6 lines.
13
Solution #2 import sys max_int = int(sys.argv[1]) index = 1
while (index * index < max_int): print index * index index += 1
14
Sample problem #3 Write a python program to count the lines in a file using readline() and a while loop. > python count-lines.py myfile.txt 3 My solution has 8 lines.
15
Solution #3 import sys myfile = open(sys.argv[1], “r”) lineCount = 0
line = myfile.readline() while (line != ""): lineCount += 1 print lineCount
16
Sample problem #4 Write a program count-fasta.py that counts the number of fasta sequences in a file specified on the command line. Use either a while loop or a for loop. python count-fasta.py small.fasta 72 23516 Run your program on the two files on the course web page: small.fasta and large.fasta. Fasta format: >identifier1 [optional comments] AAOSIUBOASIUETOAISOBUAOSIDUGOAIBUOABOIUAS AOSIUDTOAISUETOIGLKBJLZXCOITLJLBIULEIJLIJ >identifier2 [optional comments] TXDIGSIDJOIJEOITJOSIJOIGJSOIEJTSOE >identifier3 Etc. sequence on any number of lines until next line that starts with “>”
17
Solution #4 Not required, but a good habit to get into import sys
# Make sure we got an argument on the command line. if (len(sys.argv) != 2): print "USAGE: one file argument required" sys.exit() # Open the file for reading. fasta_file = open(sys.argv[1], "r") num_seqs = 0 for line in fasta_file: # Increment if this is the start of a sequence if (line[0] == ">"): num_seqs += 1 fasta_file.close() print num_seqs
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.