--- title: Drill 12 Solution tags: Drills-F20, 2020 --- # Drill 12 Solution ## Question 1 Given this function: ``` def if_statement(a, b): c = 10 d = 10 if (a < 5): c = 4 d = 3 else: if (b > 3): c = 5 d = 5 return c + d ``` What will the function return given the arguments 5 for a and 5 for b? ( ) 7 ( ) 10 ( ) 20 ( ) 14 ::: spoiler Answer 10 Unlike Pyret, where you used if-expressions, in Python you can create if-statements. The difference is that in Pyret, an if-expression needed to evaluate to a single value, whereas in Python, an if-statement just checks if a given condition is true or false and runs the appropriate code. ::: ## Question 2 Fill in the blanks for this Python function such that it returns the string "hello Professor Kathi". ``` [Blank1] function(name): a = "[Blank2]" b = " Professor " [Blank3] a + [Blank4] + name function([Blank5]) ``` ::: spoiler Answer Blank1: `def` Blank2: `hello` Blank3: `return` Blank4: `b` Blank5: `"Kathi"` In Pyret, every function evaluates to a certain value. In Python, if you want a function to return a piece of data you need to explicitly write return. ::: ## Question 3 Given this code: ``` a = 5 b = 9 c = 4 a = b ``` What is the value of the variable a? ( ) Python throws an error-- data is immutable and cannot be changed. ( ) Python throws an error-- the name b cannot be the value of a. ( ) 5 ( ) 9 ::: spoiler Answer 9 Python makes use of variables-- names of data that can be reassigned and mutated. ::: ## Question 4 Given this list of letters, ``` letters = ['a', 'b', 'c'] ``` Fill in the blank to add the string 'd' to letters: ``` letters.________('d') ``` :::spoiler Answer append The list method append adds a piece of data to the end of a list. ::: ## Question 5 Given this list of letters: ``` letters = ['a', 'b', 'c'] ``` Which of the following lines of code correctly gets 'b' from the list? ( ) `letters['b']` ( ) `letters[2]` ( ) `letters.get('b')` ( ) `letters[1]` :::spoiler Answer `letters[1]` To access the data from a list at index i, write list[i] :::