Skip to content
Open
2 changes: 1 addition & 1 deletion examples/strings.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def keyfunc2(word):
# s = "food"
# dir(s)
#
# This will dump a list of all the things you can call the variable with.
# This will dump a list of all the things you can c all the variable with.
# E.g. "join" will be in that list if you called dir() on a string.
# This means that you call `s.join()`.
#
Expand Down
1 change: 1 addition & 0 deletions exercises-hello/hello.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@
#
# TODO: write your code below

print "hello world"
2 changes: 2 additions & 0 deletions exercises-hello/script.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/usr/bin/env python
print "this is a python script!"
52 changes: 40 additions & 12 deletions exercises-more/exercises.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,73 +2,101 @@
# Return the number of words in the string s. Words are separated by spaces.
# e.g. num_words("abc def") == 2
def num_words(s):
return 0
return len(s.split())

# PROB 2
# Return the sum of all the numbers in lst. If lst is empty, return 0.
def sum_list(lst):
return 0
return sum(lst)

# PROB 3
# Return True if x is in lst, otherwise return False.
def appears_in_list(x, lst):
return False
return x in lst

# PROB 4
# Return the number of unique strings in lst.
# e.g. num_unique(["a", "b", "a", "c", "a"]) == 3
def num_unique(lst):
return 0
s = set(lst)
return len(s)

# PROB 5
# Return a new list, where the contents of the new list are lst in reverse order.
# e.g. reverse_list([3, 2, 1]) == [1, 2, 3]
def reverse_list(lst):
return []
return list(reversed(lst))

# PROB 6
# Return a new list containing the elements of lst in sorted decreasing order.
# e.g. sort_reverse([5, 7, 6, 8]) == [8, 7, 6, 5]
def sort_reverse(lst):
return []
return list(reversed(sorted(lst)))

# PROB 7
# Return a new string containing the same contents of s, but with all the
# vowels (upper and lower case) removed. Vowels do not include 'y'
# e.g. remove_vowels("abcdeABCDE") == "bcdBCD"
def remove_vowels(s):
return s
return s.translate(None, 'aeiouAEIOU')

# PROB 8
# Return the longest word in the lst. If the lst is empty, return None.
# e.g. longest_word(["a", "aaaaaa", "aaa", "aaaa"]) == "aaaaaa"
def longest_word(lst):
return None
if len(lst) == 0:
return None
else:
sorted_lst = sorted(lst, key=len, reverse=True)
return sorted_lst[0]

# PROB 9
# Return a dictionary, mapping each word to the number of times the word
# appears in lst.
# e.g. word_frequency(["a", "a", "aaa", "b", "b", "b"]) == {"a": 2, "aaa": 1, "b": 3}
def word_frequency(lst):
return {}
freq = {}
for word in lst:
if not word in freq:
freq[word] = 1
else:
freq[word] += 1
return freq

# PROB 10
# Return the tuple (word, count) for the word that appears the most frequently
# in the list, and the number of times the word appears. If the list is empty, return None.
# e.g. most_frequent_word(["a", "a", "aaa", "b", "b", "b"]) == ("b", 3)
# I looked at solutions but I understand it
def most_frequent_word(lst):
return None
if len(lst) == 0:
return None
else:
freq = word_frequency(lst)
freq_lst = sorted(freq.items(), key=lambda (word, count): count, reverse = True)
return freq_lst[0]


# PROB 11
# Compares the two lists and finds all the positions that are mismatched in the list.
# Assume that len(lst1) == len(lst2). Return a list containing the indices of all the
# mismatched positions in the list.
# e.g. find_mismatch(["a", "b", "c", "d", "e"], ["f", "b", "c", "g", "e"]) == [0, 3]
def find_mismatch(lst1, lst2):
return []
n = 0
diff = []
while n < len(lst1):
if lst1[n] != lst2[n]:
diff.append(n)
n += 1
return diff

# PROB 12
# Returns the list of words that are in word_list but not in vocab_list.
def spell_checker(vocab_list, word_list):
return []
diff = []
for word in word_list:
if not word in vocab_list:
diff.append(word)
return diff

12 changes: 8 additions & 4 deletions exercises-spellchecker/dictionary.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,26 @@ def load(dictionary_name):
Each line in the file contains exactly one word.
"""
# TODO: remove the pass line and write your own code
pass
s = set()
words = open(dictionary_name, "rb")
for word in words:
s.add(word.strip())
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can also use set comprehensions:

return {word.strip() for word in open(dictionary_name, "rb")}

return s

def check(dictionary, word):
"""
Returns True if `word` is in the English `dictionary`.
"""
pass
return word in dictionary

def size(dictionary):
"""
Returns the number of words in the English `dictionary`.
"""
pass
return len(dictionary)

def unload(dictionary):
"""
Removes everything from the English `dictionary`.
"""
pass
dictionary = ()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also dictionary.clear()