WEEK02: numbers and strings
------------------------------------------------
F: string and list indexing, slicing, and len() function
REVIEW...functions we've learned so far:
raw_input()
range()
float()
int()
str()
type()
and today we will learn len()
-------------------------------------------------
SPELL CHECKING:
How do computers know when a word is mispelled in a document?
And how do they come up with a list of words the user might have meant?
If I type this: Welcime to Computre Sciennce at Swarthmore Colege!
What algorithms can you think of to find the correctly-spelled words?
For the word "Sciennce", we can all see there's one extra "n" in there.
So one algorithm might be:
- delete each letter, one at a time
- look up each newly-formed word (without the deleted letter) to see if it's a valid word
Let's just focus on the first part: form new words by deleting one letter.
Here's what happens to "Sciennce":
Sciennce
delete 0th letter: ciennce new word: ciennce
delete 1st letter: S iennce new word: Siennce
delete 2nd letter: Sc ennce new word: Scennce
delete 3rd letter: Sci nnce new word: Scinnce
delete 4th letter: Scie nce new word: Science <-- valid word!
delete 5th letter: Scien ce new word: Science <-- valid word!
delete 6th letter: Scienn e new word: Scienne
delete 7th letter: Sciennc new word: Sciennc
-------------------------------------------------
SLICING allows us to select a range of items from a list or string.
Here's a string example:
>>> word = "Sciennce"
>>> word[0:4]
'Scie'
>>> word[5:8]
'nce'
>>> newword = word[0:4] + word[5:8]
>>> print newword
Science
So the above selects all but the 4th letter!
-------------------------------------------------
Formally, slicing uses a [start:stop:step] format (similar to range()).
If you leave off the start, it defaults to 0.
If you leave off the step, it defaults to 1.
Here are some list examples (works same for strings):
>>> L = range(20)
>>> print L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> L[4:10]
[4, 5, 6, 7, 8, 9]
>>> L[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> L[10:]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> L[2:20:3]
[2, 5, 8, 11, 14, 17]
-------------------------------------------------
STRINGS and LISTS are sequences!!
string:
s = "hello"
mystr = "this is fun!"
list:
mylist = ["dog", "cat", "pony", "fish"]
nlist = range(10)
both lists and strings are sequences, so they can be used in for loops!
for c in "hello":
print c
for word in ["dog", "cat", "pony", "fish"]:
print word
you can also access elements of a string or a list with an index:
print mystr[0]
't'
print mylist[1]
"cat"
the len() function gives you the length of a string or list:
>>> mylist = ["dog", "cat", "pony", "fish"]
>>> mystr = "this is fun!"
>>> len(mystr)
12
>>> len(mylist)
4
try to write these programs:
$ python its.py
first name: jeff
last name: hollinsworth
your ITS username = jhollin1
$ python splitphrase.py
This program does some cool string processing.
Please enter a phrase below.
phrase: computer science is really fun!!
computer science
--------------------------------
is really fun!!