# CS21: Quiz 3 Study Guide

### In addition to the concepts from Quiz 1 and Quiz 2,

#### You should understand and/or be able to use the following Python concepts:

• definite (for) loop
• indefinite (while) loop
• nested loops
• lists and strings as objects
• list and string methods (e.g., strip(), split(), upper(), append(), index())
• python in (and not in) operator used on lists and strings
• random library functions: randrange(start, stop), choice(list), etc.
• formal parameter
• actual parameter (also known as an argument)
• function definition
• function call
• call stack
• scope of a variable
• pseudocode

#### Practice problems:

I suggest you try doing these problems on a sheet of paper and not on the computer. This will give you practice under a more quiz-like sitituation. After you have written your solution down on paper, then try enter the program on the computer to see if you were right.
1. What would be the output of the following?
```for i in range(5):
for j in range (3):
print "%d %d %s" % (i,j,(i+j)*"X")
```
2. Write a program that asks the user for a positive integer, n, and then calculates and displays the sum of all numbers from 1 to n. For example, if the user enters 5, the program calculates 1 + 2 + 3 + 4 + 5

3. Write a program that reads in student grades from the user until the user enters a -1. After reading in the -1, the program should compute and display the average grade:
```Please enter your grades below.
Enter a -1 when you are all done...

The average of those 5 grades is 85.000
```
4. Given the assignments for S and L, what is the value and type of each expression?
```L = ["There are", "many", "like it,", "but this one", "is mine."]
S = "abcdefg"

len(L)

len(S)

range(len(S))

L[3].split()

L[3].split("h")

"a" in L[2]

"ABC" in S
```
5. Write a function called getLetter() that asks the user for a letter and returns the given letter. Your function should check to make sure the user enters just a single letter. If the user enters anything other than a single letter, the function should ask again, until it receives valid input.

6. Write a function called avgList that takes a list of numbers as input and returns their average. For example, avgList([5, 10, 5, 4]) should return 6. Write a main program to test the function.

7. Write a function called maxList that takes a list of numbers as input and returns the largest number in the list. For example, maxList([7,4,8,1]) should return 8. Write a main program to test the function.

8. Consider the following program.
```def main():
print "in main"
test = "whee"
check = "e"
def helper(word, letter):
print "in helper"
print "word:", word
print "letter:", letter
x = 0
for ch in word:
if ch == letter:
x = x+1
# draw stack here
return x
main()
```
• Draw the call stack as it would look just prior to returning from helper.
• What is the program's output (i.e. what is printed when the program is run)?
• What does the helper function compute?
• What would helper("moobaalalala", "a") return?
• What would helper("zoo", "a") return?

9. Trace through the following code, show the output from its entire execution, and draw the stack as it would look before the return statement in function foo:
```def main():                     OUTPUT                       STACK
print "in main"
b = foo(5)
print len(b)
print b[0]
print b[1][1]
def foo(n):
print "in foo"
biglist = []
for i in range (n):
sublist = ["h", i, i+10]
biglist.append(sublist)
# draw stack here
return biglist
main()
```
What is the type and value of each of the following expressions:
```                      value                    type
(1) biglist
(2) biglist[2]
(3) biglist[2][0]
(4) biglist[1][2]
(5) len(biglist)
(6) len(biglist[1])
```