CompSci 101 Spring 2016 Test 1 Solutions Problem 1 Sec 02 a , "e" b , "2" c , "barometer" d , 5 e , 13.0 f , 3 g , 0 h , 3 i , ['score', '1', 'is'], j , -1 k , True m , "r" n , "aybyc" Problem 2 Part A (6 pts) def computeWithInterest(amount, rate, years): return amount * (1 + rate/100.0) ** years ALT SOLN: def computeWithInterest(amount, rate, years): percent = rate/100.0 temp = 1 + percent tempExp = temp**years final = amount * tempExp return final Part B (8 points) def costFrisbee(number): if number < 50: return 10 + number * 2 if number < 100: return 10 + number*1.5 if number < 200: return number return number * 0.80 # 200 or more def costFrisbee(number): if number < 50: cost = number * 2 elif number < 100: cost = number*1.5 elif number < 200: cost = number else: # number >= 200: cost = number * 0.80 shipping = 0 if number < 100: shipping = 10 return cost + shipping def costFrisbee(number): if number > 0 and number < 50: cost = number * 2 if number > 49 and number < 100: cost = number*1.5 if number > 99 and number < 200: cost = number if number >= 200: cost = number * 0.80 shipping = 0 if number < 100: shipping = 10 return cost + shipping def costFrisbee(number): # THIS ONE DOES NOT WORK, DO YOU SEE WHY? if number < 50: cost = number * 2 if number < 100: cost = number*1.5 if number < 200: cost = number if number >= 200: cost = number * 0.80 shipping = 0 if number < 100: shipping = 10 return cost + shipping Problem 3 (8 pts) Q1 (1 pt): 2 Q2(2 pts): In this loop you are iterating over strings in a list. OR item is of type string, things is of type list Q3(1 pt): "hello" Q4(2 pts): returns the number of words that have more than num a's. Q5(1 pt): Line 6 Q6(1 pt): answer = answer + 1 OR answer += 1 Problem 4 Part A (8 pts) def changeFormat(name): alist = name.split() last = alist[-1] blist = [last] + alist[:-1] return ", ".join(blist) def changeFormat(name): alist = name.split() answer = alist[-1] for word in alist[:-1]: answer = answer + ", " + word return answer def changeFormat(name): # solution without split - much longer, process char by char pos = 0 # pos is index position of characters posblank = -1 # find position of last blank for ch in name: if ch == " ": posblank = pos pos += 1 lastname = name[posblank+1:] # get last name firstnames = name[:posblank] # get rest of names answer = lastname + ", " # build a new string, start with last name for ch in firstnames: # process rest of string, if ch == " ": # replacing all " " with ", " answer += ", " else: answer += ch return answer Problem 4 Part B ( 8pts) def changeWord(word, letter): answer = "" for ch in word: if ch != letter: if isVowel(ch): answer += ch + ch else: answer += ch return answer def changeWord(word, letter): temp = "" # remove letter first for ch in word: if ch != letter: temp = temp + ch answer = "" # now double vowels for ch in temp: if isVowel(ch): answer += ch + ch else: answer += ch return answer def changeWord(word, letter): alist = word.split(letter) word = "".join(alist) # this is word without letter answer = "" for ch in word: if isVowel(ch): answer += ch + ch else: answer += ch return answer def changeWord(word, letter): word = word.replace(letter,"") # remove all occurrences of letter answer = "" for ch in word: if isVowel(ch): answer += ch + ch else: answer += ch return answer Problem 5 Sec 02 (10 pts) Part A Sec 02 (2 pts) answer.append(line.split(":")) OR alist = line.split(":") answer.append(alist) OR alist = line.split(":") answer += [alist] # must have square brackets here Problem 5 Part B Sec 02 (10 pts) def numberInYear(items, year): count = 0 for movie in items: if movie[-1] == year: count += 1 return count def numberInYear(items, year): alist = [] for movie in items: if movie[-1] == year: alist.append[movie[0]] return len(alist) Problem 5 Part C Sec 02 (10 pts) def highestRatingGenre(items, genre): max = 0 moviename = "" for movie in items: rating = float(movie[2]) if rating > max and movie[1]==genre: max = rating moviename = movie[0] return moviename def highestRatingGenre(items, genre): moviesgenre = [] for movie in items: if movie[1]==genre: moviesgener.append(movie) max = 0 for movie in moviesgenre: rating = float(movie[2]) if rating > max: max = rating moviename = movie[0] return moviename