CS 151, fall 2019 Exam 2 Grading - unless stated otherwise each part is worth 1 point. There are a total of __ points. Please fill in the following. 0) Name: 1) Python keywords (8 points, 1/2 point each, around 16 on the exam) For this section answer with the appropriate python keyword 1.1) Data type for True and False: 1.2) Loop with only condition: 1.3) Test if something is inside of a list/string/tuple/dictionary: 1.4) Function to write to the screen: 1.5) Function to convert a string to an integer: 1.6) Boolean values (two keywords): 1.7) Conditional statements (three keywords): 1.8) Boolean operator, True only if both sides are True: 1.9) To load a module: 1.10) Special value for a variable that has no value: 1.11) Exit the current loop: 1.12) Remove from a list by position: 1.13) Loop with that iterates through a list: 1.14) Keyword to send a value back from a function: 1.15) Declare a function: 1.16) Go back to top of the loop (end the current iteration): continue 1.17) Function to generate a sequence of numbers: 1.18) Function to get the length of a string: 1.19) For using variable from main program inside a function: 1.20) End the current loop: 1.21) Exception handline (5 keywords): 1.22) Determine whether two objects are the same object(not just value): 1.23) Text data type: 1.24) Boolean operator, True if either side is True: 1.25) Boolean operator, negates: 2) Evaluate the Python expression (8 points, 1/2 point each, around 16 on the exam) Assume the following initialization code has just run. Write exactly what Python would print as the result of each expression. line = 'Hello, my name is HAL.' L = line.split(' ') : ["Hello,", "my", "name", "is", "HAL."] color = 'orange' pi = 3.14 prime = 7 d = {'num': pi, 'list': L, 'tuple': (0, 1, 2)} def total(var): t = 0 for x in var: t = t + x return x def cat(var): s = '' for x in var: s = s + str(x) return s 2.1) 'N' in color: False 2.2) cat(d['tuple']): "012" 2.3) 3 <= 3: True 2.4) prime == 'prime': False 2.5) 'n' in color: True 2.6) int('7') + int('6'): 13 2.7) color * 3: "orangeorangeorange" 2.8) prime // 2: 3 (// means integer division drop the decimal) 2.9) not False: True 2.10) 3 < 3: False 2.11) line[0]: H 2.12) 4 + 2 * 3: 10 2.13) '0' in d['tuple']: False 2.14) len(color): 6 2.15) 7 + 6: 13 2.16) prime % 2: 1 (remainder of 1) 2.17) pi == 3.1: False 2.18) str(7) + str(6): "76" 2.19) False or True: True 2.20) len('hi there'): 8 2.21) '7' + '6': "76" 2.22) cat('hello'): "hello" 2.23) 4 * 2 + 3: 11 2.24) 3 == 3: True 2.25) total(range(0, 4)): sum of all of positive nubmers from 1 to n: n(n+1)/2 = 6 2.26) True and False: False 2.27) L[0]: "Hello," 2.28) 'int("7")' + 'int("6")': 'int("7")int("6")' 2.29) d['tuple'][1]: 1 2.30) 3 != 3: False 2.31) prime ** 2: 49 2.32) len(L): 5 2.33) len([1, 2, 4]):3 3) Short Python (1.5 points each, around 8 points total on the exam) Assume the initialization code from problem 2 has just been run. For each of the following, give the python code to complete the task. 3.1) set pi to be itself divided by 2: pi = pi/2 3.2) print keys in d variable: [print(key) for key in d] for key in d: print(key) 3.3) print first item in L variable: print(L[0]) 3.4) print total of 10+11+12+...+20: print(sum(range(10,21))) The sum of 1-20 minus sum of 1-9 print(20(20-1)/2 - 9(9-1)/2) 3.5) add pi and prime variables, save into variable named y: y = pi + prime 3.6) print each letter in line variable on a separate line: [print(x) for x in line] for x in line: print(x) 3.7) print first 3 characters in color variable: # Each on a seperate line [print(x) for x in color[:3]] # Print on one line print(color[:3]) 4) Python functions (8 points total on the exam, 2-3 problems) Create a python function to do each of the following. Note - on the test there will be two. 4.1) Parameters are a list and an integer n, print first n items in the list one per line def print_n_items(li, n): [print(x) for x in li[:n]] 4.2) Parameter is a dictionary, changes all values to be None (leave keys as they are) def null_dictionary(d): for key in d: d[key] = None 4.3) Parameter is a list of numbers, returns the minimum assume list is not sorted, assume the list contains atleast 1 element. def get_min(li): minimum = li[0] for x in li: if x < minimum: minimum = x return minimum 4.4) Parameter is a filename - open, read and print the file def print_file(path): try: fd = open(path) print(fd.read()) except FileNotFoundError: print('File not found') 5) Play computer (8 points total on the exam, 2-3 problems) 5.1) Selection Sort def selection_sort(arr): for i in range(len(arr)): # index of the minimum index minx = i for j in range(i+1, len(arr)): if arr[j] < arr[minx]: minx = j # Swap values tmp = arr[minx] arr[minx] = arr[i] arr[i] = tmp L = [7, 3, 9, 2] selection_sort(L) For each value of i, write what L is at the end of the loop inside selection_sort i=0 L = [2, 3, 9, 7] i=1 L = [2, 3, 9, 7] i=2 L = [2, 3, 7, 9] i=3 L = [2, 3, 7, 9] 5.2) Play Computer def countdown(i): print(i) if i > 0: # originally the return statement was missing here # If there was no return statement the function would have returned None for any positive number return countdown(i//2) else: return i L = [3, 1, 8] L[0] = countdown(L[0]) L[2] = countdown(L[2]) L: [0, 1, 8] [0, 1, 0] i: 3 1 0 8 4 2 1 0 screen: 3 1 0 8 4 2 1 0