Compsci 101 Exam 2 Sec01 Fall 2017 Problem 1 Sec 1 Part A: ['K', 'B'] ['K', 'B', ['P', 'Q']] ['H', 'M', 'Y', 'E', 'N'] ['A', 'G', 'K'] ['A', 'K'] [1, 2, 6] [1, 2, 3, 6] [1, 6] set([9, 3, 6, 1]) # elements in any order is ok set([1, 3, 6, 8, 9]) # elements in any order is ok set([8]) ['A', 'J', 'M', 'Y'] ['A', 'H', 'J', 'M', 'Y'] [2, 2, 5, 7, 7] [('A', 2), ('H', 5), ('J', 2), ('M', 7), ('Y', 7)] Part B: [40, 20, 60, 30] # elements in any order is ok [2, 4, 2, 1] # elements in any order is ok 4 Problem 2 Sec 1 PartA: ['DUKE', 'NCSU', 'NCCU'] Part B: ['tm', 'eg', 'kf', 'na'] Part C: result = [word+word for word in phrase.split() if len(word)%2 == 0] ALT result = [word*2 for word in phrase.split() if len(word)%2 == 0] Part D: def howMany(fruitlist): d = {} for item in fruitlist: [name, fruit] = item.split(":") if name not in d: d[name] = 0 d[name] += 1 return sorted(d.items()) Problem 3 Sec 1 Part A def setup(filename): f = open(filename) ans = [] for item in f: item = item.strip() alist = item.split(":") first = alist[:2] values = alist[2:] values = [int(num) for num in values] alist = first + values ans.append(alist) return ans Part B: def offersCompany(data, company): ans = [] for item in data: if company == item[0]: total = sum(item[2:]) ans.append( (total, item[1]) ) ans = sorted(ans) flip = [(t[1],t[0]) for t in ans] # swap two items in each tuple return flip Problem 4 Sec 1 Part 4A: def students(data): ans = [] for item in data: ans.append(item[1]) return sorted(set(ans)) Part 4B: Sec 1 # unique clubs that have at least one student in year, year is a string def clubsYear(data, year): ansset = set([]) for item in data: club = item[0] year2 = item[2] if year2 == year: ansset.add(club) return sorted(ansset) Part 4C: Sec 1 # return those students not in any club. def studentsNotInClub(data,slist): studs = set([]) for item in data: studs.add(item[1]) return sorted (set(slist) - studs) Part 4D: Sec 1 def dictClubsToMeetings(data): d = {} for item in data: club = item[0] person = item[1] meetings = int(item[3]) if club not in d: d[club] = [] d[club].append((person, meetings)) return d Part 4E: Sec 1 # return the list of members from the club with the most minutes def clubMostMeetings(data): maxnum = 0 maxclub = "" maxlist = [] d = dictClubsToMeetings(data) for (club,mlist) in d.items(): x = sum([num for (person,num) in mlist]) if x > maxnum: maxnum = x maxclub = club maxlist = [p for (p,num) in mlist ] return (maxclub, sorted(maxlist)) Part 4F: Sec 1 #return the name of the club with the most students def clubMost(data): d = {} for item in data: club = item[0] stud = item[1] if club not in d: d[club] = 0 d[club] += 1 # find max maxclub = "" maxnum = 0 for (club,num) in d.items(): if num > maxnum: maxclub = club maxnum = num return maxclub