Skip to content

Practice Quiz 5 (Ch 9–10)

Name: ___________________________________

This work complies with the JMU Honor Code. I have neither given nor received unauthorized assistance. I will not discuss the quiz contents with anyone who has not taken the quiz.
Initials: ____________

Question 1  (3 pts)

When opening a file, which modes can be used to write to a file?

Circle all that apply:

  • "a" append
  • "b"
  • "r"
  • "t"
  • "w" write
The with statement, when used to open a file, does which of the following?

Circle one answer:

  • Automatically closes a file   correct
  • Checks if a filename exists
  • Opens a text file for writing
  • Opens a text file for reading

Question 2  (3 pts)

Given the string:

words = "This is a series of words"

Write a slice operation (Ex: words[1:2]) for each of the following:

Desired Result Slice Operation
"This" words[:4] or words[0:4]
"series" words[10:16] or words[-15:-9]
"words" words[-5:] or words[20:25]

Question 3  (2 pts)

Given the contents of file.txt:

One
Red
Two
Blue
Three
Green

What does the following code print?

myfile = open("file.txt")
contents = myfile.readlines()
output = ""
for line in contents:
    if line.startswith("T"):
        output += line
print(output)

Two  
Three            # 1 pt for correct words, 1 pt for separate lines

 

Question 4  (3 pts)

What are the contents of the file out.txt after running this code?

myfile = open("out.txt", "w")
for i in range(1, 20):
    if i % 4 == 0:
        myfile.write(str(i))
        myfile.write(",")
myfile.close()

4,8,12,16,            # 1 pt for numbers, 1 pt no spaces, 1 pt no newlines

 

Question 5  (6 pts)

Hint: You can write this function in four lines. Use string methods; don't reinvent the wheel.


def analyze(text):
    """Count the number of chars, words, and lines.

    The number of chars must not include any spaces.
    Ex: "F = ma" has 4 chars.

    A word is any text separated by spaces or newlines.
    Ex: "Yo!\nF = ma" has 4 words ("Yo!", "F", "=", "ma").

    Lines are separated by newline characters. The last
    line does not have to end with a newline character.
    Ex: "Line 1\nLine 2\n" has 2 lines (not 3).
    Ex: "Line 1\nLine 2" also has 2 lines.

    Args:
        text (str): The document to analyze.

    Returns:
        tuple: three integers representing the number
               of chars, words, and lines.
    """
    num_chars = len(text.replace(" ", ""))     # 2 pts for chars
    num_words = len(text.split())              # 1 pt for words
    num_lines = len(text.splitlines())         # 2 pts for lines

    return num_chars, num_words, num_lines     # 1 pt for return

Question 6  (8 pts)

def write_words(filename, sentence):
    """Write each word of a sentence to a separate line of a file.

    For example, write_words("test2.txt", "Practice makes progress!")
    would create a file named test2.txt with the following contents:
        Practice
        makes
        progress!

    You may assume that each word is separated by a space. Do not
    worry about punctuation.

    Args:
        filename (str): Name of output file.
        sentence (str): The words to separate.
    """
    with open(filename, "w") as file:    # 1 pt for open + 1 pt for close
        for word in sentence.split():    # 2 pts for loop + 1 pt for split
            file.write(word + "\n")      # 2 pts for write + 1 pt for "\n"