1. When comparing a number (either an int or a float) and a string the numbers are always considered **less than** a string. The sort method arranges things such that if you compare any two items, the item that is less will occur earlier in the list. Given this, you can check some of the comparisons to get a better feeling for how things are sorted: >>> 2 < "1" True >>> "2" < "1" False >>> 1 < "a" True >>> "1" < "a" True >>> "1" < "2" True >>> 1 < "2" True >>> 3 < "2" True >>> "3" < "2" False >>> 98798798789 < "1" True >>> 98798798789 < "a" True 2. Although option 1 is fewer lines of code, it is much less reusable by yourself or other folks down the road. Option 2, on the other hand, has two functions, both of which you could use for other purposes. The read_words function is useful for any application where you want to read in some words from a text file (e.g. the examples we looked at in class). The find_all_caps function can be used with not only a list read from a file, but a list generated by any other approach. If you're curious (i.e. I don't expect you to read this unless you're really curious), an even better third option is the following: def find_all_caps(filename): file = open(filename, "r") all_caps = all_caps_helper(file) file.close() return all_caps def all_caps_helper(iterable): all_caps = [] for word in iterable: word = word.strip() if word == word.upper(): all_caps.append(word) return all_caps Here we take advantage of two key facts: - We can call strip on a string that doesn't have an endline and it just won't do anything - We iterate over lists and files in the same way