1. Given the list definition my_list = [4, 8, 16, 2, 7, 9] what would each of the following display (or not that an error would occur): print(my_list[1]) print(my_list[4]) print(my_list[6]) print(my_list[len(my_list)-1] print(my_list[-1] print(my_list[1:5]) print(my_list[-3:-1]) a. 8 b. 7 c. Error d. 9 e. 9 f. [8, 16, 2, 7] g. [2, 7] 2. Write docstrings for the following methods describing what each of them do: a. def mystery1(num1, num2): l = [] for i in range(num1): l.append(num2) return l b. def mystery2(num1, num2): return [num2]*num1 3. Given the following function: def mystery(sequence): result = "" for val in sequence: result = result + val + val return result For each of the following calls, state what would be returned (or an error): a. mystery(5) b. mystery([1, 2, 3]) c. mystery("abcd") d. mystery(("apples", "bananas")) e. mystery(["apples", "bananas"]) f. mystery("123") 4. Modify the stupid name function so that it captures all capitalization variants of "Dave" or "David" (or you can change it to your favorite name instead :). Hint: rather than try and enumerate all possible variants (like "DaviD"), an easier approach is to lowercase the input (using the lower() method) and then do the comparison on the lowercased string. 5. Write a function called my_max that takes a list of numbers (positive or negative) and returns the largest value. You may assume that the list is non-empty, i.e. has at least one value in it. Take a look at the version we wrote in class for calculating the max of a list of positive numbers. Hint: we know that the max has to be one of the elements in the list.